]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: fix recent false failure due to a race
authorPádraig Brady <P@draigBrady.com>
Wed, 20 Apr 2016 16:00:47 +0000 (17:00 +0100)
committerPádraig Brady <P@draigBrady.com>
Wed, 20 Apr 2016 16:08:36 +0000 (17:08 +0100)
* tests/cp/parent-perm-race.sh: This new race introduced in
commit v8.25-5-g632eda5 is quite hard to hit, but is due to
`ls > fifo` doing write()/close()/exit() once `cp` has
open() the source fifo.  Then the subsequent comparison of the
destination file may fail due to the file being missing or empty.
Previously `ls` generated output that was independent of `cp`.
Now we must wait for `cp` to finish before inspecting the
destination file that it wrote.

tests/cp/parent-perm-race.sh

index 0d0841c2e8b17c2d6ca892883d5e0d7d476d29a9..8d09329a19b74097f204acb3c86871b1e024c04f 100755 (executable)
@@ -43,6 +43,8 @@ do
   # $d/attr and has started to read the source file $attr/fifo.
   timeout 10 sh -c "ls -ld d/$attr >$attr/fifo" || fail=1
 
+  wait $pid || fail=1
+
   ls_output=$(cat d/$attr/fifo) || fail=1
   case $attr,$ls_output in
   ownership,d???--[-S]--[-S]* | \
@@ -52,8 +54,6 @@ do
   *)
     fail=1;;
   esac
-
-  wait $pid || fail=1
 done
 
 Exit $fail