Commit 2964f6b816c2 ("selftests: Use ktap helpers for runner.sh") added a
number of bashisms and updated the interpreter specified for the script to
be /bin/bash to reflect this. Unfortunately this does not actually achieve
anything in production since the main way runner.sh is invoked is from the
top level run_kselftest.sh which sources it rather than running it as a
separate script and specifies the shell as /bin/sh. This means that on
systems where /bin/sh is not bash (such as Debian where /bin/sh defaults to
being dash) we see failures:

./run_kselftest.sh: 195: ./kselftest/runner.sh: Syntax error: "(" unexpected 
(expecting "}")

These bashisms come from this part of the change:

      4. In runner.sh run_one(), get the return value and use ktap helpers for
         all pass/fail reporting. This allows counting pass/fail numbers in the
         main process.

which uses a bash array to track all the subtests being run. Convert this
to use a simple flat variable instead.

Fixes: 2964f6b816c2 ("selftests: Use ktap helpers for runner.sh")
Signed-off-by: Mark Brown <[email protected]>
---
 tools/testing/selftests/kselftest/runner.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/kselftest/runner.sh 
b/tools/testing/selftests/kselftest/runner.sh
index 4dfc4271e4ec..50919ce206f3 100644
--- a/tools/testing/selftests/kselftest/runner.sh
+++ b/tools/testing/selftests/kselftest/runner.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 #
 # Runs a set of tests in a given subdirectory.
@@ -192,7 +192,7 @@ run_many()
        DIR="${PWD#${BASE_DIR}/}"
        test_num=0
        local rc
-       pids=()
+       pids=
 
        for TEST in "$@"; do
                BASENAME_TEST=$(basename $TEST)
@@ -203,7 +203,7 @@ run_many()
                fi
                if [ -n "$RUN_IN_NETNS" ]; then
                        run_in_netns &
-                       pids+=($!)
+                       pids="$pids $!"
                else
                        run_one "$DIR" "$TEST" "$test_num"
                fi
@@ -211,7 +211,7 @@ run_many()
 
        # These variables are outputs of ktap_helpers.sh but since we've
        # run the test in a subprocess we need to update them manually
-       for pid in "${pids[@]}"; do
+       for pid in $pids; do
                wait "$pid"
                rc=$?
                case "$rc" in

-- 
2.47.3


Reply via email to