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