From e295c86dbcd70ed8822f365be1401d126e4d8bd3 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 26 May 2026 11:31:42 +0200 Subject: [PATCH] fix(e2e): route named container cleanup through helper --- scripts/e2e/commitments-safety-docker.sh | 2 +- scripts/e2e/crestodian-first-run-docker.sh | 2 +- scripts/e2e/crestodian-planner-docker.sh | 2 +- scripts/e2e/crestodian-rescue-docker.sh | 2 +- scripts/e2e/cron-mcp-cleanup-docker.sh | 2 +- scripts/e2e/mcp-channels-docker.sh | 2 +- scripts/e2e/pi-bundle-mcp-tools-docker.sh | 2 +- scripts/e2e/session-runtime-context-docker.sh | 2 +- test/scripts/docker-build-helper.test.ts | 14 ++++++++++++++ 9 files changed, 22 insertions(+), 8 deletions(-) diff --git a/scripts/e2e/commitments-safety-docker.sh b/scripts/e2e/commitments-safety-docker.sh index 1c6140b0144a..43e4c02faf12 100755 --- a/scripts/e2e/commitments-safety-docker.sh +++ b/scripts/e2e/commitments-safety-docker.sh @@ -11,7 +11,7 @@ CONTAINER_NAME="openclaw-commitments-safety-e2e-$$" RUN_LOG="$(mktemp -t openclaw-commitments-safety-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/crestodian-first-run-docker.sh b/scripts/e2e/crestodian-first-run-docker.sh index cf8d904de8e0..eddf5aa04185 100644 --- a/scripts/e2e/crestodian-first-run-docker.sh +++ b/scripts/e2e/crestodian-first-run-docker.sh @@ -10,7 +10,7 @@ CONTAINER_NAME="openclaw-crestodian-first-run-e2e-$$" RUN_LOG="$(mktemp -t openclaw-crestodian-first-run-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/crestodian-planner-docker.sh b/scripts/e2e/crestodian-planner-docker.sh index d21f9a51c954..633c803fdcb5 100755 --- a/scripts/e2e/crestodian-planner-docker.sh +++ b/scripts/e2e/crestodian-planner-docker.sh @@ -10,7 +10,7 @@ CONTAINER_NAME="openclaw-crestodian-planner-e2e-$$" RUN_LOG="$(mktemp -t openclaw-crestodian-planner-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/crestodian-rescue-docker.sh b/scripts/e2e/crestodian-rescue-docker.sh index 22ca3d6fcfbd..1cef91a7e3c9 100755 --- a/scripts/e2e/crestodian-rescue-docker.sh +++ b/scripts/e2e/crestodian-rescue-docker.sh @@ -10,7 +10,7 @@ CONTAINER_NAME="openclaw-crestodian-rescue-e2e-$$" RUN_LOG="$(mktemp -t openclaw-crestodian-rescue-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/cron-mcp-cleanup-docker.sh b/scripts/e2e/cron-mcp-cleanup-docker.sh index 4b7e732cf0fa..10260e251a9b 100644 --- a/scripts/e2e/cron-mcp-cleanup-docker.sh +++ b/scripts/e2e/cron-mcp-cleanup-docker.sh @@ -12,7 +12,7 @@ CONTAINER_NAME="openclaw-cron-mcp-e2e-$$" CLIENT_LOG="$(mktemp -t openclaw-cron-mcp-client-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$CLIENT_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/mcp-channels-docker.sh b/scripts/e2e/mcp-channels-docker.sh index 542e1ef00881..2491201bd9a3 100644 --- a/scripts/e2e/mcp-channels-docker.sh +++ b/scripts/e2e/mcp-channels-docker.sh @@ -12,7 +12,7 @@ CONTAINER_NAME="openclaw-mcp-e2e-$$" CLIENT_LOG="$(mktemp -t openclaw-mcp-client-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$CLIENT_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/pi-bundle-mcp-tools-docker.sh b/scripts/e2e/pi-bundle-mcp-tools-docker.sh index 2f2b16fca61b..190dce14fc68 100755 --- a/scripts/e2e/pi-bundle-mcp-tools-docker.sh +++ b/scripts/e2e/pi-bundle-mcp-tools-docker.sh @@ -10,7 +10,7 @@ CONTAINER_NAME="openclaw-pi-bundle-mcp-tools-e2e-$$" RUN_LOG="$(mktemp -t openclaw-pi-bundle-mcp-tools-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/scripts/e2e/session-runtime-context-docker.sh b/scripts/e2e/session-runtime-context-docker.sh index d0f68cc21291..4a5a1aff5161 100644 --- a/scripts/e2e/session-runtime-context-docker.sh +++ b/scripts/e2e/session-runtime-context-docker.sh @@ -11,7 +11,7 @@ CONTAINER_NAME="openclaw-session-runtime-context-e2e-$$" RUN_LOG="$(mktemp -t openclaw-session-runtime-context-log.XXXXXX)" cleanup() { - docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true + docker_e2e_docker_cmd rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true rm -f "$RUN_LOG" } trap cleanup EXIT diff --git a/test/scripts/docker-build-helper.test.ts b/test/scripts/docker-build-helper.test.ts index 3b5c9c9d9461..19e4917a06b1 100644 --- a/test/scripts/docker-build-helper.test.ts +++ b/test/scripts/docker-build-helper.test.ts @@ -503,6 +503,20 @@ test -f "$TMPDIR/docker-cmd-seen" } }); + it("routes named Docker E2E container cleanup through the timeout-aware helper", () => { + for (const path of readdirSync("scripts/e2e") + .filter((entry) => entry.endsWith("-docker.sh")) + .map((entry) => join("scripts/e2e", entry))) { + const runner = readFileSync(path, "utf8"); + if (!runner.includes('CONTAINER_NAME="')) { + continue; + } + + expect(runner, path).not.toMatch(/(^|\n)\s*docker rm -f "\$CONTAINER_NAME"/u); + expect(runner, path).toContain('docker_e2e_docker_cmd rm -f "$CONTAINER_NAME"'); + } + }); + it("copies root lifecycle scripts before cleanup-smoke installs dependencies", () => { const dockerfile = readFileSync(CLEANUP_SMOKE_DOCKERFILE_PATH, "utf8"); const installIndex = dockerfile.indexOf("pnpm install --frozen-lockfile");