Extend pod/buildtoc --test to validate that regenerated files are up to date.
authorNicholas Clark <nick@ccl4.org>
Sat, 22 Jan 2011 12:21:45 +0000 (12:21 +0000)
committerNicholas Clark <nick@ccl4.org>
Sat, 22 Jan 2011 12:21:45 +0000 (12:21 +0000)
pod/buildtoc
t/porting/buildtoc.t

index 41ca6f8..dd4509d 100644 (file)
@@ -32,8 +32,8 @@ $masterpodfile = abs_from_top('pod.lst');
 # --build-all tries to build everything
 # --build-foo updates foo as follows
 # --showfiles shows the files to be changed
-# --test exit early, exit if perl.pod, pod.lst, MANIFEST are
-#   consistent, die otherwise.
+# --test exit if perl.pod, pod.lst, MANIFEST are consistent, and regenerated
+#   files are up to date, die otherwise.
 
 %Targets
   = (
@@ -251,13 +251,13 @@ close MASTER;
       unless $disk_pods{$i} or $BuildFiles{$i};
   }
   if ($Test) {
-    print "1..1\n";
+    delete $Build{toc};
+    printf "1..%d\n", 1 + scalar keys %Build;
     if (@inconsistent) {
       print "not ok 1\n";
       die @inconsistent
     }
     print "ok 1\n";
-    exit;
   }
   else {
     warn @inconsistent if @inconsistent;
@@ -751,7 +751,14 @@ while (my ($target, $name) = each %Targets) {
 
   if (defined $orig) {
     if ($new eq $orig) {
-      print "Was not modified\n" if $Verbose;
+      if ($Test) {
+       printf "ok %d # $name is up to date\n", $built + 1;
+      } elsif ($Verbose) {
+       print "Was not modified\n";
+      }
+      next;
+    } elsif ($Test) {
+      printf "not ok %d # $name is up to date\n", $built + 1;
       next;
     }
     $mode = (stat $name)[2] // die "$0: Can't stat $name: $!";
@@ -767,4 +774,4 @@ while (my ($target, $name) = each %Targets) {
   }
 }
 
-warn "$0: was not instructed to build anything\n" unless $built;
+warn "$0: was not instructed to build anything\n" unless $built || $Test;
index e1e521d..47fa4a7 100644 (file)
@@ -8,4 +8,4 @@ BEGIN {
 use strict;
 
 my $dotslash = $^O eq "MSWin32" ? ".\\" : "./";
-system("${dotslash}perl -f -Ilib -I../lib pod/buildtoc --build-toc -q --test");
+system("${dotslash}perl -f -Ilib -I../lib pod/buildtoc --build-toc -q --test --build-all");