The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test2::Tools::Exception - Test2 based tools for checking exceptions

DESCRIPTION

This is the Test2 implementation of code used to test exceptions. This is similar to Test::Fatal, but it intentionally does much less.

SYNOPSIS

    use Test2::Tools::Exception qw/dies lives/;

    like(
        dies { die 'xxx' },
        qr/xxx/,
        "Got exception"
    );

    ok(lives { ... }, "did not die") or note($@);

EXPORTS

All subs are exported by default.

$e = dies { ... }

This will trap any exception the codeblock throws. If no exception is thrown the sub will return undef. If an exception is thrown it will be returned. This function preserves $@, it will not be altered from its value before the sub is called.

$bool = lives { ... }

This will trap any exception thrown in the codeblock. It will return true when there is no exception, and false when there is. $@ is preserved from before the sub is called when there is no exception. When an exception is trapped $@ will have the exception so that you can look at it.

DIFFERENCES FROM TEST::FATAL

Test::Fatal sets $Test::Builder::Level such that failing tests inside the exception block will report to the line where exception() is called. I disagree with this behavior, I think the actual line of the failing test is more important. Ultimately though Test::Fatal cannot be changed, people probably already depend on that behavior.

SOURCE

The source code repository for Test2-Suite can be found at http://github.com/Test-More/Test2-Suite/.

MAINTAINERS

Chad Granum <exodist@cpan.org>

AUTHORS

Chad Granum <exodist@cpan.org>

COPYRIGHT

Copyright 2015 Chad Granum <exodist@cpan.org>.

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

See http://dev.perl.org/licenses/