]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: avoid new "make distcheck" failure due to newer File::Temp
authorJim Meyering <meyering@redhat.com>
Wed, 22 Apr 2009 19:41:10 +0000 (21:41 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 22 Apr 2009 19:45:24 +0000 (21:45 +0200)
With newer perl (e.g., Fedora 10's 4:5.10.0-68.fc10), tests/CuTmpdir.pm
stopped removing its temporary directories, with diagnostics like this:
  cannot remove path when cwd is /c/coreutils/tests/misc/seq.tmp-e2up \
  for /c/coreutils/tests/misc/seq.tmp-e2up: at \
  /usr/lib/perl5/5.10.0/File/Temp.pm line 902
Chdir out of the target directory before that code runs:
* tests/CuTmpdir.pm (END): chdir '..'.
(chmod_tree): Remove explicit "chdir $dir".

tests/CuTmpdir.pm

index 1e52640862976ff48386bf88d1819dc5d717b6d1..0af5d94cf285fac3d9c4f305d03e81254e983f38 100644 (file)
@@ -49,16 +49,9 @@ sub chmod_tree
   defined $dir
     or return;
 
-  if (chdir $dir)
-    {
-      # Perform the equivalent of find . -type d -print0|xargs -0 chmod -R 700.
-      my $options = {untaint => 1, wanted => \&chmod_1};
-      find ($options, '.');
-    }
-  else
-    {
-      warn "$ME: failed to chdir to $dir: $!\n";
-    }
+  # Perform the equivalent of find "$dir" -type d -print0|xargs -0 chmod -R 700.
+  my $options = {untaint => 1, wanted => \&chmod_1};
+  find ($options, $dir);
 }
 
 sub import {
@@ -105,6 +98,11 @@ sub import {
 }
 
 END {
+  # Move cwd out of the directory we're about to remove.
+  # This is required on some systems, and by some versions of File::Temp.
+  chdir '..'
+    or warn "$ME: failed to chdir to .. from $dir: $!\n";
+
   my $saved_errno = $?;
   chmod_tree;
   $? = $saved_errno;