This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
prevent lib/File/stat.t from aborting at END on cygwin
authorTony Cook <tony@develop-help.com>
Tue, 11 Jun 2013 12:38:43 +0000 (22:38 +1000)
committerTony Cook <tony@develop-help.com>
Tue, 11 Jun 2013 12:38:43 +0000 (22:38 +1000)
cygwin appears to be unique in that it uses fast_abs_path() for
abs_path() and vaguely follows POSIX semantics on directory permissions.

Previously the tempdir created would be chmod() to 0600 (non-executable)
and fast_abs_path() would croak when it couldn't chdir into the
directory.

lib/File/stat.t

index b85ff95..264ecd1 100644 (file)
@@ -112,6 +112,8 @@ foreach ([file => $file],
     my ($what, $pathname) = @$_;
     test_X_ops($pathname, "for $what $pathname");
 
+    my $orig_mode = (CORE::stat $pathname)[2];
+
     my $mode = 01000;
     while ($mode) {
         $mode >>= 1;
@@ -119,8 +121,8 @@ foreach ([file => $file],
         chmod $mode, $pathname or die "Can't chmod $mode_oct $pathname: $!";
         test_X_ops($pathname, "for $what with mode=$mode_oct");
     }
-    chmod 0600, $pathname
-        or die "Can't restore permissions on $pathname to 0600";
+    chmod $orig_mode, $pathname
+        or die "Can't restore permissions on $pathname to ", sprintf("%#o", $orig_mode);
 }
 
 SKIP: {