Tone down the requirements of a test that will go away.
authorRichard Levitte <levitte@openssl.org>
Thu, 23 Apr 2015 09:11:14 +0000 (11:11 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 7 Sep 2015 14:10:58 +0000 (16:10 +0200)
00-check_testexes.t was a way for me to check that I didn't forget a
compiled test app.  The way it worked was to require MINFO to be present.
Considering the need for this test has diminished considerably at this
point, I might as well tone down the requirement, and have it skip the
test (and not fail it) if MINFO isn't present.

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

index 6cbb7b2cabc8879275ca8e6718272b568c435543..5f8f1138ccb824b370fc432300095d38644e8f34 100644 (file)
@@ -11,43 +11,52 @@ setup("check_testexes");
 
 my $MINFO = top_file("MINFO");
 
-plan tests => 2;
-if (ok(open(FH,$MINFO), "MINFO exists")) {
-    subtest 'Finding test scripts for the compiled test binaries' => sub {
-       find_tests(\*FH); close FH;
-    };
-} else {
-    diag("Expected to find $MINFO, please run 'make files' in the top directory");
-}
-
-#-------------
-# test script finder
-sub find_tests {
-    my $fh = shift;
-    while(<$fh>) {
-       chomp;
-       last if /^RELATIVE_DIRECTORY=test$/;
-    }
-    while(<$fh>) {
-       chomp;
-       last if /^EXE=/;
-    }
-
-    s/^EXE=\s*//;
-    s/\s*$//;
-    my %foundfiles =
-       map {
-           my $key = $_;
-           s/_?test$//;
-           s/(sha\d+)t/$1/;
-           $key => top_file("test",
-                            "recipes/[0-9][0-9]-test_$_.t"); } split(/\s+/, $_);
-
-    plan tests => scalar (keys %foundfiles);
-
-    foreach (sort keys %foundfiles) {
-       my @check = glob($foundfiles{$_});
-       ok(scalar @check, "check that a test for $_ exists")
-           || diag("Expected to find something matching $foundfiles{$_}");
-    }
+ 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;
+     }
+
+     plan tests => $numtests;
+
+     skip "because $MINFO found. If you want this test to run, please do 'perl util/mkfiles.pl > $MINFO'", 1
+        unless %foundfiles;
+
+     foreach (sort keys %foundfiles) {
+        my @check = glob($foundfiles{$_});
+        ok(scalar @check, "check that a test for $_ exists")
+            || diag("Expected to find something matching $foundfiles{$_}");
+     }
 }