Files
openclaw/src/infra/openclaw-exec-env.test.ts
2026-03-14 01:03:24 +00:00

47 lines
1.4 KiB
TypeScript

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;
}
}
});
});