Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Test::NoWarnings(3)   User Contributed Perl Documentation  Test::NoWarnings(3)

NAME
       Test::NoWarnings	- Make sure you	didn't emit any	warnings while testing

SYNOPSIS
       For scripts that	have no	plan

	 use Test::NoWarnings;

       that's it, you don't need to do anything	else

       For scripts that	look like

	 use Test::More	tests => x;

       change to

	 use Test::More	tests => x + 1;
	 use Test::NoWarnings;

DESCRIPTION
       In general, your	tests shouldn't	produce	warnings. This modules causes
       any warnings to be captured and stored. It automatically	adds an	extra
       test that will run when your script ends	to check that there were no
       warnings. If there were any warings, the	test will give a "not ok" and
       diagnostics of where, when and what the warning was, including a	stack
       trace of	what was going on when the it occurred.

       If some of your tests are supposed to produce warnings then you should
       be capturing and	checking them with Test::Warn, that way
       Test::NoWarnings	will not see them and so not complain.

       The test	is run by an "END" block in Test::NoWarnings. It will not be
       run when	any forked children exit.

USAGE
       Simply by using the module, you automatically get an extra test at the
       end of your script that checks that no warnings were emitted. So	just
       stick

	 use Test::NoWarnings;

       at the top of your script and continue as normal.

       If you want more	control	you can	invoke the test	manually at any	time
       with "had_no_warnings".

       The warnings your test has generated so far are stored in an array. You
       can look	inside and clear this whenever you want	with "warnings()" and
       "clear_warnings", however, if you are doing this	sort of	thing then you
       probably	want to	use Test::Warn in combination with Test::NoWarnings.

   use vs require
       You will	almost always want to do

	 use Test::NoWarnings

       If you do a "require" rather than a "use", then there will be no
       automatic test at the end of your script.

   Output
       If warning is captured during your test then the	details	will output as
       part of the diagnostics.	You will get:

       o the number and	name of	the test that was executed just	before the
	 warning (if no	test had been executed these will be 0 and '')

       o the message passed to "warn",

       o a full	dump of	the stack when warn was	called,	courtesy of the	"Carp"
	 module

       By default, all warning messages	will be	emitted	in one block at	the
       end of your test	script.

   The :early pragma
       One common complaint from people	using Test::NoWarnings is that all of
       the warnings are	emitted	in one go at the end. While this is the	safest
       and most	correct	time to	emit these diagnostics,	it can make debugging
       these warnings difficult.

       As of Test::NoWarnings 1.04 you can provide an experimental ":early"
       pragma when loading the module to force warnings	to be thrown via diag
       at the time that	they actually occur.

	 use Test::NoWarnings ':early';

       As this will cause the diag to be emitted against the previous test and
       not the one in which the	warning	actually occurred it is	recommended
       that the	pragma be turned on only for debugging and left	off when not
       needed.

FUNCTIONS
   had_no_warnings
       This checks that	there have been	warnings emitted by your test scripts.
       Usually you will	not call this explicitly as it is called automatically
       when your script	finishes.

   clear_warnings
       This will clear the array of warnings that have been captured. If the
       array is	empty then a call to "had_no_warnings()" will produce a	pass
       result.

   warnings
       This will return	the array of warnings captured so far. Each element of
       this array is an	object containing information about the	warning. The
       following methods are available on these	object.

       o $warn->getMessage

	 Get the message that would been printed by the	warning.

       o $warn->getCarp

	 Get a stack trace of what was going on	when the warning happened,
	 this stack trace is just a string generated by	the Carp module.

       o $warn->getTrace

	 Get a stack trace object generated by the Devel::StackTrace module.
	 This will return undef	if Devel::StackTrace is	not installed.

       o $warn->getTest

	 Get the number	of the test that executed before the warning was
	 emitted.

       o $warn->getTestName

	 Get the name of the test that executed	before the warning was
	 emitted.

PITFALLS
       When counting your tests	for the	plan, don't forget to include the test
       that runs automatically when your script	ends.

SUPPORT
       Bugs should be reported via the CPAN bug	tracker	at

       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-NoWarnings>

       For other issues, contact the author.

HISTORY
       This was	previously known as Test::Warn::None

SEE ALSO
       Test::Builder, Test::Warn

AUTHORS
       Fergal Daly <fergal@esatclear.ie>

       Adam Kennedy <adamk@cpan.org>

COPYRIGHT
       Copyright 2003 -	2007 Fergal Daly.

       Some parts copyright 2010 - 2011	Adam Kennedy.

       This program is free software and comes with no warranty. It is
       distributed under the LGPL license

       See the file LGPL included in this distribution or
       http://www.fsf.org/licenses/licenses.html.

perl v5.32.0			  2011-12-01		   Test::NoWarnings(3)

NAME | SYNOPSIS | DESCRIPTION | USAGE | FUNCTIONS | PITFALLS | SUPPORT | HISTORY | SEE ALSO | AUTHORS | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Test::NoWarnings&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help