xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/Builder/try.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
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