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