15759b3d2Safresh1use Test2::Tools::Tiny; 25759b3d2Safresh1use Test2::API qw/intercept context/; 35759b3d2Safresh1 45759b3d2Safresh1{ 55759b3d2Safresh1 $INC{'My/Event.pm'} = 1; 65759b3d2Safresh1 75759b3d2Safresh1 package My::Event; 85759b3d2Safresh1 use base 'Test2::Event'; 95759b3d2Safresh1 105759b3d2Safresh1 use Test2::Util::Facets2Legacy ':ALL'; 115759b3d2Safresh1 125759b3d2Safresh1 sub facet_data { 135759b3d2Safresh1 my $self = shift; 145759b3d2Safresh1 155759b3d2Safresh1 my $out = $self->common_facet_data; 165759b3d2Safresh1 17*de8cc8edSafresh1 $out->{errors} = [{tag => 'OOPS', fail => !$ENV{FAILURE_DO_PASS}, details => "An error occurred"}]; 185759b3d2Safresh1 195759b3d2Safresh1 return $out; 205759b3d2Safresh1 } 215759b3d2Safresh1} 225759b3d2Safresh1 235759b3d2Safresh1sub error { 245759b3d2Safresh1 my $ctx = context(); 255759b3d2Safresh1 my $e = $ctx->send_event('+My::Event'); 265759b3d2Safresh1 $ctx->release; 275759b3d2Safresh1 return $e; 285759b3d2Safresh1} 295759b3d2Safresh1 305759b3d2Safresh1my $events = intercept { 315759b3d2Safresh1 tests foo => sub { 325759b3d2Safresh1 ok(1, "need at least 1 assertion"); 335759b3d2Safresh1 error(); 345759b3d2Safresh1 }; 355759b3d2Safresh1}; 365759b3d2Safresh1 375759b3d2Safresh1ok(!$events->[0]->pass, "Subtest did not pass"); 385759b3d2Safresh1 395759b3d2Safresh1my ($passing_a, $passing_b); 405759b3d2Safresh1intercept { 415759b3d2Safresh1 my $hub = Test2::API::test2_stack->top; 425759b3d2Safresh1 435759b3d2Safresh1 $passing_a = $hub->is_passing; 445759b3d2Safresh1 455759b3d2Safresh1 error(); 465759b3d2Safresh1 475759b3d2Safresh1 $passing_b = $hub->is_passing; 485759b3d2Safresh1}; 495759b3d2Safresh1 505759b3d2Safresh1ok($passing_a, "Passign before error"); 515759b3d2Safresh1ok(!$passing_b, "Not passing after error"); 525759b3d2Safresh1 535759b3d2Safresh1done_testing; 54