On Wed, 2004-04-28 at 09:33, Dan Sugalski wrote:
> Cool. If they do work, could you fire a quick note on how to the
> list, so I don't forget again?
Alright, here's a TODO test:
use Parrot::Test tests => 2;
use Test::More;
TODO:
{
local $TODO = 'Not implemented yet';
ok( 0, 'Sufficiently large values of zero are true' );
is( 1, 2, 'Sufficiently large values of one are two' );
}
Since Parrot::Test doesn't export TODO or $TODO, you have to use
Test::More. Once you've done that, create a new block labelled TODO to
contain all of the tests that may fail. Localize the global $TODO with
the reason you want to display and write your tests as normal.
If you run this file directly, you'll see the failures with the $TODO
reason in the test comment:
$ perl -Ilib t/todo_example.t
not ok 1 - Sufficiently large values of zero are true # TODO Not
implemented yet
# Failed (TODO) test (t/example.t at line 9)
not ok 2 - Sufficiently large values of one are two # TODO Not
implemented yet
# Failed (TODO) test (t/example.t at line 10)
# got: '1'
# expected: '2'
If you run this through Test::Harness, it'll pick up on the # TODO
comments and report that the tests succeeded. (Hey, they failed, but
you expected them to fail, so everything is okay.)
$ perl t/harness t/todo_example.t
t/example....ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs ( 0.08 cusr + 0.00 csys = 0.08
CPU)
If for some reason one of the tests suddenly starts to succeed, you'll
see a different message from the harness:
$ perl t/harness t/example.t
t/example....ok
1/2 unexpectedly succeeded
All tests successful (1 subtest UNEXPECTEDLY SUCCEEDED).
Files=1, Tests=2, 0 wallclock secs ( 0.07 cusr + 0.01 csys = 0.08
CPU)
Leo wants the harness to report TODO tests that fail as expected; that's
a little more complex, but it's doable.
-- c