tokuhirom's Blog

Test-Pretty - Prettify the Test::More's output

Test::Pretty is a prettifier for Test::More.

When you are writing a test case such as following:

    use strict;
    use warnings;
    use utf8;
    use Test::More;

    subtest 'MessageFilter' => sub {
        my $filter = MessageFilter->new('foo');

        subtest 'should detect message with NG word' => sub {
            ok($filter->detect('hello from foo'));
        };
        subtest 'should not detect message without NG word' => sub {
            ok(!$filter->detect('hello world!'));
        };
    };

    done_testing;

This code outputs following result:

Yes, it's not readable. Test::Pretty makes this result to pretty.

You can enable Test::Pretty by

use Test::Pretty;

Or just add following option to perl interpreter.

-MTest::Pretty

After this, you can get a following prerty output.

And this module outputs TAP when $ENV{HARNESS_ACTIVE} is true or under the win32. You can run the Test::Pretty enabled test case under the prove.

Notes, this module rewrites Test::Builder by hackish way, but T::B2 may provide a better way to hack it :P I'm waiting...