NAME

Assert::Refute::T::Errors - exception and warning check for Assert::Refute suite

SYNOPSIS

use Assert::Refute qw(:all);
use Assert::Refute::T::Errors;

my $c = contract {
    my $foo = shift;
    dies_like {
        $foo->bar;
    } "Bar requires an argument";
    dies_like {
        $foo->bar(1);
    } '', "Bar works fine with 1";
};

$c->apply( $my_foo ); # check whether foo lives/dies as expected

Ditto with Test::More (although there are more fine-grained Test::Warn and Test::Exception):

use Test::More;
use Assert::Refute::T::Errors; # always *after* Test::More

use My::Module;

dies_like {
    My::Module->foo;
} qw/foo requires/, "Epmty argument prohibited";
dies_like {
    My::Module->bar;
} '', "Works without arguments";

EXPORTED FUNCTIONS

All functions below are exported by default.

dies_like

dies_like {
    # shoddy code here
} 'pattern', 'explanation';

Check that supplied code throws the expected exception.

If pattern is empty, expect the code to live through.

Otherwise convert it to regular expression if needed and match $@ against it.

warns_like { ... }

warns_like {
    warn "Foo";
    warn "Bar";
} [qr/Foo/, "Bar"], "Human comment";

warns_like {
    # Shoddy code here
} '', "No warnings";

Check that exactly the specified warnings were emitted by block. A single string or regex value is accepted and converted to 1-element array.

An empty array or a false value mean no warnings at all.

Note that this block does NOT catch exceptions. This MAY change in the future.

LICENSE AND COPYRIGHT

This module is part of Assert::Refute suite.

Copyright 2017-2018 Konstantin S. Uvarin. <khedin at cpan.org>

This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at:

http://www.perlfoundation.org/artistic_license_2_0