diff --git a/scripts/restart-mac.sh b/scripts/restart-mac.sh index 2ca4ca536e1e..9293dce6e508 100755 --- a/scripts/restart-mac.sh +++ b/scripts/restart-mac.sh @@ -133,12 +133,10 @@ kill_all_openclaw() { pkill -f "${DEBUG_PROCESS_PATTERN}" 2>/dev/null || true pkill -f "${LOCAL_PROCESS_PATTERN}" 2>/dev/null || true pkill -f "${RELEASE_PROCESS_PATTERN}" 2>/dev/null || true - pkill -x "OpenClaw" 2>/dev/null || true if ! pgrep -f "${APP_PROCESS_PATTERN}" >/dev/null 2>&1 \ && ! pgrep -f "${DEBUG_PROCESS_PATTERN}" >/dev/null 2>&1 \ && ! pgrep -f "${LOCAL_PROCESS_PATTERN}" >/dev/null 2>&1 \ - && ! pgrep -f "${RELEASE_PROCESS_PATTERN}" >/dev/null 2>&1 \ - && ! pgrep -x "OpenClaw" >/dev/null 2>&1; then + && ! pgrep -f "${RELEASE_PROCESS_PATTERN}" >/dev/null 2>&1; then return 0 fi sleep 0.3 diff --git a/test/scripts/restart-mac.test.ts b/test/scripts/restart-mac.test.ts index e2c6b99e956b..d48c82a78665 100644 --- a/test/scripts/restart-mac.test.ts +++ b/test/scripts/restart-mac.test.ts @@ -98,4 +98,19 @@ describe("scripts/restart-mac.sh", () => { chooseBlock.indexOf("/Applications/OpenClaw.app"), ); }); + + it("keeps restart cleanup scoped to known OpenClaw app and build paths", () => { + const script = readFileSync(restartScriptPath, "utf8"); + const cleanupBlock = script.slice( + script.indexOf("kill_all_openclaw()"), + script.indexOf("stop_launch_agent()"), + ); + + expect(cleanupBlock).toContain('pkill -f "${APP_PROCESS_PATTERN}"'); + expect(cleanupBlock).toContain('pkill -f "${DEBUG_PROCESS_PATTERN}"'); + expect(cleanupBlock).toContain('pkill -f "${LOCAL_PROCESS_PATTERN}"'); + expect(cleanupBlock).toContain('pkill -f "${RELEASE_PROCESS_PATTERN}"'); + expect(cleanupBlock).not.toContain('pkill -x "OpenClaw"'); + expect(cleanupBlock).not.toContain('pgrep -x "OpenClaw"'); + }); });