From b48ec50b504829d4e643accb4a25b746a7399801 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?=
Date: Fri, 10 Apr 2026 17:15:01 +0100
Subject: [PATCH] tests: validate command responsiveness
* tests/misc/responsive.sh: Test commands that should output immediately
upon receiving input, and that there is no unecessary buffering.
* cfg.mk: Avoid false failure in sc_prohibit_test_backticks.
* tests/local.mk: Reference the new test.
---
cfg.mk | 3 +-
tests/local.mk | 1 +
tests/misc/responsive.sh | 85 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 88 insertions(+), 1 deletion(-)
create mode 100755 tests/misc/responsive.sh
diff --git a/cfg.mk b/cfg.mk
index aa2c86e23d..ba52ebbad1 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -971,8 +971,9 @@ exclude_file_name_regexp--sc_prohibit_continued_string_alpha_in_column_1 = \
^src/(system\.h|od\.c|printf\.c|getlimits\.c)$$
_cksum = ^tests/cksum/cksum-base64\.pl$$
+_tb_misc = misc/(stdbuf|responsive)
exclude_file_name_regexp--sc_prohibit_test_backticks = \
- ^tests/(local\.mk|(init|misc/stdbuf|factor/create-test)\.sh)$$|$(_cksum)
+ ^tests/(local\.mk|(init|$(_tb_misc)|factor/create-test)\.sh)$$|$(_cksum)
# Exempt test.c, since it's nominally shared, and relatively static.
exclude_file_name_regexp--sc_prohibit_operator_at_end_of_line = \
diff --git a/tests/local.mk b/tests/local.mk
index 2bf49a143e..17059068be 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -184,6 +184,7 @@ all_tests = \
tests/misc/tty-eof.pl \
tests/misc/io-errors.sh \
tests/misc/read-errors.sh \
+ tests/misc/responsive.sh \
tests/misc/warning-errors.sh \
tests/misc/write-errors.sh \
tests/tail/basic-seek.sh \
diff --git a/tests/misc/responsive.sh b/tests/misc/responsive.sh
new file mode 100755
index 0000000000..a63b55ca1b
--- /dev/null
+++ b/tests/misc/responsive.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# Make sure all of these programs are responsive to input
+
+# 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