]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: tee -p: add test for early exit with closed pipes
authorPádraig Brady <P@draigBrady.com>
Tue, 3 Jan 2023 17:06:45 +0000 (18:06 +0100)
committerPádraig Brady <P@draigBrady.com>
Tue, 28 Feb 2023 14:02:42 +0000 (14:02 +0000)
* tests/misc/tee.sh: Add a test for the new iopoll logic
to detect closed outputs and exit early without needing
further input.

tests/misc/tee.sh

index b965231866ab84498675797ce2a9760ea0dea968..30d64a9d2f2a1475344ebb2bf25c6c2b5489f223 100755 (executable)
@@ -63,6 +63,16 @@ if test -w /dev/full && test -c /dev/full; then
   test $(wc -l < err) = 1 || { cat err; fail=1; }
 fi
 
+# Test iopoll-powered early exit for closed pipes
+tee_exited() { sleep $1; test -f tee.exited; }
+# Currently this functionality is most useful with
+# intermittent input from a terminal, but here we
+# use an input pipe that doesn't write anything
+# but will exit as soon as tee does, or it times out
+retry_delay_ tee_exited .1 7 | # 12.7s (Must be > following timeout)
+{ timeout 10 tee -p 2>err && touch tee.exited; } | :
+test $(wc -l < err) = 0 || { cat err; fail=1; }
+test -f tee.exited || fail=1
 
 # Ensure tee honors --output-error modes
 mkfifo_or_skip_ fifo