Files
openclaw-zero-token/daemon/launchd-restart-handoff.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

44 lines
1.4 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from "vitest";
const spawnMock = vi.hoisted(() => vi.fn());
const unrefMock = vi.hoisted(() => vi.fn());
vi.mock("node:child_process", () => ({
spawn: (...args: unknown[]) => spawnMock(...args),
}));
import { scheduleDetachedLaunchdRestartHandoff } from "./launchd-restart-handoff.js";
afterEach(() => {
spawnMock.mockReset();
unrefMock.mockReset();
spawnMock.mockReturnValue({ pid: 4242, unref: unrefMock });
});
describe("scheduleDetachedLaunchdRestartHandoff", () => {
it("waits for the caller pid before kickstarting launchd", () => {
const env = {
HOME: "/Users/test",
OPENCLAW_PROFILE: "default",
};
spawnMock.mockReturnValue({ pid: 4242, unref: unrefMock });
const result = scheduleDetachedLaunchdRestartHandoff({
env,
mode: "kickstart",
waitForPid: 9876,
});
expect(result).toEqual({ ok: true, pid: 4242 });
expect(spawnMock).toHaveBeenCalledTimes(1);
const [, args] = spawnMock.mock.calls[0] as [string, string[]];
expect(args[0]).toBe("-c");
expect(args[2]).toBe("openclaw-launchd-restart-handoff");
expect(args[6]).toBe("9876");
expect(args[1]).toContain('while kill -0 "$wait_pid" >/dev/null 2>&1; do');
expect(args[1]).toContain('launchctl kickstart -k "$service_target" >/dev/null 2>&1');
expect(args[1]).not.toContain("sleep 1");
expect(unrefMock).toHaveBeenCalledTimes(1);
});
});