diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 94f9e040b..e311a8ca7 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1258,7 +1258,7 @@ MSG if [[ "$CONTAINER_CLI" == "podman" ]]; then "$CONTAINER_CLI" run --rm -it \ - "${container_run_namespace_args[@]}" \ + "${container_run_namespace_args[@]+"${container_run_namespace_args[@]}"}" \ "${container_run_user_args[@]}" \ "${container_extra_run_args[@]+${container_extra_run_args[@]}}" \ -e HOME=/zeroclaw-data \ diff --git a/scripts/ci/tests/test_ci_scripts.py b/scripts/ci/tests/test_ci_scripts.py index 8ce2f8e11..6f3fb06ed 100644 --- a/scripts/ci/tests/test_ci_scripts.py +++ b/scripts/ci/tests/test_ci_scripts.py @@ -3428,6 +3428,16 @@ class CiScriptsBehaviorTest(unittest.TestCase): self.assertIn("required_checks.rc", joined) self.assertIn("required_checks.stable", joined) + def test_bootstrap_uses_bash32_safe_optional_array_expansion(self) -> None: + bootstrap = (ROOT / "scripts" / "bootstrap.sh").read_text(encoding="utf-8") + self.assertIn( + '"${container_run_namespace_args[@]+"${container_run_namespace_args[@]}"}"', + bootstrap, + ) + self.assertNotIn( + '"${container_run_namespace_args[@]}" \\\n "${container_run_user_args[@]}"', + bootstrap, + ) if __name__ == "__main__": # pragma: no cover unittest.main(verbosity=2)