From dd2cf0649cee7dc90f6d96c9b605cdf0dc0f7c84 Mon Sep 17 00:00:00 2001 From: Diab Jerius Date: Sun, 23 Jul 2023 17:51:53 -0400 Subject: [PATCH] allow for tested coretests and regular tests in t/ --- Makefile.PL | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index cdabf4301..70796e09e 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -6,6 +6,7 @@ use 5.010_000; use ExtUtils::MakeMaker; use ExtUtils::MakeMaker::Config; use File::Spec; +use File::Find; # file globals(!) my ($pdl_f77conf, $seen_f77conf); @@ -76,6 +77,47 @@ sub check_f77conf { return 1; } +# returns a list of globs for nested tests in the passed directory, e.g. +# ( 't/*.t', 't/*/*.t' ) which reflect the actual nesting of tests +sub test_globs { + my $dir = shift; + my @depth; + File::Find::find ( { no_chdir => 1, wanted => sub { /\.t$/ and $depth[ 0+ ( () = m{/}g )] = 1 } } , $dir ); + return map { 't/' . ('*/') x $_ . '*.t' } 0..$#depth-1 +} + +# return a list of tests associated with the PDL core. tests are searched for in 't', +# and may be a single "$test.t" file, or any files within the t/$test directory. +sub coretests { + my @core = qw( + 01-pptest autoload bad basic bool clump config constructor core croak lvalue + math matrix matrixops nat_complex ops-bitwise ops pdl_from_string + pdlchar pp_croaking pp_line_numbers primitive pthread reduce + slice subclass thread thread_def ufunc + ); + + my @tests; + + for my $test ( @core ) { + + # top level "$test.t" file + my $tfile = File::Spec->catfile('t', $test . '.t'); + + push @tests, $tfile if -f $tfile; + + my $tdir = File::Spec->catfile('t', $test); + if ( -d $tdir ) { + File::Find::find ( { no_chdir => 1, + wanted => sub { /\.t$/ and push @tests, $_; } + }, + $tdir ); + } + } + + return @tests; +} + + sub make_PDL_Config_pm { print "Writing Basic/Core/Config.pm\n"; my $configFile = "Basic/Core/Config.pm"; @@ -241,6 +283,9 @@ my %makefile_hash = ( AUTHOR => 'PerlDL Developers ', ABSTRACT => 'Perl Data Language', BINARY_LOCATION => 'PDL.tar.gz', + + # allow nested test directories + test => { TESTS => join( q{ }, test_globs( './t' ) ) }, ); WriteMakefile(%makefile_hash); @@ -306,12 +351,7 @@ ppm : doctest ppd EOT $text .= "\n" . ::coretarget($self); -my $coretest = join ' ', map File::Spec->catfile('t', $_.'.t'), qw( - 01-pptest autoload bad basic bool clump config constructor core croak lvalue - math matrix matrixops nat_complex ops-bitwise ops pdl_from_string - pdlchar pp_croaking pp_line_numbers primitive pthread reduce - slice subclass thread thread_def ufunc -); +my $coretest = join ' ', ::coretests(); $text .= <