From 8368d46bcadf13dd2c675da8113fcc9400ae12fc Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 30 Apr 2015 19:38:47 +0200 Subject: [PATCH] Rework 00-test_checkexes.t for VMS 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 --- test/recipes/00-check_testexes.t | 69 +++++++++++++------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/test/recipes/00-check_testexes.t b/test/recipes/00-check_testexes.t index 4fc9e1b3af..aa7281a71a 100644 --- a/test/recipes/00-check_testexes.t +++ b/test/recipes/00-check_testexes.t @@ -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() { - chomp; - last if /^RELATIVE_DIRECTORY=test$/; - } - while() { - 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() { + chomp; + last if /^RELATIVE_DIRECTORY=test$/; + } + while() { + 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'"); } } -- GitLab