)]}'
{
  "commit": "ec4f5bcd74d594f5934614e77809f87b86d1d819",
  "tree": "53aa6f3daeea87ac4e1fd6999d381ab0b51d2c59",
  "parents": [
    "c1f81f28ecfe963bf58d53247933ca736df843cf"
  ],
  "author": {
    "name": "Mark Brown",
    "email": "broonie@kernel.org",
    "time": "Thu Apr 16 18:54:01 2026 +0100"
  },
  "committer": {
    "name": "Mark Brown",
    "email": "broonie@kernel.org",
    "time": "Thu Apr 16 19:14:42 2026 +0100"
  },
  "message": "selftests: Fix runner.sh for non-bash shells\n\nCommit 2964f6b816c2 (\"selftests: Use ktap helpers for runner.sh\") added a\nnumber of bashisms and updated the interpreter specified for the script to\nbe /bin/bash to reflect this. Unfortunately this does not actually achieve\nanything in production since the main way runner.sh is invoked is from the\ntop level run_kselftest.sh which sources it rather than running it as a\nseparate script and specifies the shell as /bin/sh. This means that on\nsystems where /bin/sh is not bash (such as Debian where /bin/sh defaults to\nbeing dash) we see failures:\n\n./run_kselftest.sh: 195: ./kselftest/runner.sh: Syntax error: \"(\" unexpected (expecting \"}\")\n\nThese bashisms come from this part of the change:\n\n      4. In runner.sh run_one(), get the return value and use ktap helpers for\n         all pass/fail reporting. This allows counting pass/fail numbers in the\n         main process.\n\nwhich uses a bash array to track all the subtests being run. Convert this\nto use a simple flat variable instead.\n\nFixes: 2964f6b816c2 (\"selftests: Use ktap helpers for runner.sh\")\nSigned-off-by: Mark Brown \u003cbroonie@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4dfc4271e4ec69d6f10e61f211d52e0268916726",
      "old_mode": 33188,
      "old_path": "tools/testing/selftests/kselftest/runner.sh",
      "new_id": "50919ce206f3de3c90b04ae407638894d2fc7215",
      "new_mode": 33188,
      "new_path": "tools/testing/selftests/kselftest/runner.sh"
    }
  ]
}
