mirror of
https://https.git.savannah.gnu.org/git/coreutils.git
synced 2026-01-27 01:44:21 +00:00
tests: ensure utilties exit promptly upon write error
* tests/local.mk: Reference the new test. * tests/misc/write-errors.sh: A new test to ensure utilities exit promptly upon writing to /dev/full.
This commit is contained in:
parent
c0e7e4a1d4
commit
ef47b928d0
@ -174,6 +174,7 @@ all_tests = \
|
||||
tests/cp/no-ctx.sh \
|
||||
tests/tty/tty-eof.pl \
|
||||
tests/misc/read-errors.sh \
|
||||
tests/misc/write-errors.sh \
|
||||
tests/tail/inotify-hash-abuse.sh \
|
||||
tests/tail/inotify-hash-abuse2.sh \
|
||||
tests/tail/F-vs-missing.sh \
|
||||
|
||||
70
tests/misc/write-errors.sh
Executable file
70
tests/misc/write-errors.sh
Executable file
@ -0,0 +1,70 @@
|
||||
#!/bin/sh
|
||||
# Make sure all of these programs promptly diagnose write errors.
|
||||
|
||||
# Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
||||
print_ver_ timeout
|
||||
|
||||
if ! test -w /dev/full || ! test -c /dev/full; then
|
||||
skip_ '/dev/full is required'
|
||||
fi
|
||||
|
||||
# Writers that may output data indefinitely
|
||||
# First word in command line is checked against built programs
|
||||
echo "\
|
||||
cat /dev/zero
|
||||
# TODO: comm -z /dev/zero /dev/zero
|
||||
# TODO: cut -z -c1- /dev/zero
|
||||
dd if=/dev/zero
|
||||
expand /dev/zero
|
||||
# TODO: avoid double error from expand
|
||||
factor --version; yes 1 | factor
|
||||
# TODO: avoid double error from factor
|
||||
# TODO: fmt /dev/zero
|
||||
# TODO: fold -b /dev/zero
|
||||
head -z -n-1 /dev/zero
|
||||
# TODO: join -a 1 -z /dev/zero /dev/null
|
||||
# TODO: nl --version; yes | nl
|
||||
# TODO: numfmt --version; yes 1 | numfmt
|
||||
# TODO: od -v /dev/zero
|
||||
paste /dev/zero
|
||||
# TODO: avoid double error from paste
|
||||
# TODO: pr /dev/zero
|
||||
seq inf
|
||||
# TODO: avoid double error from shuf
|
||||
tail -n+1 -z /dev/zero
|
||||
tee < /dev/zero
|
||||
tr . . < /dev/zero
|
||||
# TODO: avoid double error from tr
|
||||
unexpand /dev/zero
|
||||
# TODO: avoid double error from unexpand
|
||||
# TODO: uniq -z -D /dev/zero
|
||||
yes
|
||||
" |
|
||||
sort -k 1b,1 > all_writers || framework_failure_
|
||||
|
||||
printf '%s\n' $built_programs |
|
||||
sort -k 1b,1 > built_programs || framework_failure_
|
||||
|
||||
join all_writers built_programs > built_writers || framework_failure_
|
||||
|
||||
while read writer; do
|
||||
timeout 10 $SHELL -c "$writer > /dev/full"
|
||||
test $? = 124 && { fail=1; echo "$writer: failed to exit" >&2; }
|
||||
done < built_writers
|
||||
|
||||
Exit $fail
|
||||
Loading…
x
Reference in New Issue
Block a user