import { describe, expect, it } from "vitest"; import { ensureOpenClawExecMarkerOnProcess, markOpenClawExecEnv, OPENCLAW_CLI_ENV_VALUE, OPENCLAW_CLI_ENV_VAR, } from "./openclaw-exec-env.js"; describe("markOpenClawExecEnv", () => { it("returns a cloned env object with the exec marker set", () => { const env = { PATH: "/usr/bin", OPENCLAW_CLI: "0" }; const marked = markOpenClawExecEnv(env); expect(marked).toEqual({ PATH: "/usr/bin", OPENCLAW_CLI: OPENCLAW_CLI_ENV_VALUE, }); expect(marked).not.toBe(env); expect(env.OPENCLAW_CLI).toBe("0"); }); }); describe("ensureOpenClawExecMarkerOnProcess", () => { it("mutates and returns the provided process env", () => { const env: NodeJS.ProcessEnv = { PATH: "/usr/bin" }; expect(ensureOpenClawExecMarkerOnProcess(env)).toBe(env); expect(env[OPENCLAW_CLI_ENV_VAR]).toBe(OPENCLAW_CLI_ENV_VALUE); }); it("defaults to mutating process.env when no env object is provided", () => { const previous = process.env[OPENCLAW_CLI_ENV_VAR]; delete process.env[OPENCLAW_CLI_ENV_VAR]; try { expect(ensureOpenClawExecMarkerOnProcess()).toBe(process.env); expect(process.env[OPENCLAW_CLI_ENV_VAR]).toBe(OPENCLAW_CLI_ENV_VALUE); } finally { if (previous === undefined) { delete process.env[OPENCLAW_CLI_ENV_VAR]; } else { process.env[OPENCLAW_CLI_ENV_VAR] = previous; } } }); });