I'm intrigued by the "most of the time" parenthesis. Could you elaborate?
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
| [reply] [d/l] |
Most of the time means that any tool written with Test2 in mind, or directly on Test2 will work as expected, this should include most methods on Test::Builder itself. However cpan tools written against old Test::Builder that do not use Test2's 'Context' system may still call $tb->ok and $tb->diag separately, in which case the diag will still be lost.
In Test2 you would do this:
sub mytool {
my $ctx = context();
$ctx->ok(...);
$ctx->diag(...);
$ctx->release; # This is where the bail-on-fail is triggered
}
The TB version:
sub mytool {
$tb->ok(...); # BailOnFail is triggered here
$tb->diag(...); # Lost
}
$tb methods do acquire context's, but each of those methods has to acquire it's own. That said the diagnostics TB itself generates in a failed-ok (like line number) will make the output, it is just extra diags are lost.
That is unfortunately a fundamental, and not-fixable limitation of Test::Builder that Test2 avoided with the context system. Test2 was specifically designed to overcome this and many other TB limitations. | [reply] [d/l] [select] |