logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Author

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

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.

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 Module::CPANTS::Kwalitee::Uses v95

   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 Module::CPANTS::Kwalitee::Uses v95

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

Maintainer

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

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

Name

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

Repository

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

See Also

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

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

Version

       Version 0.54

See Also