Rework 00-test_checkexes.t for VMS
authorRichard Levitte <levitte@openssl.org>
Thu, 30 Apr 2015 17:38:47 +0000 (19:38 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 7 Sep 2015 14:10:58 +0000 (16:10 +0200)
Unfortunately, a file spec with character range globs interfere with
paths on VMS, and are therefore disabled.  Rework this test to collect
a list of expected tests and a list of all recipes and compare the two
using grep.

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/recipes/00-check_testexes.t

index 4fc9e1b..aa7281a 100644 (file)
@@ -3,6 +3,7 @@
 use strict;
 
 use File::Spec::Functions;
+use File::Basename;
 use OpenSSL::Test qw/:DEFAULT top_file/;
 
 setup("check_testexes");
@@ -10,51 +11,35 @@ setup("check_testexes");
 my $MINFO = top_file("MINFO");
 
  SKIP: {
-     my %foundfiles;
-     my $numtests = 1;
-
-     if (open(FH,$MINFO)) {
-        while(<FH>) {
-            chomp;
-            last if /^RELATIVE_DIRECTORY=test$/;
-        }
-        while(<FH>) {
-            chomp;
-            last if /^EXE=/;
-        }
-        close FH;
-
-        my $pathfix = sub { return shift; }; # noop
-        if ($^O eq "MSWin32") {
-            # Experience has shown that glob needs the backslashes escaped
-            # to handle the glob glob() gets served.  Otherwise, it sometimes
-            # considers the backslash an escape of the next character, most
-            # notably the [.
-            # (if the single backslash is followed by a *, however, the *
-            # doesn't seem to be considered escaped...  go figure...)
-            $pathfix = sub { shift; s/\\/\\\\/g; return $_; };
-        }
-        s/^EXE=\s*//;
-        s/\s*$//;
-        %foundfiles =
-            map {
-                my $key = $_;
-                s/_?test$//;
-                s/(sha\d+)t/$1/;
-                $key =>
-                    $pathfix->(top_file("test", "recipes",
-                                        "[0-9][0-9]-test_$_.t")); } split(/\s+/, $_);
-        $numtests = scalar keys %foundfiles;
+     skip "because $MINFO not found. If you want this test to run, please do 'perl util/mkfiles.pl > $MINFO'"
+        unless open(FH,$MINFO);
+
+     while(<FH>) {
+        chomp;
+        last if /^RELATIVE_DIRECTORY=test$/;
+     }
+     while(<FH>) {
+        chomp;
+        last if /^EXE=/;
      }
+     close FH;
+
+     s/^EXE=\s*//;
+     s/\s*$//;
+     my @expected_tests =
+        map { s/\..*$//;       # Remove extension
+              s/_?test$//;     # Remove possible underscore
+              s/(sha\d+)t/$1/; # sha comes with no t at the end
+              $_; } split(/\s+/, $_);
 
-     plan tests => $numtests;
+     plan tests => scalar @expected_tests;
 
-     skip "because $MINFO not found. If you want this test to run, please do 'perl util/mkfiles.pl > $MINFO'", 1
-        unless %foundfiles;
+     my @found_tests =
+        map { basename($_) } glob(top_file("test", "recipes", "*.t"));
 
-     foreach (sort keys %foundfiles) {
-        my @check = glob($foundfiles{$_});
-        ok(scalar @check, "check that a test for $_ exists")
-            || diag("Expected to find something matching $foundfiles{$_}");
+     foreach my $test (sort @expected_tests) {
+        ok(scalar(grep(/^[0-9][0-9]-test_$test\.t$/, @found_tests)),
+           "check that a test for $test exists")
+            || diag("Expected to find something matching '[0-9][0-9]-test_$test.t'");
      }
 }