Rewrite all Makefile oneliners in terms of EU::MM::oneliner
[dbsrgits/DBIx-Class.git] / maint / Makefile.PL.inc / 11_authortests.pl
CommitLineData
20884f55 1require File::Spec;
2require File::Find;
3
4my $xt_dirs;
5File::Find::find(sub {
6 return if $xt_dirs->{$File::Find::dir};
7 $xt_dirs->{$File::Find::dir} = 1 if (
8 $_ =~ /\.t$/ and -f $_
9 );
10}, 'xt');
11
3ba58fe4 12my @xt_tests = map { File::Spec->catfile($_, '*.t') } sort keys %$xt_dirs;
20884f55 13
14# this will add the xt tests to the `make test` target among other things
3ba58fe4 15Meta->tests(join (' ', map { $_ || () } Meta->tests, @xt_tests ) );
20884f55 16
da89304f 17# inject an explicit xt test run for the create_distdir target
20884f55 18postamble <<"EOP";
19
da89304f 20create_distdir : test_xt
20884f55 21
3ba58fe4 22test_xt : pm_to_blib
23@{[
24 # When xt tests are explicitly requested, we want to run with RELEASE_TESTING=1
25 # so that all optdeps are turned into a hard failure
26 # However portably modifying ENV for a single command is surprisingly hard
27 # So instead we (ab)use perl's ability to stack -e options, and simply modify
28 # the ENV from within perl itself
29 $mm_proto->test_via_harness(
30 # perl cmd
31 join( ' ',
32 '$(ABSPERLRUN)',
33 # $'s need to be escaped (doubled) before inserting into the Makefile
34 map { $mm_proto->quote_literal($_) } qw(-e $$ENV{RELEASE_TESTING}=1;)
35 ),
36 # test list
37 join( ' ',
38 map { $mm_proto->quote_literal($_) } @xt_tests
39 ),
40 )
41]}
20884f55 42
43EOP
44
fc4b0448 45# keep the Makefile.PL eval happy
461;