GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Test::Strict(3) User Contributed Perl Documentation Test::Strict(3)

Test::Strict - Check syntax, presence of use strict; and test coverage

Version 0.52

"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/' );

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.

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.

Check if $file contains a "use strict;" statement. "use Moose" and "use Mouse" are also considered valid. use Modern::Perl is also accepted.

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.

Experimental. Returning a list of modules and pragmata that enable strict. To modify this list, change @Test::Strict::MODULES_ENABLING_STRICT.

List taken from Module::CPANTS::Kwalitee::Uses v95

Experimental. Returning a list of modules and pragmata that enable warnings To modify this list, change @Test::Strict::MODULES_ENABLING_WARNINGS.

List taken from Module::CPANTS::Kwalitee::Uses v95

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. use Modern::Perl is also accepted. 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. use Modern::Perl is also accepted.

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.

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

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()".

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.

Test::More, Test::Pod. Test::Distribution, Test::NoWarnings

<https://github.com/manwar/Test-Strict>

Pierre Denis, "<pdenis@gmail.com>".

Gabor Szabo <http://szabgab.com/>

Currently maintained by Mohammad S Anwar (MANWAR), "<mohammad.anwar at yahoo.com>"

Copyright 2005, 2010 Pierre Denis, All Rights Reserved.

You may use, modify, and distribute this package under the same terms as Perl itself.

2019-06-16 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.