ok 1.2.3 allows this ok 1.1.1 ok 1.2.1 ok 1.1.2 ok 1.2.2
so if people use the Test::AtRuntime they can also execute those tests at test time, just allocate subblock 1.* to all the runtime tests. They will appear in the output, intermixed with all your other tests but they will not interfere with the correct counting of those other tests. Also you can allocate a sub block to each thread and you don't have to worry about it's output getting confused with the output of any other thread because every thing from thread 1 will have a number starting with 1. and thread 2 will have 2. etc You can not do these reliably when you just have extensions Say thread 1 should print 1..1 ok 1..1 ok and thread 2 should print 1..1 ok 1..1 ok The comments are just for our benefit. You get 1..1 # t 1 1..1 # t 2 ok # t 1 1..1 # t 1 ok # t 2 1..1 # t 2 ok # t 1 ok # t 1 Without the comments there's no way to tell that thread 1 ran 3 tests and thread 2 only ran 1. Actually this can happen currently now that I think of it. ok 1.2.3 would catch that. Even with only a single thread, in order to catch this kind of thing you must make sure that the plan is not extended before the current plan is finished which means something like this is illegal foreach my $person (@big_red_people) { plan_more 2; ok($person->{size} > 10); is_valid_person($person); # wrong, because it has it's own subplan ok(person->{colour} eq "red"); } You have to call is_valid_person() _after_ you test size and colour, otherwise you won't notice when is_valid_person() overruns by 1 and colur doesn't get tested at all. One compromise would be to number the sub plans and have a finish marker that included the number. That would solve the "was it 2+2 or 1+3?" problem but it wouldn't solve the threaded situation or the cross-cutting runtime test one either, F