Files
openclaw/src/infra/supervisor-markers.test.ts
2026-03-13 19:57:49 +00:00

68 lines
2.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { detectRespawnSupervisor, SUPERVISOR_HINT_ENV_VARS } from "./supervisor-markers.js";
describe("SUPERVISOR_HINT_ENV_VARS", () => {
it("includes the cross-platform supervisor hint env vars", () => {
expect(SUPERVISOR_HINT_ENV_VARS).toEqual(
expect.arrayContaining([
"LAUNCH_JOB_LABEL",
"INVOCATION_ID",
"OPENCLAW_WINDOWS_TASK_NAME",
"OPENCLAW_SERVICE_MARKER",
"OPENCLAW_SERVICE_KIND",
]),
);
});
});
describe("detectRespawnSupervisor", () => {
it("detects launchd and systemd only from non-blank platform-specific hints", () => {
expect(detectRespawnSupervisor({ LAUNCH_JOB_LABEL: " ai.openclaw.gateway " }, "darwin")).toBe(
"launchd",
);
expect(detectRespawnSupervisor({ LAUNCH_JOB_LABEL: " " }, "darwin")).toBeNull();
expect(detectRespawnSupervisor({ INVOCATION_ID: "abc123" }, "linux")).toBe("systemd");
expect(detectRespawnSupervisor({ JOURNAL_STREAM: "" }, "linux")).toBeNull();
});
it("detects scheduled-task supervision on Windows from either hint family", () => {
expect(
detectRespawnSupervisor({ OPENCLAW_WINDOWS_TASK_NAME: "OpenClaw Gateway" }, "win32"),
).toBe("schtasks");
expect(
detectRespawnSupervisor(
{
OPENCLAW_SERVICE_MARKER: "openclaw",
OPENCLAW_SERVICE_KIND: "gateway",
},
"win32",
),
).toBe("schtasks");
expect(
detectRespawnSupervisor(
{
OPENCLAW_SERVICE_MARKER: "openclaw",
OPENCLAW_SERVICE_KIND: "worker",
},
"win32",
),
).toBeNull();
});
it("ignores service markers on non-Windows platforms and unknown platforms", () => {
expect(
detectRespawnSupervisor(
{
OPENCLAW_SERVICE_MARKER: "openclaw",
OPENCLAW_SERVICE_KIND: "gateway",
},
"linux",
),
).toBeNull();
expect(
detectRespawnSupervisor({ LAUNCH_JOB_LABEL: "ai.openclaw.gateway" }, "freebsd"),
).toBeNull();
});
});