From aaae9d0db6cd20d40f50dbc449cedc6dd43c73e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?=
Date: Tue, 7 Apr 2026 12:20:10 +0100 Subject: [PATCH] tests: cat: avoid false failure on systems without splice * tests/cat/splice.sh: Ensure splice is called multiple times before we check specific invocation counts. On Linux kernel 5.10 for example, splice from /dev/zero returns EINVAL. --- tests/cat/splice.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/cat/splice.sh b/tests/cat/splice.sh index 513a33181..55b96711b 100755 --- a/tests/cat/splice.sh +++ b/tests/cat/splice.sh @@ -27,9 +27,16 @@ if timeout 10 true; then test $? = 124 || fail=1 fi +# Verify splice is called multiple times, +# and doesn't just fall back after the first EINVAL. +# This also implicitly handles systems without splice at all. +strace -o splice_count -e splice cat /dev/zero | head -c1M >/dev/null +splice_count=$(grep '^splice' splice_count | wc -l) + # Test that splice errors are diagnosed. # Odd numbers are for input, even for output -if strace -o /dev/null -e inject=splice:error=EIO:when=3 true; then +if test "$splice_count" -gt 1 && + strace -o /dev/null -e inject=splice:error=EIO:when=3 true; then for when in 3 4; do test "$when" = 4 && efile='write error' || efile='/dev/zero' printf 'cat: %s: %s\n' "$efile" "$EIO" > exp || framework_failure_