aboutsummaryrefslogtreecommitdiff
path: root/bin/sh/tests/builtins/read11.0
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sh/tests/builtins/read11.0')
-rw-r--r--bin/sh/tests/builtins/read11.019
1 files changed, 17 insertions, 2 deletions
diff --git a/bin/sh/tests/builtins/read11.0 b/bin/sh/tests/builtins/read11.0
index 5bae80318b15..07bd3e70644c 100644
--- a/bin/sh/tests/builtins/read11.0
+++ b/bin/sh/tests/builtins/read11.0
@@ -1,3 +1,5 @@
+# Verify that `read -t 0 v` succeeds immediately if input is available
+# and fails immediately if not
set -e
@@ -6,12 +8,25 @@ trap 'rm -rf "$T"' 0
cd $T
mkfifo fifo1
# Open fifo1 for writing
-{ sleep 10; } >fifo1 &
+{ echo new_value; sleep 10; } >fifo1 &
# Wait for the child to open fifo1 for writing
exec 3<fifo1
+
+v=original_value
+r=0
+ts=$(date +%s%3N)
+read -t 0 v <&3 || r=$?
+te=$(date +%s%3N)
+[ "$r" -eq 0 ]
+[ $((te-ts)) -lt 250 ]
+[ "$v" = "new_value" ]
+
v=original_value
r=0
+ts=$(date +%s%3N)
read -t 0 v <&3 || r=$?
+te=$(date +%s%3N)
kill -TERM "$!" || :
-{ [ "$r" -gt 128 ] && [ "$(kill -l "$r")" = ALRM ]; } || exit
+[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = ALRM ]
+[ $((te-ts)) -lt 250 ]
[ -z "$v" ]