summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/misc/yes.sh19
1 files changed, 16 insertions, 3 deletions
diff --git a/tests/misc/yes.sh b/tests/misc/yes.sh
index 137159334..a3027432b 100755
--- a/tests/misc/yes.sh
+++ b/tests/misc/yes.sh
@@ -30,9 +30,9 @@ for size in 1 1999 4095 4096 8191 8192 16383 16384; do
done
# Check the many small items case,
-# both fitting and overflowing the internal buffer
-external=env
-if external true $(seq 4000); then
+# both fitting and overflowing the internal buffer.
+# First check that 4000 arguments supported.
+if test 4000 -eq $(sh -c 'echo $#' 0 $(seq 4000)); then
for i in 100 4000; do
seq $i | paste -s -d ' ' | sed p > out.1
yes $(seq $i) | head -n2 > out.2
@@ -40,4 +40,17 @@ if external true $(seq 4000); then
done
fi
+# Check a single appropriate diagnostic is output on write error
+if test -w /dev/full && test -c /dev/full; then
+ # The single output diagnostic expected,
+ # (without the possibly varying :strerror(ENOSPC) suffix).
+ printf '%s\n' "yes: standard output" > exp
+
+ for size in 1 16384; do
+ returns_ 1 yes "$(printf %${size}s '')" >/dev/full 2>errt
+ sed 's/\(yes:.*\):.*/\1/' errt > err
+ compare exp err || fail=1
+ done
+fi
+
Exit $fail