Test::Strict(3)
π Test::Strict(3) β Check syntax, presence of use strict; and test coverage π
Okay bestie, welcome to the Test::Strict(3) man page β this is the one that checks your Perl code compiles, has its use strict; vibes on, and gets enough test coverage. Let's go. β¨
β¨ NAME β¨
Test::Strict β check syntax, presence of use strict; and test coverage. π
πΈ VERSION πΈ
Version 0.54. Periodt.
π¦ SYNOPSIS π¦
Test::Strict lets you check the syntax, presence of use strict; and presence of use warnings; in your perl code. It reports 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. Slay.
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 β yes, with a k, iconic β 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().
π 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 π
Go peek at Test::More, Test::Pod. Test::Distribution, Test::NoWarnings.
π REPOSITORY π
The repo lives at https://github.com/manwar/Test-Strict.
π«Ά AUTHOR π«Ά
Pierre Denis, "<pdenis@gmail.com>".
π MAINTAINER π
Gabor Szabo http://szabgab.com/
Currently maintained by Mohammad S Anwar (MANWAR), "<mohammad.anwar at yahoo.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.
And that's the whole Test::Strict(3) vibe, bestie. Signed off with π from the perl v5.32.1 User Contributed Perl Documentation, dated 2025-01-18, for Test::Strict(3). β¨
π¦ where this page comes from
- epel 9: perl-Test-Strict 0.54-2.el9 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms