summaryrefslogtreecommitdiff
path: root/t/TEST
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2004-10-31 14:37:46 +0000
committerNicholas Clark <nick@ccl4.org>2004-10-31 14:37:46 +0000
commit6234cb77344e822f4c34885de4971401d9a78b0b (patch)
tree4a153412e25e23eb8b1c02e556f8db60b3cd0b33 /t/TEST
parent181f6ff5f88de6db5f8bade64a581afc9c32fcfc (diff)
downloadperl-6234cb77344e822f4c34885de4971401d9a78b0b.tar.gz
Make TEST and harness skip tests for extensions that were not
configured. Currently this skipping is silent - maybe they should report what they are skipping. p4raw-id: //depot/perl@23448
Diffstat (limited to 't/TEST')
-rwxr-xr-xt/TEST42
1 files changed, 41 insertions, 1 deletions
diff --git a/t/TEST b/t/TEST
index fb3adb932f..38afe6f691 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 (<FH>) {
+ 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 (<MANI>) { # 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;