From 204e41ed504b6deb370bdbf85fd988c03eff363b Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 23 Apr 2015 11:11:14 +0200 Subject: [PATCH 1/1] Tone down the requirements of a test that will go away. 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 --- test/recipes/00-check_testexes.t | 87 ++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 39 deletions(-) diff --git a/test/recipes/00-check_testexes.t b/test/recipes/00-check_testexes.t index 6cbb7b2cab..5f8f1138cc 100644 --- a/test/recipes/00-check_testexes.t +++ b/test/recipes/00-check_testexes.t @@ -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() { + 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; + } + + 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{$_}"); + } } -- 2.34.1