|
Packit |
e6feea |
NAME
|
|
Packit |
e6feea |
Test::FailWarnings - Add test failures if warnings are caught
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
VERSION
|
|
Packit |
e6feea |
version 0.008
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
SYNOPSIS
|
|
Packit |
e6feea |
Test file:
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use strict;
|
|
Packit |
e6feea |
use warnings;
|
|
Packit |
e6feea |
use Test::More;
|
|
Packit |
e6feea |
use Test::FailWarnings;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
ok( 1, "first test" );
|
|
Packit |
e6feea |
ok( 1 + "lkadjaks", "add non-numeric" );
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
done_testing;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
Output:
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
ok 1 - first test
|
|
Packit |
e6feea |
not ok 2 - Test::FailWarnings should catch no warnings
|
|
Packit |
e6feea |
# Failed test 'Test::FailWarnings should catch no warnings'
|
|
Packit |
e6feea |
# at t/bin/main-warn.pl line 7.
|
|
Packit |
e6feea |
# Warning was 'Argument "lkadjaks" isn't numeric in addition (+) at t/bin/main-warn.pl line 7.'
|
|
Packit |
e6feea |
ok 3 - add non-numeric
|
|
Packit |
e6feea |
1..3
|
|
Packit |
e6feea |
# Looks like you failed 1 test of 3.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
DESCRIPTION
|
|
Packit |
e6feea |
This module hooks $SIG{__WARN__} and converts warnings to Test::More
|
|
Packit |
e6feea |
"fail()" calls. It is designed to be used with "done_testing", when you
|
|
Packit |
e6feea |
don't need to know the test count in advance.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
Just as with Test::NoWarnings, this does not catch warnings if other
|
|
Packit |
e6feea |
things localize $SIG{__WARN__}, as this is designed to catch *unhandled*
|
|
Packit |
e6feea |
warnings.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
USAGE
|
|
Packit |
e6feea |
Overriding $SIG{__WARN__}
|
|
Packit |
e6feea |
On "import", $SIG{__WARN__} is replaced with
|
|
Packit |
e6feea |
"Test::FailWarnings::handler".
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use Test::FailWarnings; # global
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
If you don't want global replacement, require the module instead and
|
|
Packit |
e6feea |
localize in whatever scope you want.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
require Test::FailWarnings;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
{
|
|
Packit |
e6feea |
local $SIG{__WARN__} = \&Test::FailWarnings::handler;
|
|
Packit |
e6feea |
# ... warnings will issue fail() here
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
When the handler reports on the source of the warning, it will look past
|
|
Packit |
e6feea |
any calling packages starting with "Carp" or "warnings" to try to detect
|
|
Packit |
e6feea |
the real origin of the warning.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
Allowing warnings from dependencies
|
|
Packit |
e6feea |
If you want to ignore failures from outside your own code, you can set
|
|
Packit |
e6feea |
$Test::FailWarnings::ALLOW_DEPS to a true value. You can do that on the
|
|
Packit |
e6feea |
"use" line with "-allow_deps".
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use Test::FailWarnings -allow_deps => 1;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
When true, warnings will only be thrown if they appear to originate from
|
|
Packit |
e6feea |
a filename matching "qr/^(?:t|xt|lib|blib)/"
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
Allowing warnings from specific modules
|
|
Packit |
e6feea |
If you want to white-list specific modules only, you can add their
|
|
Packit |
e6feea |
package names to @Test::NoWarnings::ALLOW_FROM. You can do that on the
|
|
Packit |
e6feea |
"use" line with "-allow_from".
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use Test::FailWarnings -allow_from => [ qw/Annoying::Module/ ];
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
SEE ALSO
|
|
Packit |
e6feea |
* Test::NoWarnings -- catches warnings and reports in an "END" block.
|
|
Packit |
e6feea |
Not (yet) friendly with "done_testing".
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
* Test::Warnings -- a replacement for Test::NoWarnings that works with
|
|
Packit |
e6feea |
done_testing
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
* Test::Warn -- test for warnings without triggering failures from
|
|
Packit |
e6feea |
this modules
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
SUPPORT
|
|
Packit |
e6feea |
Bugs / Feature Requests
|
|
Packit |
e6feea |
Please report any bugs or feature requests through the issue tracker at
|
|
Packit |
e6feea |
<https://github.com/dagolden/Test-FailWarnings/issues>. You will be
|
|
Packit |
e6feea |
notified automatically of any progress on your issue.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
Source Code
|
|
Packit |
e6feea |
This is open source software. The code repository is available for
|
|
Packit |
e6feea |
public review and contribution under the terms of the license.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
<https://github.com/dagolden/Test-FailWarnings>
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
git clone https://github.com/dagolden/Test-FailWarnings.git
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
AUTHOR
|
|
Packit |
e6feea |
David Golden <dagolden@cpan.org>
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
COPYRIGHT AND LICENSE
|
|
Packit |
e6feea |
This software is Copyright (c) 2013 by David Golden.
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
This is free software, licensed under:
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
The Apache License, Version 2.0, January 2004
|
|
Packit |
e6feea |
|