use strict;
use Test::More;
+use File::Find;
+use File::Spec;
+use Config;
use lib 't/lib';
-use DBICTest ':GlobalLock';
+use DBICTest;
unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_strictures') ) {
my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_strictures');
: plan skip_all => "Test needs: $missing"
}
-
use File::Find;
+# 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;
return if m{^(?:
maint/Makefile.PL.inc/.+ # all the maint inc snippets are auto-strictured
|
- lib/DBIx/Class/Admin/Types.pm # MooseX::Types undetected
- |
- lib/DBIx/Class/Storage/DBI/Replicated/Types.pm # MooseX::Types undetected
- |
- lib/DBIx/Class/Storage/BlockRunner.pm # Moo undetected
- |
t/lib/DBICTest/Util/OverrideRequire.pm # no stictures by design (load order sensitive)
)$}x;
Test::Strict::strict_ok($f);
Test::Strict::warnings_ok($f);
- #Test::Strict::syntax_ok($f) if $f =~ /^ (?: lib )/x;
+ Test::Strict::syntax_ok($f) if (
+ ! $tainted_relpath
+ and
+ ! $missing_groupdeps_present
+ and
+ $f =~ /^ (?: lib )/x
+ );
},
no_chdir => 1,
}, (qw(lib t examples maint)) );