From ee82c173aef95b58a9dc1ab70c0b31ecfe5a63f3 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 14 Feb 2026 15:41:26 +0000 Subject: [PATCH] perf(test): reduce web logout fs churn --- src/web/logout.test.ts | 81 ++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/src/web/logout.test.ts b/src/web/logout.test.ts index 594e65b35a0..e45a60f8a04 100644 --- a/src/web/logout.test.ts +++ b/src/web/logout.test.ts @@ -2,7 +2,7 @@ import fs from "node:fs"; import fsPromises from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const runtime = { log: vi.fn(), @@ -10,16 +10,24 @@ const runtime = { exit: vi.fn(), }; -async function withTempDir(fn: (dir: string) => Promise): Promise { - const dir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "openclaw-test-web-logout-")); - try { - return await fn(dir); - } finally { - await fsPromises.rm(dir, { recursive: true, force: true }); - } -} - describe("web logout", () => { + let fixtureRoot = ""; + let caseId = 0; + + beforeAll(async () => { + fixtureRoot = await fsPromises.mkdtemp(path.join(os.tmpdir(), "openclaw-test-web-logout-")); + }); + + afterAll(async () => { + await fsPromises.rm(fixtureRoot, { recursive: true, force: true }); + }); + + const makeCaseDir = async () => { + const dir = path.join(fixtureRoot, `case-${caseId++}`); + await fsPromises.mkdir(dir, { recursive: true }); + return dir; + }; + beforeEach(() => { vi.clearAllMocks(); }); @@ -29,42 +37,37 @@ describe("web logout", () => { }); it("deletes cached credentials when present", { timeout: 60_000 }, async () => { - await withTempDir(async (authDir) => { - const { logoutWeb } = await import("./session.js"); - fs.mkdirSync(authDir, { recursive: true }); - fs.writeFileSync(path.join(authDir, "creds.json"), "{}"); - const result = await logoutWeb({ authDir, runtime: runtime as never }); - expect(result).toBe(true); - expect(fs.existsSync(authDir)).toBe(false); - }); + const authDir = await makeCaseDir(); + const { logoutWeb } = await import("./session.js"); + fs.writeFileSync(path.join(authDir, "creds.json"), "{}"); + const result = await logoutWeb({ authDir, runtime: runtime as never }); + expect(result).toBe(true); + expect(fs.existsSync(authDir)).toBe(false); }); it("no-ops when nothing to delete", { timeout: 60_000 }, async () => { - await withTempDir(async (authDir) => { - const { logoutWeb } = await import("./session.js"); - const result = await logoutWeb({ authDir, runtime: runtime as never }); - expect(result).toBe(false); - expect(runtime.log).toHaveBeenCalled(); - }); + const authDir = await makeCaseDir(); + const { logoutWeb } = await import("./session.js"); + const result = await logoutWeb({ authDir, runtime: runtime as never }); + expect(result).toBe(false); + expect(runtime.log).toHaveBeenCalled(); }); it("keeps shared oauth.json when using legacy auth dir", async () => { - await withTempDir(async (credsDir) => { - const { logoutWeb } = await import("./session.js"); - fs.mkdirSync(credsDir, { recursive: true }); - fs.writeFileSync(path.join(credsDir, "creds.json"), "{}"); - fs.writeFileSync(path.join(credsDir, "oauth.json"), '{"token":true}'); - fs.writeFileSync(path.join(credsDir, "session-abc.json"), "{}"); + const credsDir = await makeCaseDir(); + const { logoutWeb } = await import("./session.js"); + fs.writeFileSync(path.join(credsDir, "creds.json"), "{}"); + fs.writeFileSync(path.join(credsDir, "oauth.json"), '{"token":true}'); + fs.writeFileSync(path.join(credsDir, "session-abc.json"), "{}"); - const result = await logoutWeb({ - authDir: credsDir, - isLegacyAuthDir: true, - runtime: runtime as never, - }); - expect(result).toBe(true); - expect(fs.existsSync(path.join(credsDir, "oauth.json"))).toBe(true); - expect(fs.existsSync(path.join(credsDir, "creds.json"))).toBe(false); - expect(fs.existsSync(path.join(credsDir, "session-abc.json"))).toBe(false); + const result = await logoutWeb({ + authDir: credsDir, + isLegacyAuthDir: true, + runtime: runtime as never, }); + expect(result).toBe(true); + expect(fs.existsSync(path.join(credsDir, "oauth.json"))).toBe(true); + expect(fs.existsSync(path.join(credsDir, "creds.json"))).toBe(false); + expect(fs.existsSync(path.join(credsDir, "session-abc.json"))).toBe(false); }); });