From: Collin Funk Date: Sat, 2 May 2026 18:44:04 +0000 (-0700) Subject: tests: all: ensure closed stdin is handled appropriately X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=3f650f692406a3ea94e8b9b6356e5d76cb232a8a;p=thirdparty%2Fcoreutils.git tests: all: ensure closed stdin is handled appropriately * tests/misc/close-stdin.sh: New file. * tests/local.mk (all_tests): Add the new test. --- diff --git a/tests/local.mk b/tests/local.mk index 6a70e4dcf4..d72361e40c 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -316,6 +316,7 @@ all_tests = \ tests/basenc/basenc.pl \ tests/basenc/bounded-memory.sh \ tests/basenc/large-input.sh \ + tests/misc/close-stdin.sh \ tests/misc/close-stdout.sh \ tests/chroot/chroot-fail.sh \ tests/cksum/cksum.sh \ diff --git a/tests/misc/close-stdin.sh b/tests/misc/close-stdin.sh new file mode 100755 index 0000000000..1bec15f790 --- /dev/null +++ b/tests/misc/close-stdin.sh @@ -0,0 +1,86 @@ +#!/bin/sh +# Ensure that several programs work fine, even with stdin initially closed. + +# Copyright (C) 2026 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 . + +. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src +getlimits_ + +printf '%s' "\ +basenc --base16 - +basenc --base2lsbf - +basenc --base2msbf - +basenc --base32 - +basenc --base32hex - +basenc --base58 - +basenc --base64 - +basenc --base64url - +cat - +cksum -a blake2b - +cksum -a bsd - +cksum -a crc - +cksum -a crc32b - +cksum -a md5 - +cksum -a sha1 - +cksum -a sha2 -l 256 - +cksum -a sha3 -l 256 - +cksum -a sm3 - +cksum -a sysv - +cksum -c - +comm - - +cut -f1 - +date --file=- +dd +dircolors - +du --files0-from=- +expand - +factor +fmt - +fold - +head -n1 - +join - /dev/null +nl - +numfmt +od - +paste - +pr - +ptx - +shuf - +split - +stty +tac - +tail - +tee +tr a a +tsort +unexpand - +uniq - +wc - +" | +sort -k 1b,1 > all_readers || framework_failure_ + +printf '%s\n' $built_programs | +sort -k 1b,1 > built_programs || framework_failure_ + +join all_readers built_programs > built_writers || framework_failure_ + +while read reader; do + $reader 2>err <&- && fail=1 + ! grep -E "$EBADF" err >/dev/null \ + && { fail=1; cat err; echo "$reader: failed to diagnose EBADF" >&2; } +done < built_writers + +Exit $fail