August 19 2020 Perl 7: An Opinionated Introduction Back

Capturing and Testing Warnings (2)

        use constant roref=>\2;
        {
            # Suppress an unimportant warning
            no warnings 'once';
            # Capture important warnings
            my @these_warnings = ();
            local $SIG{__WARN__} = sub { push @these_warnings, $_[0]; };
            eval { for (roref) { $_ = <Fʜ> } };
            like($@, qr/Modification of a read-only value attempted/, '[perl #19566]');
            # Test that we got the warnings we expected
            my $warnings_count = 0;
            for my $w (@these_warnings) {
                chomp $w;
                if ($w =~ m/^readline\(\) on unopened filehandle/) {
                    $warnings_count++;
                }
            }
            is($warnings_count, 1,
                "Got expected number of 'unopened' warnings");
        }


Home Last TOC Copyright © 2020 James E Keenan Back Next