modify xt/x90cmpversion.t to produce a report on sub-modules updated
authorTony Cook <tony@develop-help.com>
Sun, 19 May 2013 02:52:04 +0000 (12:52 +1000)
committerTony Cook <tony@develop-help.com>
Sun, 19 May 2013 02:52:04 +0000 (12:52 +1000)
xt/x90cmpversion.t

index 202da2a..5262919 100644 (file)
@@ -4,11 +4,19 @@ use Test::More;
 use ExtUtils::MakeMaker;
 use ExtUtils::Manifest 'maniread';
 use File::Spec::Functions qw(devnull);
+use Getopt::Long;
 
-my $last_tag = `git describe --abbrev=0`;
-chomp $last_tag;
+my $report;
+GetOptions("r" => \$report);
 
-$last_tag
+my $last_tag = shift;
+
+unless ($last_tag) {
+  $last_tag = `git describe --abbrev=0`;
+  chomp $last_tag;
+}
+
+-d ".git"
   or plan skip_all => "Only usable in a git checkout";
 
 my $mani = maniread();
@@ -20,37 +28,45 @@ my $subdir_re = "^(?:" . join("|", @subdirs) . ")/";
 my @pm_files = sort
   grep /\.pm$/ && !/$subdir_re/ && !/^t\// && $_ ne 'Imager.pm', keys %$mani;
 
-plan tests => scalar(@subdirs) + scalar(@pm_files);
+plan tests => scalar(@subdirs) + scalar(@pm_files)
+  unless $report;
 
 for my $dir (@subdirs) {
   my @changes = `git log --abbrev --oneline $last_tag..HEAD $dir`;
   my @more_changes = `git status --porcelain $dir`;
- SKIP:
-  {
-    @changes || @more_changes
-      or skip "No changes for $dir", 1;
-    my $vfile = "$dir/$dir.pm";
-    my $current = eval { MM->parse_version($vfile) };
-    my $last_rel_content = get_file_from_git($vfile, $last_tag);
-    my $last = eval { MM->parse_version(\$last_rel_content) };
-    unless (isnt($current, $last, "$dir updated, $vfile version bump")) {
-      diag(@changes, @more_changes);
+  if ($report) {
+    print "$dir updated\n" if @changes || @more_changes;
+  }
+  else {
+  SKIP:
+    {
+      @changes || @more_changes
+       or skip "No changes for $dir", 1;
+      my $vfile = "$dir/$dir.pm";
+      my $current = eval { MM->parse_version($vfile) };
+      my $last_rel_content = get_file_from_git($vfile, $last_tag);
+      my $last = eval { MM->parse_version(\$last_rel_content) };
+      unless (isnt($current, $last, "$dir updated, $vfile version bump")) {
+       diag(@changes, @more_changes);
+      }
     }
   }
 }
 
-for my $file (@pm_files) {
-  my @changes = `git log --abbrev --oneline $last_tag..HEAD $file`;
-  my @more_changes = `git status --porcelain $file`;
- SKIP:
-  {
-    @changes || @more_changes
-      or skip "No changes for $file", 1;
-    my $current = eval { MM->parse_version($file) };
-    my $last_rel_content = get_file_from_git($file, $last_tag);
-    my $last = eval { MM->parse_version(\$last_rel_content) };
-    unless (isnt($current, $last, "$file updated, version bump")) {
-      diag(@changes, @more_changes);
+unless ($report) {
+  for my $file (@pm_files) {
+    my @changes = `git log --abbrev --oneline $last_tag..HEAD $file`;
+    my @more_changes = `git status --porcelain $file`;
+  SKIP:
+    {
+      @changes || @more_changes
+       or skip "No changes for $file", 1;
+      my $current = eval { MM->parse_version($file) };
+      my $last_rel_content = get_file_from_git($file, $last_tag);
+      my $last = eval { MM->parse_version(\$last_rel_content) };
+      unless (isnt($current, $last, "$file updated, version bump")) {
+       diag(@changes, @more_changes);
+      }
     }
   }
 }