1*5759b3d2Safresh1use strict; 2*5759b3d2Safresh1use warnings; 3*5759b3d2Safresh1 4*5759b3d2Safresh1use Test2::Tools::Tiny; 5*5759b3d2Safresh1 6*5759b3d2Safresh1# This module's exports interfere with the ones in t/tools.pl 7*5759b3d2Safresh1use Test::More (); 8*5759b3d2Safresh1use Test::Builder::Formatter(); 9*5759b3d2Safresh1use Test2::API qw/run_subtest test2_stack/; 10*5759b3d2Safresh1 11*5759b3d2Safresh1{ 12*5759b3d2Safresh1 test2_stack->top; 13*5759b3d2Safresh1 my $temp_hub = test2_stack->new_hub(); 14*5759b3d2Safresh1 $temp_hub->format(Test::Builder::Formatter->new()); 15*5759b3d2Safresh1 16*5759b3d2Safresh1 my $output = capture { 17*5759b3d2Safresh1 run_subtest( 18*5759b3d2Safresh1 'parent', 19*5759b3d2Safresh1 sub { 20*5759b3d2Safresh1 run_subtest( 21*5759b3d2Safresh1 'buffered', 22*5759b3d2Safresh1 sub { 23*5759b3d2Safresh1 ok(1, 'b1'); 24*5759b3d2Safresh1 ok(1, 'b2'); 25*5759b3d2Safresh1 }, 26*5759b3d2Safresh1 {buffered => 1}, 27*5759b3d2Safresh1 ); 28*5759b3d2Safresh1 run_subtest( 29*5759b3d2Safresh1 'streamed', 30*5759b3d2Safresh1 sub { 31*5759b3d2Safresh1 ok(1, 's1'); 32*5759b3d2Safresh1 ok(1, 's2'); 33*5759b3d2Safresh1 }, 34*5759b3d2Safresh1 {buffered => 0}, 35*5759b3d2Safresh1 ); 36*5759b3d2Safresh1 }, 37*5759b3d2Safresh1 {buffered => 1}, 38*5759b3d2Safresh1 ); 39*5759b3d2Safresh1 }; 40*5759b3d2Safresh1 41*5759b3d2Safresh1 test2_stack->pop($temp_hub); 42*5759b3d2Safresh1 43*5759b3d2Safresh1 Test::More::subtest( 44*5759b3d2Safresh1 'Test2::API::run_subtest', 45*5759b3d2Safresh1 sub { 46*5759b3d2Safresh1 is($output->{STDERR}, q{}, 'no output on stderr'); 47*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output for tests in buffered subtest'); 48*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output for tests in buffered subtest'); 49*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output for tests in streamed subtest'); 50*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output for tests in streamed subtest'); 51*5759b3d2Safresh1 } 52*5759b3d2Safresh1 ); 53*5759b3d2Safresh1} 54*5759b3d2Safresh1 55*5759b3d2Safresh1{ 56*5759b3d2Safresh1 test2_stack->top; 57*5759b3d2Safresh1 my $temp_hub = test2_stack->new_hub(); 58*5759b3d2Safresh1 $temp_hub->format(Test::Builder::Formatter->new()); 59*5759b3d2Safresh1 60*5759b3d2Safresh1 my $output = capture { 61*5759b3d2Safresh1 run_subtest( 62*5759b3d2Safresh1 'parent', 63*5759b3d2Safresh1 sub { 64*5759b3d2Safresh1 run_subtest( 65*5759b3d2Safresh1 'buffered', 66*5759b3d2Safresh1 sub { 67*5759b3d2Safresh1 ok(1, 'b1'); 68*5759b3d2Safresh1 ok(1, 'b2'); 69*5759b3d2Safresh1 }, 70*5759b3d2Safresh1 {buffered => 1}, 71*5759b3d2Safresh1 ); 72*5759b3d2Safresh1 Test::More::subtest( 73*5759b3d2Safresh1 'streamed', 74*5759b3d2Safresh1 sub { 75*5759b3d2Safresh1 ok(1, 's1'); 76*5759b3d2Safresh1 ok(1, 's2'); 77*5759b3d2Safresh1 }, 78*5759b3d2Safresh1 {buffered => 0}, 79*5759b3d2Safresh1 ); 80*5759b3d2Safresh1 }, 81*5759b3d2Safresh1 {buffered => 1}, 82*5759b3d2Safresh1 ); 83*5759b3d2Safresh1 }; 84*5759b3d2Safresh1 85*5759b3d2Safresh1 test2_stack->pop($temp_hub); 86*5759b3d2Safresh1 87*5759b3d2Safresh1 Test::More::subtest( 88*5759b3d2Safresh1 'Test::More::subtest and Test2::API::run_subtest', 89*5759b3d2Safresh1 sub { 90*5759b3d2Safresh1 is($output->{STDERR}, q{}, 'no output on stderr'); 91*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output for tests in buffered subtest'); 92*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output for tests in buffered subtest'); 93*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output for tests in streamed subtest'); 94*5759b3d2Safresh1 like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output for tests in streamed subtest'); 95*5759b3d2Safresh1 } 96*5759b3d2Safresh1 ); 97*5759b3d2Safresh1} 98*5759b3d2Safresh1 99*5759b3d2Safresh1done_testing; 100