Test for warnings and the lack of them
If you've ever tried to use the Test::NoWarnings manpage to confirm there are no warnings generated by your tests, combined with the convenience of 'done_testing' to not have to declare a Test::More/I love it-when-a-plan-comes-together, you'll have discovered that these two features do not play well together, as the test count will be calculated _before_ the warnings test is run, resulting in a TAP error. (See 'examples/test_nowarnings.pl' in this distribution for a demonstration.)
This module is intended to be used as a drop-in replacement for the Test::NoWarnings manpage: it also adds an extra test, but runs this test _before_ 'done_testing' calculates the test count, rather than after. It does this by hooking into 'done_testing' as well as via an 'END' block. You can declare a plan, or not, and things will still Just Work.
It is actually equivalent to:
use Test::NoWarnings 1.04 ':early';
as warnings are still printed normally as they occur. You are safe, and enthusiastically encouraged, to perform a global search-replace of the above with 'use Test::Warnings;' whether or not your tests have a plan.
It can also be used as a replacement for the Test::Warn manpage, if you wish to test the content of expected warnings; read on to find out how.