Test2::Tools::Exception3pm
Test2 based tools for checking exceptions
Usage
use Test2::Tools::Exception qw/dies lives/;like(dies { die 'xxx' },qr/xxx/,"Got exception");ok(lives { ... }, "did not die") or note($@);
Overview
This is the Test2 implementation of code used to test exceptions. This is similar to Test::Fatal, but it intentionally does much less.
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.
- $bool = try_ok { ... }
- $bool = try_ok { ... } "Test Description"
-
This will run the code block trapping any exception. If there is no exception a passing event will be issued. If the test fails a failing event will be issued, and the exception will be reported as diagnostics.
Note:This function does not preserve$@on failure, it will be set to the exception the codeblock throws, this is by design so that you can obtain the exception if desired.
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, and 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 https://github.com/Test-More/test-more/.
Maintainers
- Chad Granum <[email protected]>
Releases
5 releases since Debian 9 (Stretch); the text changed 4 times.