This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update PathTools to CPAN version 3.60
[perl5.git] / Porting / checkcfgvar.pl
index 9807cdf..4dc93df 100755 (executable)
@@ -24,13 +24,18 @@ use Getopt::Long;
 my $opt_l = 0;
 my $opt_r = 0;
 my $default;
+my $tap = 0;
+my $test;
 GetOptions (
     "help|?"   => sub { usage (0); },
     "l|list!"  => \$opt_l,
     "regen"    => \$opt_r,
     "default=s" => \$default,
+    "tap"      => \$tap,
     ) or usage (1);
 
+$default and $default =~ s/^'(.*)'$/$1/; # Will be quoted on generation
+
 require 'regen/regen_lib.pl' if $opt_r;
 
 my $MASTER_CFG = "config_h.SH";
@@ -43,17 +48,13 @@ my @CFG = (
           # We can't base our check on $], because that's the version of the
           # perl that we are running, not the version of the source tree.
           "Cross/config.sh-arm-linux",
-          "epoc/config.sh",
           "NetWare/config.wc",
           "symbian/config.sh",
           "uconfig.sh",
           "uconfig64.sh",
           "plan9/config_sh.sample",
           "win32/config.gc",
-          "win32/config.gc64",
-          "win32/config.gc64nox",
           "win32/config.vc",
-          "win32/config.vc64",
           "win32/config.ce",
           "configure.com",
           "Porting/config.sh",
@@ -84,6 +85,8 @@ my %MANIFEST;
     close $fh;
 }
 
+printf "1..%d\n", 2 * @CFG if $tap;
+
 for my $cfg (sort @CFG) {
     unless (exists $MANIFEST{$cfg}) {
        print STDERR "[skipping not-expected '$cfg']\n";
@@ -127,10 +130,16 @@ for my $cfg (sort @CFG) {
     }
     close $fh;
 
+    ++$test;
     my $missing;
-    if ($cfg eq 'configure.com'
-       || join("", @{$lines[1]}) eq join("", sort @{$lines[1]})) {
-       # All is good with the world.
+    if ($cfg eq 'configure.com') {
+       print "ok $test # skip $cfg doesn't need to be sorted\n"
+           if $tap;
+    } elsif (join("", @{$lines[1]}) eq join("", sort @{$lines[1]})) {
+       print "ok $test - $cfg sorted\n"
+           if $tap;
+    } elsif ($tap) {
+       print "not ok $test - $cfg is not sorted\n";
     } elsif ($opt_r || $opt_l) {
        # A reference to an empty array is true, hence this flags the
        # file for later attention by --regen and --list, even if
@@ -145,8 +154,11 @@ for my $cfg (sort @CFG) {
        push @$missing, $v unless exists $cfg{$v};
     }
 
+    ++$test;
     if ($missing) {
-       if ($opt_l) {
+       if ($tap) {
+           print "not ok $test - $cfg missing keys @$missing\n";
+       } elsif ($opt_l) {
            # print the name once, however many problems
            print "$cfg\n";
        } elsif ($opt_r && $cfg ne 'configure.com') {
@@ -164,5 +176,7 @@ for my $cfg (sort @CFG) {
        } else {
            print "$cfg: missing '$_'\n" foreach @$missing;
        }
+    } elsif ($tap) {
+       print "ok $test - $cfg has no missing keys\n";
     }
 }