I explain some of the background in http://use.perl.org/~Ovid/journal/39074, 
but basically, I'm just giving folks a heads-up that running tests in 
BEGIN/END/CHECK/INIT blocks may sometimes be problematic in the future.  
Schwern is planning on pulling in the nested TAP branch to the Test::More 
repository and that may cause issues like this:

  use Test::More tests => 3;
   ok $foo;
   subtest 'some name' => sub { 
     load_and_run_some_other_tests();
   };

   ok $bar;
If load_and_run_some_other_tests() loads another file with tests run in 
BEGIN/CHECK/INIT/END blocks, the subtests may have tests running out of 
sequence, thus breaking the TAP stream.  For example, the the loaded test 
program has a test run in an END block, it will execute after the "ok $bar" 
test.

 
This won't impact most tests, but it's something to be aware of and I expect 
that it will be frustrating for some (Test::Aggregate is particularly prone to 
this problem).  However, the wins we gain with nested TAP should far outweigh 
the negatives, though I anticipate much wailing and gnashing of teeth :)

Schwern, if you're concerned about this and think it merits warning under some 
circumstances, you might want to check out Test::Aggregate::Builder's override 
of Test::Builder::ok to see how I handle this issue.

Cheers,
Ovid
--
Buy the book         - http://www.oreilly.com/catalog/perlhks/
Tech blog            - http://use.perl.org/~Ovid/journal/
Twitter              - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6

Reply via email to