1*5759b3d2Safresh1use strict; 2*5759b3d2Safresh1use warnings; 3*5759b3d2Safresh1 4*5759b3d2Safresh1use Test2::Tools::Tiny; 5*5759b3d2Safresh1 6*5759b3d2Safresh1use Test2::API qw/intercept intercept_deep context run_subtest/; 7*5759b3d2Safresh1 8*5759b3d2Safresh1sub streamed { 9*5759b3d2Safresh1 my $name = shift; 10*5759b3d2Safresh1 my $code = shift; 11*5759b3d2Safresh1 12*5759b3d2Safresh1 my $ctx = context(); 13*5759b3d2Safresh1 my $pass = run_subtest("Subtest: $name", $code, {buffered => 0}, @_); 14*5759b3d2Safresh1 $ctx->release; 15*5759b3d2Safresh1 return $pass; 16*5759b3d2Safresh1} 17*5759b3d2Safresh1 18*5759b3d2Safresh1sub buffered { 19*5759b3d2Safresh1 my $name = shift; 20*5759b3d2Safresh1 my $code = shift; 21*5759b3d2Safresh1 22*5759b3d2Safresh1 my $ctx = context(); 23*5759b3d2Safresh1 my $pass = run_subtest($name, $code, {buffered => 1}, @_); 24*5759b3d2Safresh1 $ctx->release; 25*5759b3d2Safresh1 return $pass; 26*5759b3d2Safresh1} 27*5759b3d2Safresh1 28*5759b3d2Safresh1my $subtest = sub { ok(1, "pass") }; 29*5759b3d2Safresh1 30*5759b3d2Safresh1my $buffered_shallow = intercept { buffered 'buffered shallow' => $subtest }; 31*5759b3d2Safresh1my $streamed_shallow = intercept { streamed 'streamed shallow' => $subtest }; 32*5759b3d2Safresh1my $buffered_deep = intercept_deep { buffered 'buffered shallow' => $subtest }; 33*5759b3d2Safresh1my $streamed_deep = intercept_deep { streamed 'streamed shallow' => $subtest }; 34*5759b3d2Safresh1 35*5759b3d2Safresh1is(@$buffered_shallow, 1, "Just got the subtest event"); 36*5759b3d2Safresh1is(@$streamed_shallow, 2, "Got note, and subtest events"); 37*5759b3d2Safresh1is(@$buffered_deep, 3, "Got ok, plan, and subtest events"); 38*5759b3d2Safresh1is(@$streamed_deep, 4, "Got note, ok, plan, and subtest events"); 39*5759b3d2Safresh1 40*5759b3d2Safresh1done_testing; 41