This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
podcheck.t: Skip broken symbolic links
authorKarl Williamson <public@khwilliamson.com>
Thu, 26 May 2011 18:39:30 +0000 (12:39 -0600)
committerKarl Williamson <public@khwilliamson.com>
Thu, 26 May 2011 18:49:57 +0000 (12:49 -0600)
This stemmed from a build issue in some smokers.  The symbolic link 'U'
was left over.  If another type of file can't be opened, instead of
dying, this now just fails it as one test.

t/porting/podcheck.t

index c985f05..fde9a4b 100644 (file)
@@ -924,6 +924,9 @@ sub extract_pod {   # Extracts just the pod from a file
     # look at instead of being printed
     tie *ALREADY_FH, 'Tie_Array_to_FH', \@pod;
     open my $in_fh, '<:bytes', $filename
+
+        # The file should already have been opened once to get here, so if
+        # fails, just die.
         or die "Can't open '$filename': $!\n";
 
     my $parser = Pod::Parser->new();
@@ -957,8 +960,16 @@ sub is_pod_file {
 
     my $contents = do {
         local $/;
-        open my $candidate, '<:bytes', $_
-            or die "Can't open '$File::Find::name': $!\n";
+        my $candidate;
+        if (! open $candidate, '<:bytes', $_) {
+
+            # If it is a broken symbolic link, just skip the file, as it
+            # is probably just a build problem; certainly not a file that
+            # we would want to check the pod of.  Otherwise fail it here
+            # and no reason to process it further.
+            ok(0, "Can't open '$filename': $!") if ! -l $filename;
+            return;
+        }
         <$candidate>;
     };