


















@@ -2,6 +2,7 @@
22import fs from "node:fs";
33import path from "node:path";
44import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
5+import { captureEnv, deleteTestEnvValue, setTestEnvValue } from "../test-utils/env.js";
56import { makeTempDir } from "./exec-approvals-test-helpers.js";
6778const requestJsonlSocketMock = vi.hoisted(() => vi.fn());
@@ -33,8 +34,7 @@ let resolveExecApprovalsTranscriptPath: ExecApprovalsModule["resolveExecApproval
3334let saveExecApprovals: ExecApprovalsModule["saveExecApprovals"];
34353536const tempDirs: string[] = [];
36-const originalOpenClawHome = process.env.OPENCLAW_HOME;
37-const originalOpenClawStateDir = process.env.OPENCLAW_STATE_DIR;
37+const testEnvSnapshot = captureEnv(["OPENCLAW_HOME", "OPENCLAW_STATE_DIR"]);
38383939beforeAll(async () => {
4040({
@@ -64,16 +64,7 @@ beforeEach(() => {
64646565afterEach(() => {
6666vi.restoreAllMocks();
67-if (originalOpenClawHome === undefined) {
68-delete process.env.OPENCLAW_HOME;
69-} else {
70-process.env.OPENCLAW_HOME = originalOpenClawHome;
71-}
72-if (originalOpenClawStateDir === undefined) {
73-delete process.env.OPENCLAW_STATE_DIR;
74-} else {
75-process.env.OPENCLAW_STATE_DIR = originalOpenClawStateDir;
76-}
67+testEnvSnapshot.restore();
7768for (const dir of tempDirs.splice(0)) {
7869fs.rmSync(dir, { recursive: true, force: true });
7970}
@@ -82,8 +73,8 @@ afterEach(() => {
8273function createHomeDir(): string {
8374const dir = makeTempDir();
8475tempDirs.push(dir);
85-process.env.OPENCLAW_HOME = dir;
86-delete process.env.OPENCLAW_STATE_DIR;
76+setTestEnvValue("OPENCLAW_HOME", dir);
77+deleteTestEnvValue("OPENCLAW_STATE_DIR");
8778return dir;
8879}
8980@@ -144,7 +135,7 @@ describe("exec approvals store helpers", () => {
144135it("uses OPENCLAW_STATE_DIR for default file and socket paths", () => {
145136const dir = createHomeDir();
146137const stateDir = path.join(dir, "custom-state");
147-process.env.OPENCLAW_STATE_DIR = stateDir;
138+setTestEnvValue("OPENCLAW_STATE_DIR", stateDir);
148139149140expect(path.normalize(resolveExecApprovalsPath())).toBe(
150141path.normalize(stateApprovalsFilePath(stateDir)),
@@ -182,7 +173,7 @@ describe("exec approvals store helpers", () => {
182173 })}\n`,
183174"utf8",
184175);
185-process.env.OPENCLAW_STATE_DIR = stateDir;
176+setTestEnvValue("OPENCLAW_STATE_DIR", stateDir);
186177187178const resolved = resolveExecApprovals("main", {
188179security: "full",
@@ -657,7 +648,7 @@ describe("exec approvals store helpers", () => {
657648const linkedHome = `${realHome}-link`;
658649tempDirs.push(realHome, linkedHome);
659650fs.symlinkSync(realHome, linkedHome, "dir");
660-process.env.OPENCLAW_HOME = linkedHome;
651+setTestEnvValue("OPENCLAW_HOME", linkedHome);
661652662653saveExecApprovals({ version: 1, defaults: { security: "full" }, agents: {} });
663654@@ -674,7 +665,7 @@ describe("exec approvals store helpers", () => {
674665fs.mkdirSync(linkedStateTarget, { recursive: true });
675666fs.symlinkSync(realHome, linkedHome, "dir");
676667fs.symlinkSync(linkedStateTarget, path.join(realHome, ".openclaw"), "dir");
677-process.env.OPENCLAW_HOME = linkedHome;
668+setTestEnvValue("OPENCLAW_HOME", linkedHome);
678669679670expect(() =>
680671saveExecApprovals({ version: 1, defaults: { security: "full" }, agents: {} }),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。