http://qs321.pair.com?node_id=503500


in reply to Testing redirected croak messages

Does using Test::Exception work? If you don't want to do that, does using local on $@ within a block help?

Replies are listed 'Best First'.
Re^2: Testing redirected croak messages
by macrobat (Beadle) on Oct 28, 2005 at 00:02 UTC
    I'm not sure if I'm using Test::Exception right. Here's the gist of my original test, with the code in eval pulled out and switched to use dies_ok():

    unlink 'test.errors'; redirect_error( output_file => 'test.errors' ); # sets $redirected{err +or_messages} to 1 dies_ok { lcroak "this is a sample error file" }; ok( -T 'test.errors', "lcroak opens the error file specified by redirect_error()." ); my $text = `cat test.errors`; like( $text , qr/this is a sample error file/, "lcroak writes to the error file specified by redirect_error()." ) +; unlink 'test.errors';
    --and I get this:

    # Failed test 'lcroak writes to the error file specified by redirect +_error().' t/lcroak....NOK 4# in t/lcroak.t at line 25. # '' # doesn't match '(?-xism:this is a sample error file)' # Looks like you failed 1 test of 4.
    I did try local $@, like so, but perhaps I'm doing it wrong:

    { local $@; eval { lcroak "this is a sample error file"; }; ok($@, "lcroak terminates"); }
    That still redirect STDERR to test.error, however.

      It's difficult to say without seeing the code for lcroak() and redirect_error() (probably including the hash declaration).