גאבור סבו - Gábor Szabó

NAME

Test::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. 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.

modules_enabling_strict

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

List taken from https://metacpan.org/source/DAXIM/Module-CPANTS-Analyse-0.86/lib/Module/CPANTS/Kwalitee/Uses.pm

modules_enabling_warnings

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

List taken from https://metacpan.org/source/DAXIM/Module-CPANTS-Analyse-0.86/lib/Module/CPANTS/Kwalitee/Uses.pm

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. 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.

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

REPOSITORY

https://github.com/szabgab/Test-Strict

AUTHOR

Pierre Denis, <pdenis@gmail.com>.

MAINTAINER

Gabor Szabo

COPYRIGHT

Copyright 2005, 2010 Pierre Denis, All Rights Reserved.

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




Hosting generously
sponsored by Bytemark