X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2FTEST;h=38afe6f6910fe05d6d30fcd9b184b8a9e7c54076;hb=784fea9c399df2b90bca112fecf00acbb3989212;hp=afce704b5379f56a08348e79143b2ae0481800d4;hpb=1de9afcdf18cf98bbdecaa782da93e907be6fe4e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/TEST b/t/TEST index afce704..38afe6f 100755 --- a/t/TEST +++ b/t/TEST @@ -95,18 +95,58 @@ sub _quote_args { return $argstring; } +sub _populate_hash { + return map {$_, 1} split /\s+/, $_[0]; +} + unless (@ARGV) { foreach my $dir (qw(base comp cmd run io op uni)) { _find_tests($dir); } _find_tests("lib") unless $core; + # Config.pm may be broken for make minitest. And this is only a refinement + # for skipping tests on non-default builds, so it is allowed to fail. + # What we want to to is make a list of extensions which we did not build. + my $configsh = File::Spec->catfile($updir, "config.sh"); + my %skip; + if (-f $configsh) { + my (%extensions, %known_extensions); + open FH, $configsh or die "Can't open $configsh: $!"; + while () { + if (/^extensions=['"](.*)['"]$/) { + # Deliberate string interpolation to avoid triggering possible + # $1 resetting bugs. + %extensions = _populate_hash ("$1"); + } + elsif (/^known_extensions=['"](.*)['"]$/) { + %known_extensions = _populate_hash ($1); + } + } + if (%extensions) { + if (%known_extensions) { + foreach (keys %known_extensions) { + $skip{$_}++ unless $extensions{$_}; + } + } else { + warn "No known_extensions line found in $configsh"; + } + } else { + warn "No extensions line found in $configsh"; + } + } my $mani = File::Spec->catfile($updir, "MANIFEST"); if (open(MANI, $mani)) { while () { # similar code in t/harness - if (m!^(ext/\S+/?(?:[^/\s]+\.t|test\.pl)|lib/\S+?(?:\.t|test\.pl))\s!) { + if (m!^(ext/(\S+)/+(?:[^/\s]+\.t|test\.pl)|lib/\S+?(?:\.t|test\.pl))\s!) { $t = $1; + $extension = $2; if (!$core || $t =~ m!^lib/[a-z]!) { + if (defined $extension) { + $extension =~ s!/t$!!; + # XXX Do I want to warn that I'm skipping these? + next if $skip{$extension}; + } $path = File::Spec->catfile($updir, $t); push @ARGV, $path; $name{$path} = $t; @@ -149,7 +189,7 @@ elsif ($with_utf16) { unlink($u); if (open(A, $a)) { if (open(U, ">$u")) { - print U pack("$f", 0xFEFF); + print U pack("$f", 0xFEFF) if $b; while () { print U pack("$f*", unpack("C*", $_)); } @@ -248,6 +288,9 @@ EOT open(SCRIPT,"<$test") or die "Can't run $test.\n"; $_ =