]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: don't make tail's pipe-f2 test take the full 10 seconds
authorJim Meyering <meyering@redhat.com>
Fri, 28 Oct 2011 16:06:44 +0000 (18:06 +0200)
committerJim Meyering <meyering@redhat.com>
Sat, 29 Oct 2011 06:32:11 +0000 (08:32 +0200)
* tests/tail-2/pipe-f2: Don't always wait 10 seconds.
Before, this test would always wait 10 seconds.
Now, it stops early when it detects that tail -f has written output.
BTW, the race condition that prompted changing the timeout from 1 second
to 10 was that tail -f could be killed by the timeout before producing
any output.

tests/tail-2/pipe-f2

index f1ae470158c0c09c65de7dc1c608b3e373fb4504..3421798b4392bb0f2ce6e7c983ef9d12a4e2c222 100755 (executable)
@@ -24,9 +24,20 @@ mkfifo_or_skip_ fifo
 echo 1 > fifo &
 echo 1 > exp || framework_failure_
 
-timeout 10 tail -f fifo > out
-test $? = 124 || fail=1
+timeout 10 tail -f fifo > out & pid=$!
+
+check_tail_output()
+{
+  local n_sec="$1"
+  test -s out || { sleep $n_sec; return 1; }
+}
+
+# Wait 6.3s for tail to write something.
+retry_delay_ check_tail_output .1 7 || fail=1
 
 compare out exp || fail=1
 
+# Kill the still-running tail, or fail if it's gone.
+kill $pid || fail=1
+
 Exit $fail