1*5759b3d2Safresh1#!perl -w 2*5759b3d2Safresh1 3*5759b3d2Safresh1BEGIN { 4*5759b3d2Safresh1 if( $ENV{PERL_CORE} ) { 5*5759b3d2Safresh1 chdir 't'; 6*5759b3d2Safresh1 @INC = ('../lib', 'lib'); 7*5759b3d2Safresh1 } 8*5759b3d2Safresh1 else { 9*5759b3d2Safresh1 unshift @INC, 't/lib'; 10*5759b3d2Safresh1 } 11*5759b3d2Safresh1} 12*5759b3d2Safresh1 13*5759b3d2Safresh1use strict; 14*5759b3d2Safresh1 15*5759b3d2Safresh1use Test::More 'no_plan'; 16*5759b3d2Safresh1 17*5759b3d2Safresh1require Test::Builder; 18*5759b3d2Safresh1my $tb = Test::Builder->new; 19*5759b3d2Safresh1 20*5759b3d2Safresh1 21*5759b3d2Safresh1# Test that _try() has no effect on $@ and $! and is not effected by 22*5759b3d2Safresh1# __DIE__ 23*5759b3d2Safresh1{ 24*5759b3d2Safresh1 local $SIG{__DIE__} = sub { fail("DIE handler called: @_") }; 25*5759b3d2Safresh1 local $@ = 42; 26*5759b3d2Safresh1 local $! = 23; 27*5759b3d2Safresh1 28*5759b3d2Safresh1 is $tb->_try(sub { 2 }), 2; 29*5759b3d2Safresh1 is $tb->_try(sub { return '' }), ''; 30*5759b3d2Safresh1 31*5759b3d2Safresh1 is $tb->_try(sub { die; }), undef; 32*5759b3d2Safresh1 33*5759b3d2Safresh1 is_deeply [$tb->_try(sub { die "Foo\n" })], [undef, "Foo\n"]; 34*5759b3d2Safresh1 35*5759b3d2Safresh1 is $@, 42; 36*5759b3d2Safresh1 cmp_ok $!, '==', 23; 37*5759b3d2Safresh1} 38*5759b3d2Safresh1 39*5759b3d2Safresh1ok !eval { 40*5759b3d2Safresh1 $tb->_try(sub { die "Died\n" }, die_on_fail => 1); 41*5759b3d2Safresh1}; 42*5759b3d2Safresh1is $@, "Died\n"; 43