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();
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland