test: isolate exec approval env

This commit is contained in:
Shakker
2026-06-20 02:57:09 +01:00
parent 459edec9ba
commit 2844ec2bb0
+9 -18
View File
@@ -2,6 +2,7 @@
import fs from "node:fs";
import path from "node:path";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { captureEnv, deleteTestEnvValue, setTestEnvValue } from "../test-utils/env.js";
import { makeTempDir } from "./exec-approvals-test-helpers.js";
const requestJsonlSocketMock = vi.hoisted(() => vi.fn());
@@ -33,8 +34,7 @@ let resolveExecApprovalsTranscriptPath: ExecApprovalsModule["resolveExecApproval
let saveExecApprovals: ExecApprovalsModule["saveExecApprovals"];
const tempDirs: string[] = [];
const originalOpenClawHome = process.env.OPENCLAW_HOME;
const originalOpenClawStateDir = process.env.OPENCLAW_STATE_DIR;
const testEnvSnapshot = captureEnv(["OPENCLAW_HOME", "OPENCLAW_STATE_DIR"]);
beforeAll(async () => {
({
@@ -64,16 +64,7 @@ beforeEach(() => {
afterEach(() => {
vi.restoreAllMocks();
if (originalOpenClawHome === undefined) {
delete process.env.OPENCLAW_HOME;
} else {
process.env.OPENCLAW_HOME = originalOpenClawHome;
}
if (originalOpenClawStateDir === undefined) {
delete process.env.OPENCLAW_STATE_DIR;
} else {
process.env.OPENCLAW_STATE_DIR = originalOpenClawStateDir;
}
testEnvSnapshot.restore();
for (const dir of tempDirs.splice(0)) {
fs.rmSync(dir, { recursive: true, force: true });
}
@@ -82,8 +73,8 @@ afterEach(() => {
function createHomeDir(): string {
const dir = makeTempDir();
tempDirs.push(dir);
process.env.OPENCLAW_HOME = dir;
delete process.env.OPENCLAW_STATE_DIR;
setTestEnvValue("OPENCLAW_HOME", dir);
deleteTestEnvValue("OPENCLAW_STATE_DIR");
return dir;
}
@@ -144,7 +135,7 @@ describe("exec approvals store helpers", () => {
it("uses OPENCLAW_STATE_DIR for default file and socket paths", () => {
const dir = createHomeDir();
const stateDir = path.join(dir, "custom-state");
process.env.OPENCLAW_STATE_DIR = stateDir;
setTestEnvValue("OPENCLAW_STATE_DIR", stateDir);
expect(path.normalize(resolveExecApprovalsPath())).toBe(
path.normalize(stateApprovalsFilePath(stateDir)),
@@ -182,7 +173,7 @@ describe("exec approvals store helpers", () => {
})}\n`,
"utf8",
);
process.env.OPENCLAW_STATE_DIR = stateDir;
setTestEnvValue("OPENCLAW_STATE_DIR", stateDir);
const resolved = resolveExecApprovals("main", {
security: "full",
@@ -657,7 +648,7 @@ describe("exec approvals store helpers", () => {
const linkedHome = `${realHome}-link`;
tempDirs.push(realHome, linkedHome);
fs.symlinkSync(realHome, linkedHome, "dir");
process.env.OPENCLAW_HOME = linkedHome;
setTestEnvValue("OPENCLAW_HOME", linkedHome);
saveExecApprovals({ version: 1, defaults: { security: "full" }, agents: {} });
@@ -674,7 +665,7 @@ describe("exec approvals store helpers", () => {
fs.mkdirSync(linkedStateTarget, { recursive: true });
fs.symlinkSync(realHome, linkedHome, "dir");
fs.symlinkSync(linkedStateTarget, path.join(realHome, ".openclaw"), "dir");
process.env.OPENCLAW_HOME = linkedHome;
setTestEnvValue("OPENCLAW_HOME", linkedHome);
expect(() =>
saveExecApprovals({ version: 1, defaults: { security: "full" }, agents: {} }),