]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: Fix runner.sh busybox support
authorMark Brown <broonie@kernel.org>
Thu, 16 Apr 2026 19:03:58 +0000 (20:03 +0100)
committerShuah Khan <skhan@linuxfoundation.org>
Thu, 16 Apr 2026 21:04:13 +0000 (15:04 -0600)
Commit 2964f6b816c2 ("selftests: Use ktap helpers for runner.sh") added an
import of ktap_helper.sh to runner.sh in order to standardise on these for
output formatting. Rather than build on the existing requirement for the
user to supply BASE_DIR to find the helpers it uses some magic which
features a use of "readlink -e". Unfortunately the -e option is a GNU
extension and is not available in at least busybox, meaning that runner.sh
starts failing:

./run_kselftest.sh: 5: ./kselftest/runner.sh: Bad substitution
./run_kselftest.sh: 5: .: cannot open ./ktap_helpers.sh: No such file

Fix this by using the already required BASE_DIR to locate the helper
library.

Link: https://lore.kernel.org/r/20260416-selftest-fix-readlink-e-v1-1-94e4cabbdec4@kernel.org
Fixes: 2964f6b816c2 ("selftests: Use ktap helpers for runner.sh")
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/kselftest/runner.sh

index 6da3390825fe6338dc7210de1d00ec88f98f04ca..58cd6a738d541766c8552cebeb0344c99c0799f6 100644 (file)
@@ -2,7 +2,16 @@
 # SPDX-License-Identifier: GPL-2.0
 #
 # Runs a set of tests in a given subdirectory.
-. $(dirname "$(readlink -e "${BASH_SOURCE[0]}")")/ktap_helpers.sh
+
+# There isn't a shell-agnostic way to find the path of a sourced file,
+# so we must rely on BASE_DIR being set to find other tools.
+if [ -z "$BASE_DIR" ]; then
+       echo "Error: BASE_DIR must be set before sourcing." >&2
+       exit 1
+fi
+
+. ${BASE_DIR}/kselftest/ktap_helpers.sh
+
 export timeout_rc=124
 export logfile=/dev/stdout
 export per_test_logging=
@@ -14,13 +23,6 @@ export RUN_IN_NETNS=
 # over our soft timeout limit.
 export kselftest_default_timeout=45
 
-# There isn't a shell-agnostic way to find the path of a sourced file,
-# so we must rely on BASE_DIR being set to find other tools.
-if [ -z "$BASE_DIR" ]; then
-       echo "Error: BASE_DIR must be set before sourcing." >&2
-       exit 1
-fi
-
 TR_CMD=$(command -v tr)
 
 # If Perl is unavailable, we must fall back to line-at-a-time prefixing