This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
podcheck.t: Move perldelta placeholder link checks
authorKarl Williamson <public@khwilliamson.com>
Wed, 27 Jul 2011 15:34:28 +0000 (09:34 -0600)
committerKarl Williamson <public@khwilliamson.com>
Wed, 27 Jul 2011 17:42:27 +0000 (11:42 -0600)
podcheck has the capability to ignore certain broken links in
perldelta.pod.  This is because this pod is special, initialized to a
template with various placeholder text including links that are to
eventually be changed to their correct values.  One of the final steps
in making a release is to clean it up, removing any of these links that
haven't been changed, and hence don't apply to the current release.

To lessen the number of steps in making a release, a list of these links is
hard-coded into podcheck, and it doesn't warn on those.  The check to
skip these links prior to this commit did not easily allow links of the
form page/node to be checked for.

t/porting/podcheck.t

index 873e810..e593424 100644 (file)
@@ -826,10 +826,24 @@ package My::Pod::Checker {      # Extend Pod::Checker
     sub hyperlink {
         my $self = shift;
 
-        # If the hyperlink is to an interior node of another page, save it
-        # so that we can see if we need to parse normally skipped files.
-        $has_referred_to_node{$_[0][1]{'-page'}} = 1
-                            if $_[0] && $_[0][1]{'-page'} && $_[0][1]{'-node'};
+        my $page;
+        if ($_[0] && ($page = $_[0][1]{'-page'})) {
+            my $node = $_[0][1]{'-node'};
+
+            # If the hyperlink is to an interior node of another page, save it
+            # so that we can see if we need to parse normally skipped files.
+            $has_referred_to_node{$page} = 1 if $node;
+
+            # Ignore certain placeholder links in perldelta.  Check if the
+            # link is page-level, and also check if to a node within the page
+            if ($self->name && $self->name eq "perldelta"
+                && ((grep { $page eq $_ } @perldelta_ignore_links)
+                    || ($node
+                        && (grep { "$page/$node" eq $_ } @perldelta_ignore_links)
+            ))) {
+                return;
+            }
+        }
         return $self->SUPER::hyperlink($_[0]);
     }
 
@@ -1519,9 +1533,7 @@ if (! $has_input_files) {
                 if (! defined $NAME) {
                     $checker->poderror(\%problem);
                 }
-                elsif ($NAME ne "perldelta"
-                    || ! grep { $linked_to_page eq $_ } @perldelta_ignore_links)
-                {
+                else {
                     if ($nodes{$NAME}{$linked_to_page}) {
                         $problem{-msg} =  $broken_internal_link;
                     }