logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Authors

       Chad Granum <exodist@cpan.org>

Description

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

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.

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.

Maintainers

       Chad Granum <exodist@cpan.org>

Name

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

Source

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

Synopsis

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

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

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

See Also