- warnings
Test for no warnings - the hard way
If we can test our code for specific warnings we should also test that in other places there are no warnings.
examples/test-warn/t/fibonacci_test_warn.t
use strict; use warnings; use Test::More; use Test::Warn; use MyTools qw(fibo); subtest negative => sub { my $result; warning_is {$result = fibo(-1)} "Given number must be > 0", 'warning when called with -1'; is($result, undef, 'fibonacci on -1 returns undef'); }; subtest positive_4 => sub { my $result; warning_is {$result = fibo(4)} undef, 'no warning here'; is($result, 3, 'fibonacci on 4 returns 3'); }; subtest positive_6 => sub { my $result; warning_is {$result = fibo(6)} undef, 'no warning here'; is($result, 8, 'fibonacci on 6 returns 8'); }; done_testing;
prove -lv t/fibonacci_test_warn.t
t/fibonacci_test_warn.t .. # Subtest: negative ok 1 - warning when called with -1 ok 2 - fibonacci on -1 returns undef 1..2 ok 1 - negative # Subtest: positive_4 ok 1 - no warning here ok 2 - fibonacci on 4 returns 3 1..2 ok 2 - positive_4 # Subtest: positive_6 ok 1 - no warning here ok 2 - fibonacci on 6 returns 8 1..2 ok 3 - positive_6 1..3 ok All tests successful. Files=1, Tests=3, 0 wallclock secs ( 0.01 usr 0.00 sys + 0.15 cusr 0.02 csys = 0.18 CPU) Result: PASS