X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=maint%2FMakefile.PL.inc%2F11_authortests.pl;h=7760de2efa21b9e554bd2c4ecedec06a304070d9;hb=c26b30dee587fa008f7d956b61ae27c36ac7ec82;hp=9b3067d437d293c856604dbd4e23e0fc6286473e;hpb=da89304fa29f8fd18d235d120ccbea7d2cfbecdf;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/maint/Makefile.PL.inc/11_authortests.pl b/maint/Makefile.PL.inc/11_authortests.pl index 9b3067d..7760de2 100644 --- a/maint/Makefile.PL.inc/11_authortests.pl +++ b/maint/Makefile.PL.inc/11_authortests.pl @@ -1,29 +1,63 @@ require File::Spec; require File::Find; -my $xt_dirs; +my $xt_dist_dirs; File::Find::find(sub { - return if $xt_dirs->{$File::Find::dir}; - $xt_dirs->{$File::Find::dir} = 1 if ( + return if $xt_dist_dirs->{$File::Find::dir}; + $xt_dist_dirs->{$File::Find::dir} = 1 if ( $_ =~ /\.t$/ and -f $_ ); -}, 'xt'); +}, 'xt/dist'); -my $xt_tests = join (' ', map { File::Spec->catfile($_, '*.t') } sort keys %$xt_dirs ); +my @xt_dist_tests = map { File::Spec->catfile($_, '*.t') } sort keys %$xt_dist_dirs; -# this will add the xt tests to the `make test` target among other things -Meta->tests(join (' ', map { $_ || () } Meta->tests, $xt_tests ) ); - -# inject an explicit xt test run for the create_distdir target +# inject an explicit xt test run, mainly to check the contents of +# lib and the generated POD's *before* anything is copied around +# +# at the end rerun the whitespace and footer tests in the distdir +# to make sure everything is pristine postamble <<"EOP"; -create_distdir : test_xt - -test_xt : -\tPERL_DL_NONLAZY=1 RELEASE_TESTING=1 \$(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness(\$(TEST_VERBOSE), 'inc', '\$(INST_LIB)', '\$(INST_ARCHLIB)')" $xt_tests +dbic_clonedir_copy_generated_pod : test_xt + +test_xt : pm_to_blib +@{[ + # When xt tests are explicitly requested, we want to run with RELEASE_TESTING=1 + # so that all optdeps are turned into a hard failure + # However portably modifying ENV for a single command is surprisingly hard + # So instead we (ab)use perl's ability to stack -e options, and simply modify + # the ENV from within perl itself + $mm_proto->test_via_harness( + # perl cmd + join( ' ', + '$(ABSPERLRUN)', + map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;) + ), + # test list + join( ' ', + map { $mm_proto->quote_literal($_) } @xt_dist_tests + ), + ) +]} + +create_distdir : dbic_distdir_retest_ws_and_footers + +dbic_distdir_retest_ws_and_footers : +\t@{[ + $mm_proto->cd ( + '$(DISTVNAME)', + $mm_proto->test_via_harness( + # perl cmd + join( ' ', + '$(ABSPERLRUN)', + map { $mm_proto->quote_literal($_) } qw(-Ilib -e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;) + ), + 'xt/dist/postdistdir/*.t', + ) + ) +]} EOP - # keep the Makefile.PL eval happy 1;