From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use Test2::API qw(run_subtest context intercept);
use Test2::Tools::Tiny qw/todo/;
sub aaa {
my $ctx = context();
run_subtest(
"bad pass",
sub {
local $TODO = "third test";
ok(1, "ok");
}
);
$ctx->release;
}
sub bbb {
my $ctx = context();
run_subtest(
"bad fail",
sub {
local $TODO = "fourth test";
ok(0, "ok");
}
);
$ctx->release;
}
my $events = intercept {
Test::Builder->new->_add_ts_hooks();
aaa();
bbb();
};
is_deeply(
$events->[1]->{subevents}->[0]->{amnesty}->[0],
{ tag => 'TODO', details => "third test" },
"Amnesty was set properly for first subtest assertion",
);
is_deeply(
$events->[3]->{subevents}->[0]->{amnesty}->[0],
{ tag => 'TODO', details => "fourth test" },
"Amnesty was set properly for second subtest assertion",
);
done_testing;