1use Test2::Tools::Tiny; 2use Test2::API qw/intercept context/; 3 4{ 5 $INC{'My/Event.pm'} = 1; 6 7 package My::Event; 8 use base 'Test2::Event'; 9 10 use Test2::Util::Facets2Legacy ':ALL'; 11 12 sub facet_data { 13 my $self = shift; 14 15 my $out = $self->common_facet_data; 16 17 $out->{errors} = [{tag => 'OOPS', fail => !$ENV{FAILURE_DO_PASS}, details => "An error occured"}]; 18 19 return $out; 20 } 21} 22 23sub error { 24 my $ctx = context(); 25 my $e = $ctx->send_event('+My::Event'); 26 $ctx->release; 27 return $e; 28} 29 30my $events = intercept { 31 tests foo => sub { 32 ok(1, "need at least 1 assertion"); 33 error(); 34 }; 35}; 36 37ok(!$events->[0]->pass, "Subtest did not pass"); 38 39my ($passing_a, $passing_b); 40intercept { 41 my $hub = Test2::API::test2_stack->top; 42 43 $passing_a = $hub->is_passing; 44 45 error(); 46 47 $passing_b = $hub->is_passing; 48}; 49 50ok($passing_a, "Passign before error"); 51ok(!$passing_b, "Not passing after error"); 52 53done_testing; 54