From: Jim Meyering Date: Wed, 22 Apr 2009 19:41:10 +0000 (+0200) Subject: tests: avoid new "make distcheck" failure due to newer File::Temp X-Git-Tag: v7.3~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ad7da759490a5680844e1e4b6b4ac1d13b95d3b;p=thirdparty%2Fcoreutils.git tests: avoid new "make distcheck" failure due to newer File::Temp 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". --- diff --git a/tests/CuTmpdir.pm b/tests/CuTmpdir.pm index 1e52640862..0af5d94cf2 100644 --- a/tests/CuTmpdir.pm +++ b/tests/CuTmpdir.pm @@ -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;