Add permanent plumbing for _TempExtlib (d0435d75)
[dbsrgits/DBIx-Class.git] / xt / dist / strictures.t
1 BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
2 use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_strictures';
3
4 use warnings;
5 use strict;
6
7 use Test::More;
8 use File::Find;
9 use File::Spec;
10 use Config;
11
12 use DBICTest;
13
14 # The rationale is - if we can load all our optdeps
15 # that are related to lib/ - then we should be able to run
16 # perl -c checks (via syntax_ok), and all should just work
17 my $missing_groupdeps_present = grep
18   { ! DBIx::Class::Optional::Dependencies->req_ok_for($_) }
19   grep
20     { $_ !~ /^ (?: test | rdbms | dist ) _ /x }
21     keys %{DBIx::Class::Optional::Dependencies->req_group_list}
22 ;
23
24 # don't test syntax when RT#106935 is triggered (mainly CI)
25 # FIXME - remove when RT is resolved
26 my $tainted_relpath = (
27   length $ENV{PATH}
28     and
29   ${^TAINT}
30     and
31   grep
32     { ! File::Spec->file_name_is_absolute($_) }
33     split /\Q$Config{path_sep}/, $ENV{PATH}
34 ) ? 1 : 0;
35
36 find({
37   wanted => sub {
38     -f $_ or return;
39     m/\.(?: pm | pl | t )$ /ix or return;
40
41     return if m{^(?:
42       maint/Makefile.PL.inc/.+                        # all the maint inc snippets are auto-strictured
43         |
44       t/lib/DBICTest/Util/OverrideRequire.pm          # no stictures by design (load order sensitive)
45         |
46       t/lib/ANFANG.pm                                 # no stictures by design (load speed sensitive)
47         |
48       lib/DBIx/Class/Optional/Dependencies.pm         # no stictures by design (load speed sensitive)
49         |
50       lib/DBIx/Class/StartupCheck.pm                  # no stictures by design (load speed sensitive)
51         |
52       lib/DBIx/Class/_TempExtlib/.+
53     )$}x;
54
55     my $f = $_;
56
57     Test::Strict::strict_ok($f);
58     Test::Strict::warnings_ok($f);
59
60     Test::Strict::syntax_ok($f) if (
61       ! $tainted_relpath
62         and
63       ! $missing_groupdeps_present
64         and
65       $f =~ /^ (?: lib  )/x
66     );
67   },
68   no_chdir => 1,
69 }, (qw(lib t examples maint)) );
70
71 done_testing;