1
0
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:
Jim Meyering
2010-06-30 17:10:07 +02:00
parent b062bbd947
commit 7336920dd0

View File

@@ -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