The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use Config;
use lib 't/lib';
unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_strictures') ) {
my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_strictures');
$ENV{RELEASE_TESTING}
? die ("Failed to load release-testing module requirements: $missing")
: plan skip_all => "Test needs: $missing"
}
# The rationale is - if we can load all our optdeps
# that are related to lib/ - then we should be able to run
# perl -c checks (via syntax_ok), and all should just work
my $missing_groupdeps_present = grep
{ ! DBIx::Class::Optional::Dependencies->req_ok_for($_) }
grep
{ $_ !~ /^ (?: test | rdbms | dist ) _ /x }
keys %{DBIx::Class::Optional::Dependencies->req_group_list}
;
# don't test syntax when RT#106935 is triggered (mainly CI)
# FIXME - remove when RT is resolved
my $tainted_relpath = (
length $ENV{PATH}
and
${^TAINT}
and
grep
{ ! File::Spec->file_name_is_absolute($_) }
split /\Q$Config{path_sep}/, $ENV{PATH}
) ? 1 : 0;
find({
wanted => sub {
-f $_ or return;
m/\.(?: pm | pl | t )$ /ix or return;
return if m{^(?:
maint/Makefile.PL.inc/.+ # all the maint inc snippets are auto-strictured
|
t/lib/DBICTest/Util/OverrideRequire.pm # no stictures by design (load order sensitive)
)$}x;
my $f = $_;
Test::Strict::strict_ok($f);
Test::Strict::warnings_ok($f);
Test::Strict::syntax_ok($f) if (
! $tainted_relpath
and
! $missing_groupdeps_present
and
$f =~ /^ (?: lib )/x
);
},
no_chdir => 1,
}, (qw(lib t examples maint)) );
done_testing;