mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-16 04:12:26 +02:00
tests: fail rather than infloop in tail's inotify-rotate test
* tests/tail-2/inotify-rotate: Switch to new init.sh-based framework. (grep_timeout): New function. Use it in place of open-coded loops that might infloop. This was prompted by my encountering an inexplicable, and so far unreproducible, infloop in the code that was waiting for "b" to appear in "out".
This commit is contained in:
@@ -21,9 +21,21 @@ if test "$VERBOSE" = yes; then
|
||||
tail --version
|
||||
fi
|
||||
|
||||
. $srcdir/test-lib.sh
|
||||
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
||||
expensive_
|
||||
|
||||
# Wait up to 10 seconds for grep REGEXP FILE to succeed.
|
||||
# Usage: grep_timeout REGEXP FILE
|
||||
grep_timeout()
|
||||
{
|
||||
local j
|
||||
for j in $(seq 100); do
|
||||
grep $1 $2 > /dev/null && return 0
|
||||
sleep 0.1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# For details, see
|
||||
# http://lists.gnu.org/archive/html/bug-coreutils/2009-11/msg00213.html
|
||||
|
||||
@@ -37,17 +49,15 @@ for i in $(seq 50); do
|
||||
sleep .1
|
||||
echo b > k;
|
||||
# wait for b to appear in out
|
||||
grep_timeout b out || fail_ failed to find b in out
|
||||
while :; do grep b out > /dev/null && break; done
|
||||
mv x k
|
||||
# wait for tail to detect the rename
|
||||
while :; do grep tail: out > /dev/null && break; done
|
||||
grep_timeout tail: out || fail_ failed to detect rename
|
||||
echo ok >> k
|
||||
found=0
|
||||
# wait up to 10 seconds for "ok" to appear in out
|
||||
for j in $(seq 100); do
|
||||
grep ok out > /dev/null && { found=1; break; }
|
||||
sleep 0.1
|
||||
done
|
||||
grep_timeout ok out && found=1
|
||||
kill $pid
|
||||
test $found = 0 && { fail=1; cat out; break; }
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user