Just pushed out a new alpha of Test::More. There's a bunch of new features having to do with the plan. In general it's less restrictive, you can now run tests without first having declared a plan.
This enables the long called for new feature of done_testing(). It's a safer replacement for no_plan. Looks like this: use Test::More; # look ma, no plan! pass("Some sort of test"); pass("Some other test") done_testing(); If your test does not reach done_testing(), no plan will be output and your test will be a failure. This is safer than "no_plan" because if your test exits in the middle it will fail. You can also give done_testing() a number of tests. In that case it works just like "plan tests => #" except instead of having to put it at the beginning of the test it goes at the end. This gives you the opportunity to calculate the number of tests as things go. plan( add => # ) didn't make the cut. There were too many edge cases still to be worked out and I don't want to delay done_testing() because it fixes 90% of the problems with plans. Here at the hackathon, Ovid is working on a full-on sub-plan TAP syntax which may eliminate the need for it entirely. Those wanting a look at that can see http://github.com/ovid/test-more/master Finally, as a little aid to testing, Test::Builder->output() and friends now take scalar references. This makes it much easier to trap test output without having to try and write backwards compatible tied capturing filehandles (5.6 will not do scalar ref filehandles). I had to suck in a copy of IO::Scalar to do it (one more argument in favor of just dropping 5.6) but it made the tests so much simpler. There's Test::Builder::NoOutput in t/lib which is a convenience subclass to make testing even simpler. I'm considering rolling the functionality into Test::Builder proper because I'm sure others will find it very useful. 0.87_01 Sun Mar 29 09:56:52 BST 2009 New Features * done_testing() allows you to declare that you have finished running tests and how many you ran. It is a safer no_plan and effectively replaces it. * output() now supports scalar references. Feature Changes * You can now run a test without first declaring a plan. This allows done_testing() to work. * You can now call current_test() without first declaring a plan. Bug Fixes * skip_all() with no reason would output "1..0" which is invalid TAP. It will now always include the SKIP directive. Other * Repository moved to github. 0.86 Sun Nov 9 01:09:05 PST 2008 Same as 0.85_01 -- You are wicked and wrong to have broken inside and peeked at the implementation and then relied upon it. -- tchrist in <31832.969261...@chthon>