xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/subtest/bail_out.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
1*5759b3d2Safresh1#!/usr/bin/perl -w
2*5759b3d2Safresh1# HARNESS-NO-STREAM
3*5759b3d2Safresh1# HARNESS-NO-PRELOAD
4*5759b3d2Safresh1
5*5759b3d2Safresh1BEGIN {
6*5759b3d2Safresh1    if( $ENV{PERL_CORE} ) {
7*5759b3d2Safresh1        chdir 't';
8*5759b3d2Safresh1        @INC = ('../lib', 'lib');
9*5759b3d2Safresh1    }
10*5759b3d2Safresh1    else {
11*5759b3d2Safresh1        unshift @INC, 't/lib';
12*5759b3d2Safresh1    }
13*5759b3d2Safresh1}
14*5759b3d2Safresh1
15*5759b3d2Safresh1my $goto = 0;
16*5759b3d2Safresh1my $Exit_Code;
17*5759b3d2Safresh1BEGIN {
18*5759b3d2Safresh1    *CORE::GLOBAL::exit = sub { $Exit_Code = shift; goto XXX if $goto; CORE::exit($Exit_Code)};
19*5759b3d2Safresh1}
20*5759b3d2Safresh1
21*5759b3d2Safresh1use Test::Builder;
22*5759b3d2Safresh1use Test::More;
23*5759b3d2Safresh1
24*5759b3d2Safresh1my $skip = ref(Test::Builder->new->{Stack}->top->format) ne 'Test::Builder::Formatter';
25*5759b3d2Safresh1plan skip_all => "This test cannot be run with the current formatter"
26*5759b3d2Safresh1    if $skip;
27*5759b3d2Safresh1
28*5759b3d2Safresh1$goto = 1;
29*5759b3d2Safresh1my $output;
30*5759b3d2Safresh1my $TB = Test::More->builder;
31*5759b3d2Safresh1$TB->output(\$output);
32*5759b3d2Safresh1
33*5759b3d2Safresh1my $Test = Test::Builder->create;
34*5759b3d2Safresh1$Test->level(0);
35*5759b3d2Safresh1
36*5759b3d2Safresh1$Test->plan(tests => 2);
37*5759b3d2Safresh1
38*5759b3d2Safresh1plan tests => 4;
39*5759b3d2Safresh1
40*5759b3d2Safresh1ok 'foo';
41*5759b3d2Safresh1subtest 'bar' => sub {
42*5759b3d2Safresh1    plan tests => 3;
43*5759b3d2Safresh1    ok 'sub_foo';
44*5759b3d2Safresh1    subtest 'sub_bar' => sub {
45*5759b3d2Safresh1        plan tests => 3;
46*5759b3d2Safresh1        ok 'sub_sub_foo';
47*5759b3d2Safresh1        ok 'sub_sub_bar';
48*5759b3d2Safresh1        BAIL_OUT("ROCKS FALL! EVERYONE DIES!");
49*5759b3d2Safresh1        ok 'sub_sub_baz';
50*5759b3d2Safresh1    };
51*5759b3d2Safresh1    ok 'sub_baz';
52*5759b3d2Safresh1};
53*5759b3d2Safresh1
54*5759b3d2Safresh1XXX:
55*5759b3d2Safresh1
56*5759b3d2Safresh1$Test->is_eq( $output, <<'OUT' );
57*5759b3d2Safresh11..4
58*5759b3d2Safresh1ok 1
59*5759b3d2Safresh1# Subtest: bar
60*5759b3d2Safresh1    1..3
61*5759b3d2Safresh1    ok 1
62*5759b3d2Safresh1    # Subtest: sub_bar
63*5759b3d2Safresh1        1..3
64*5759b3d2Safresh1        ok 1
65*5759b3d2Safresh1        ok 2
66*5759b3d2Safresh1Bail out!  ROCKS FALL! EVERYONE DIES!
67*5759b3d2Safresh1OUT
68*5759b3d2Safresh1
69*5759b3d2Safresh1$Test->is_eq( $Exit_Code, 255 );
70*5759b3d2Safresh1
71*5759b3d2Safresh1Test2::API::test2_stack()->top->set_no_ending(1);
72