NAME

Test::Routine::AutoClear - Enables autoclearing attrs in Test::Routines

VERSION

version 0.002

SYNOPSIS

use Test::Routine::AutoClear;
use Test::More;
use File::Tempdir;

has _tempdir => (
    is        => 'ro',
    isa       => 'Int',
    builder   => '_build_tempdir',
    lazy      => 1,
    autoclear => 1,
    handles   => {
        tempdir => 'name',
    },
);

sub _build_tempdir {
    File::Tempdir->new();
}

And now all the tests that use a tempdir in your test routine will get a fresh Tempdir

DESCRIPTION

When I'm writing tests with Test::Routine I find myself writing code like this all the time:

has counter => (
    is      => ro,
    lazy    => 1,
    default => 0
    lazy    => 1,
    clearer => 'reset_counter',
);

after run_test => sub {
    shift->reset_counter;
};

And after about the first time, I got bored of doing this. So I started to fix it, and here's my first cut.

BUGS

Lots. Including, but not limited to:

  • The interface is still very fluid. I make no promises about interface stability.

  • I'm pretty sure that if you end up mixing in multiple roles that use this role then you'll end up clearing your attributes lots of times.

  • I think it's reasonable to expect that resetting an attribute that didn't get set via a builder should reset the value to the initial value that was set via the instantiation params. Or maybe autoclear => 1 should imply init_arg => undef.

SEE ALSO

AUTHOR

Piers Cawley <pdcawley@bofh.org.uk>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Piers Cawley.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.