Test::Strict(3) User Contributed Perl Documentation Test::Strict(3)NAMETest::Strict - Check syntax, presence of use strict; and test coverage
SYNOPSIS
"Test::Strict" lets you check the syntax, presence of "use strict;" and
presence "use warnings;" in your perl code. It report its results in
standard "Test::Simple" fashion:
use Test::Strict tests => 3;
syntax_ok( 'bin/myscript.pl' );
strict_ok( 'My::Module', "use strict; in My::Module" );
warnings_ok( 'lib/My/Module.pm' );
Module authors can include the following in a t/strict.t and have
"Test::Strict" automatically find and check all perl files in a module
distribution:
use Test::Strict;
all_perl_files_ok(); # Syntax ok and use strict;
or
use Test::Strict;
all_perl_files_ok( @mydirs );
"Test::Strict" can also enforce a minimum test coverage the test suite
should reach. Module authors can include the following in a t/cover.t
and have "Test::Strict" automatically check the test coverage:
use Test::Strict;
all_cover_ok( 80 ); # at least 80% coverage
or
use Test::Strict;
all_cover_ok( 80, 't/' );
DESCRIPTION
The most basic test one can write is "does it compile ?". This module
tests if the code compiles and play nice with "Test::Simple" modules.
Another good practice this module can test is to "use strict;" in all
perl files.
By setting a minimum test coverage through "all_cover_ok()", a code
author can ensure his code is tested above a preset level of kwality
throughout the development cycle.
Along with Test::Pod, this module can provide the first tests to setup
for a module author.
This module should be able to run under the -T flag for perl >= 5.6.
All paths are untainted with the following pattern:
"qr|^([-+@\w./:\\]+)$|" controlled by $Test::Strict::UNTAINT_PATTERN.
FUNCTIONS
syntax_ok( $file [, $text] )
Run a syntax check on $file by running "perl -c $file" with an external
perl interpreter. The external perl interpreter path is stored in
$Test::Strict::PERL which can be modified. You may prefer "use_ok()"
from Test::More to syntax test a module. For a module, the path
(lib/My/Module.pm) or the name (My::Module) can be both used.
strict_ok( $file [, $text] )
Check if $file contains a "use strict;" statement. "use Moose" and
"use Mouse" are also considered valid.
This is a pretty naive test which may be fooled in some edge cases.
For a module, the path (lib/My/Module.pm) or the name (My::Module) can
be both used.
warnings_ok( $file [, $text] )
Check if warnings have been turned on.
If $file is a module, check if it contains a "use warnings;" or "use
warnings::..." or "use Moose" or "use Mouse" statement. If the perl
version is <= 5.6, this test is skipped ("use warnings" appeared in
perl 5.6).
If $file is a script, check if it starts with "#!...perl -w". If the
-w is not found and perl is >= 5.6, check for a "use warnings;" or "use
warnings::..." or "use Moose" or "use Mouse" statement.
This is a pretty naive test which may be fooled in some edge cases.
For a module, the path (lib/My/Module.pm) or the name (My::Module) can
be both used.
all_perl_files_ok( [ @directories ] )
Applies "strict_ok()" and "syntax_ok()" to all perl files found in
@directories (and sub directories). If no <@directories> is given, the
starting point is one level above the current running script, that
should cover all the files of a typical CPAN distribution. A perl file
is *.pl or *.pm or *.t or a file starting with "#!...perl"
If the test plan is defined:
use Test::Strict tests => 18;
all_perl_files_ok();
the total number of files tested must be specified.
You can control which tests are run on each perl site through:
$Test::Strict::TEST_SYNTAX (default = 1)
$Test::Strict::TEST_STRICT (default = 1)
$Test::Strict::TEST_WARNINGS (default = 0)
$Test::Strict::TEST_SKIP (default = []) "Trusted" files to skip
all_cover_ok( [coverage_threshold [, @t_dirs]] )
This will run all the tests in @t_dirs (or current script's directory
if @t_dirs is undef) under Devel::Cover and calculate the global test
coverage of the code loaded by the tests. If the test coverage is
greater or equal than "coverage_threshold", it is a pass, otherwise
it's a fail. The default coverage threshold is 50 (meaning 50% of the
code loaded has been covered by test).
The threshold can be modified through
$Test::Strict::COVERAGE_THRESHOLD.
You may want to select which files are selected for code coverage
through $Test::Strict::DEVEL_COVER_OPTIONS, see Devel::Cover for the
list of available options. The default is '+ignore,"/Test/Strict\b"'.
The path to "cover" utility can be modified through
$Test::Strict::COVER.
The 50% threshold is a completely arbitrary value, which should not be
considered as a good enough coverage.
The total coverage is the return value of "all_cover_ok()".
CAVEATS
For "all_cover_ok()" to work properly, it is strongly advised to
install the most recent version of Devel::Cover and use perl 5.8.1 or
above. In the case of a "make test" scenario, "all_perl_files_ok()"
re-run all the tests in a separate perl interpreter, this may lead to
some side effects.
SEE ALSO
Test::More, Test::Pod. Test::Distribution, <Test:NoWarnings>
AUTHOR
Pierre Denis, "<pdenis@gmail.com>".
COPYRIGHT
Copyright 2005, 2010 Pierre Denis, All Rights Reserved.
You may use, modify, and distribute this package under the same terms
as Perl itself.
perl v5.14.1 2010-02-14 Test::Strict(3)