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{$_}");
+ }
}