tests: cleanup rm -rf fails under NFS
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 3 Dec 2010 19:08:48 +0000 (11:08 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 3 Dec 2010 19:09:27 +0000 (11:09 -0800)
This problem was observed on RHEL 5.5 x86-64 when running as a
client of a NetApp FAS2050.
* tests/cp/cp-mv-backup: Don't leave a file descriptor open to
a file in a directory that will be cleaned up with "rm -rf".
Under NFS, when the rm unlinks that file, it is instead renamed
to .nfsXXXX and then rm cannot remove the parent directory,
and the test fails.
* tests/cp/same-file: Likewise.

tests/cp/cp-mv-backup
tests/cp/same-file

index d775685..a1b2efe 100755 (executable)
@@ -28,7 +28,7 @@ umask 022
 actual=actual
 expected=expected
 
-exec 1> $actual
+exec 3>&1 1> $actual
 
 for prog in cp mv; do
   for initial_files in 'x' 'x y' 'x y y~' 'x y y.~1~' 'x y y~ y.~1~'; do
@@ -85,6 +85,8 @@ EOF
 
 sed 's/: x/:/' $expected-tmp |cat $expected-tmp - > $expected
 
+exec 1>&3 3>&-
+
 compare $expected $actual || fail=1
 
 Exit $fail
index 873ac2d..7a8fe68 100755 (executable)
@@ -42,7 +42,7 @@ test $hard_link_to_symlink_does_the_deref = yes \
 actual=actual-$$
 expected=expected-$$
 
-exec 1> $actual
+exec 3>&1 1> $actual
 
 # FIXME: This should be bigger: like more than 8k
 contents=XYZ
@@ -216,6 +216,7 @@ cat <<\EOF | sed "$remove_these_sed" > $expected
 
 EOF
 
+exec 1>&3 3>&-
 
 compare $expected $actual 1>&2 || fail=1