diff --git a/scripts/e2e/skill-install-docker.sh b/scripts/e2e/skill-install-docker.sh index 26d6e604a42..ce639b5c24b 100644 --- a/scripts/e2e/skill-install-docker.sh +++ b/scripts/e2e/skill-install-docker.sh @@ -15,11 +15,9 @@ docker_e2e_package_mount_args "$PACKAGE_TGZ" docker_e2e_build_or_reuse "$IMAGE_NAME" skill-install "$ROOT_DIR/scripts/e2e/Dockerfile" "$ROOT_DIR" "bare" echo "Running live ClawHub skill install Docker E2E..." -docker_e2e_harness_mount_args run_logged_print \ skill-install-run \ - docker run --rm \ - "${DOCKER_E2E_HARNESS_ARGS[@]}" \ + docker_e2e_run_with_harness \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64" \ -e "OPENCLAW_SKILL_INSTALL_E2E_QUERY=${OPENCLAW_SKILL_INSTALL_E2E_QUERY:-homeassistant}" \ diff --git a/test/scripts/docker-build-helper.test.ts b/test/scripts/docker-build-helper.test.ts index acb379a357d..cd3874de4df 100644 --- a/test/scripts/docker-build-helper.test.ts +++ b/test/scripts/docker-build-helper.test.ts @@ -23,6 +23,7 @@ const KITCHEN_SINK_PLUGIN_DOCKER_E2E_PATH = "scripts/e2e/kitchen-sink-plugin-doc const KITCHEN_SINK_RPC_DOCKER_E2E_PATH = "scripts/e2e/kitchen-sink-rpc-docker.sh"; const CODEX_NPM_PLUGIN_LIVE_DOCKER_E2E_PATH = "scripts/e2e/codex-npm-plugin-live-docker.sh"; +const SKILL_INSTALL_DOCKER_E2E_PATH = "scripts/e2e/skill-install-docker.sh"; const PLUGIN_BINDING_COMMAND_ESCAPE_DOCKER_E2E_PATH = "scripts/e2e/plugin-binding-command-escape-docker.sh"; const PLUGIN_BINDING_COMMAND_ESCAPE_DOCKERFILE_PATH = @@ -360,6 +361,17 @@ test -f "$external_dir/openclaw-current.tgz" expect(runner).not.toContain('rm -f "$run_log"\n exit 1'); }); + it("runs skill install through the package-cleaning Docker harness", () => { + const runner = readFileSync(SKILL_INSTALL_DOCKER_E2E_PATH, "utf8"); + + expect(runner).toContain('docker_e2e_package_mount_args "$PACKAGE_TGZ"'); + expect(runner).toMatch( + /run_logged_print \\\n\s+skill-install-run \\\n\s+docker_e2e_run_with_harness \\/u, + ); + expect(runner).not.toContain("docker_e2e_harness_mount_args"); + expect(runner).not.toContain("docker run --rm"); + }); + it("includes procps in the shared Docker E2E image for process watchdogs", () => { const dockerfile = readFileSync("scripts/e2e/Dockerfile", "utf8");