Skip to content

Commit c638617

Browse files
committed
test: share agent state-dir env guard
1 parent b77d614 commit c638617

1 file changed

Lines changed: 21 additions & 24 deletions

File tree

src/gateway/server-methods/agent.test.ts

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ import {
2525
resetTaskRegistryForTests,
2626
} from "../../tasks/task-registry.js";
2727
import { withTempDir } from "../../test-helpers/temp-dir.js";
28+
import { captureEnv, setTestEnvValue } from "../../test-utils/env.js";
2829
import { setGatewayDedupeEntry } from "./agent-wait-dedupe.js";
2930
import { agentHandlers } from "./agent.js";
3031
import { chatHandlers } from "./chat.js";
3132
import { expectSubagentFollowupReactivation } from "./subagent-followup.test-helpers.js";
3233
import type { GatewayRequestContext } from "./types.js";
3334

34-
const ORIGINAL_STATE_DIR = process.env.OPENCLAW_STATE_DIR;
35+
const envSnapshot = captureEnv(["OPENCLAW_STATE_DIR"]);
3536

3637
const mocks = vi.hoisted(() => ({
3738
loadSessionEntry: vi.fn(),
@@ -402,6 +403,10 @@ function resetTimeConfig() {
402403
vi.useRealTimers();
403404
}
404405

406+
function useTestStateDir(root: string): void {
407+
setTestEnvValue("OPENCLAW_STATE_DIR", root);
408+
}
409+
405410
async function expectResetCall(expectedMessage: string) {
406411
const call = await waitForAgentCommandCall();
407412
expect(mocks.performGatewaySessionReset).toHaveBeenCalledTimes(1);
@@ -562,11 +567,7 @@ async function invokeAgentIdentityGet(
562567

563568
describe("gateway agent handler", () => {
564569
afterEach(() => {
565-
if (ORIGINAL_STATE_DIR === undefined) {
566-
delete process.env.OPENCLAW_STATE_DIR;
567-
} else {
568-
process.env.OPENCLAW_STATE_DIR = ORIGINAL_STATE_DIR;
569-
}
570+
envSnapshot.restore();
570571
resetDetachedTaskLifecycleRuntimeForTests();
571572
resetTaskRegistryForTests();
572573
resetSubagentRegistryForTests({ persist: false });
@@ -3219,7 +3220,7 @@ describe("gateway agent handler", () => {
32193220

32203221
it("terminalizes successful async gateway agent runs in the shared task registry", async () => {
32213222
await withTempDir({ prefix: "openclaw-gateway-agent-task-" }, async (root) => {
3222-
process.env.OPENCLAW_STATE_DIR = root;
3223+
useTestStateDir(root);
32233224
resetTaskRegistryForTests();
32243225
primeMainAgentRun();
32253226

@@ -3245,7 +3246,7 @@ describe("gateway agent handler", () => {
32453246

32463247
it("tracks plugin SDK subagent agent runs through the subagent registry only", async () => {
32473248
await withTempDir({ prefix: "openclaw-gateway-plugin-subagent-task-" }, async (root) => {
3248-
process.env.OPENCLAW_STATE_DIR = root;
3249+
useTestStateDir(root);
32493250
resetTaskRegistryForTests();
32503251
resetSubagentRegistryForTests({ persist: false });
32513252
const runId = "plugin-subagent-task-run";
@@ -3365,7 +3366,7 @@ describe("gateway agent handler", () => {
33653366
await withTempDir(
33663367
{ prefix: "openclaw-gateway-plugin-subagent-registry-fail-" },
33673368
async (root) => {
3368-
process.env.OPENCLAW_STATE_DIR = root;
3369+
useTestStateDir(root);
33693370
resetTaskRegistryForTests();
33703371
resetSubagentRegistryForTests({ persist: false });
33713372
subagentRegistryTesting.setDepsForTest({
@@ -3444,7 +3445,7 @@ describe("gateway agent handler", () => {
34443445

34453446
it("terminalizes failed async gateway agent runs in the shared task registry", async () => {
34463447
await withTempDir({ prefix: "openclaw-gateway-agent-task-error-" }, async (root) => {
3447-
process.env.OPENCLAW_STATE_DIR = root;
3448+
useTestStateDir(root);
34483449
resetTaskRegistryForTests();
34493450
primeMainAgentRun();
34503451
mocks.agentCommand.mockRejectedValueOnce(new Error("agent unavailable"));
@@ -3471,7 +3472,7 @@ describe("gateway agent handler", () => {
34713472

34723473
it("preserves aborted async gateway agent runs as timed out", async () => {
34733474
await withTempDir({ prefix: "openclaw-gateway-agent-task-aborted-" }, async (root) => {
3474-
process.env.OPENCLAW_STATE_DIR = root;
3475+
useTestStateDir(root);
34753476
resetTaskRegistryForTests();
34763477
primeMainAgentRun();
34773478
mocks.agentCommand.mockResolvedValueOnce({
@@ -3507,7 +3508,7 @@ describe("gateway agent handler", () => {
35073508

35083509
it("classifies aborted async gateway agent rejections as timed out", async () => {
35093510
await withTempDir({ prefix: "openclaw-gateway-agent-task-abort-error-" }, async (root) => {
3510-
process.env.OPENCLAW_STATE_DIR = root;
3511+
useTestStateDir(root);
35113512
resetTaskRegistryForTests();
35123513
primeMainAgentRun();
35133514
const abortError = new Error("This operation was aborted");
@@ -3550,7 +3551,7 @@ describe("gateway agent handler", () => {
35503551

35513552
it("preserves restart ownership for aborted async gateway agent rejections", async () => {
35523553
await withTempDir({ prefix: "openclaw-gateway-agent-task-restart-abort-" }, async (root) => {
3553-
process.env.OPENCLAW_STATE_DIR = root;
3554+
useTestStateDir(root);
35543555
resetTaskRegistryForTests();
35553556
primeMainAgentRun();
35563557
const abortError = createAgentRunRestartAbortError();
@@ -3587,7 +3588,7 @@ describe("gateway agent handler", () => {
35873588

35883589
it("classifies timeout async gateway agent rejections as timed out", async () => {
35893590
await withTempDir({ prefix: "openclaw-gateway-agent-task-timeout-error-" }, async (root) => {
3590-
process.env.OPENCLAW_STATE_DIR = root;
3591+
useTestStateDir(root);
35913592
resetTaskRegistryForTests();
35923593
primeMainAgentRun();
35933594
const timeoutError = new Error("chat run timed out");
@@ -3632,7 +3633,7 @@ describe("gateway agent handler", () => {
36323633
await withTempDir(
36333634
{ prefix: "openclaw-gateway-agent-task-wrapped-timeout-error-" },
36343635
async (root) => {
3635-
process.env.OPENCLAW_STATE_DIR = root;
3636+
useTestStateDir(root);
36363637
resetTaskRegistryForTests();
36373638
primeMainAgentRun();
36383639
const timeoutReason = new Error("chat run timed out");
@@ -3681,7 +3682,7 @@ describe("gateway agent handler", () => {
36813682

36823683
it("does not hide provider timeout async gateway agent rejections", async () => {
36833684
await withTempDir({ prefix: "openclaw-gateway-agent-task-provider-timeout-" }, async (root) => {
3684-
process.env.OPENCLAW_STATE_DIR = root;
3685+
useTestStateDir(root);
36853686
resetTaskRegistryForTests();
36863687
primeMainAgentRun();
36873688
const providerError = new Error("provider request timed out");
@@ -3722,7 +3723,7 @@ describe("gateway agent handler", () => {
37223723

37233724
it("does not overwrite operator-cancelled async gateway agent tasks after late completion", async () => {
37243725
await withTempDir({ prefix: "openclaw-gateway-agent-task-cancelled-" }, async (root) => {
3725-
process.env.OPENCLAW_STATE_DIR = root;
3726+
useTestStateDir(root);
37263727
resetTaskRegistryForTests();
37273728
primeMainAgentRun();
37283729
let resolveRun: (value: {
@@ -4616,7 +4617,7 @@ describe("gateway agent handler", () => {
46164617

46174618
it("dispatches async gateway agent task creation through the detached task runtime seam", async () => {
46184619
await withTempDir({ prefix: "openclaw-gateway-agent-seam-" }, async (root) => {
4619-
process.env.OPENCLAW_STATE_DIR = root;
4620+
useTestStateDir(root);
46204621
resetTaskRegistryForTests();
46214622
primeMainAgentRun();
46224623

@@ -4675,7 +4676,7 @@ describe("gateway agent handler", () => {
46754676

46764677
it("logs a swallowed finalize error without blocking the background run", async () => {
46774678
await withTempDir({ prefix: "openclaw-gateway-agent-finalize-throw-" }, async (root) => {
4678-
process.env.OPENCLAW_STATE_DIR = root;
4679+
useTestStateDir(root);
46794680
resetTaskRegistryForTests();
46804681
primeMainAgentRun();
46814682

@@ -5646,11 +5647,7 @@ describe("gateway agent handler", () => {
56465647

56475648
describe("gateway agent handler chat.abort integration", () => {
56485649
function resetIntegrationState() {
5649-
if (ORIGINAL_STATE_DIR === undefined) {
5650-
delete process.env.OPENCLAW_STATE_DIR;
5651-
} else {
5652-
process.env.OPENCLAW_STATE_DIR = ORIGINAL_STATE_DIR;
5653-
}
5650+
envSnapshot.restore();
56545651
resetDetachedTaskLifecycleRuntimeForTests();
56555652
resetTaskRegistryForTests();
56565653
mocks.agentCommand.mockReset();

0 commit comments

Comments
 (0)