diff --git a/extensions/qa-lab/src/qa-agent-workspace.test.ts b/extensions/qa-lab/src/qa-agent-workspace.test.ts index 6e78c02f265..0f48dd9aeda 100644 --- a/extensions/qa-lab/src/qa-agent-workspace.test.ts +++ b/extensions/qa-lab/src/qa-agent-workspace.test.ts @@ -1,20 +1,12 @@ import fs from "node:fs/promises"; -import os from "node:os"; import path from "node:path"; import { afterEach, describe, expect, it } from "vitest"; import { seedQaAgentWorkspace } from "./qa-agent-workspace.js"; +import { createTempDirHarness } from "./temp-dir.test-helper.js"; -const tempDirs: string[] = []; +const { cleanup, makeTempDir } = createTempDirHarness(); -async function makeTempDir(prefix: string) { - const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); - tempDirs.push(dir); - return dir; -} - -afterEach(async () => { - await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); -}); +afterEach(cleanup); describe("seedQaAgentWorkspace", () => { it("creates a repo symlink when a repo root is provided", async () => { diff --git a/extensions/qa-lab/src/suite-runtime-agent-media.test.ts b/extensions/qa-lab/src/suite-runtime-agent-media.test.ts index a57f502e76e..ca379e4ea92 100644 --- a/extensions/qa-lab/src/suite-runtime-agent-media.test.ts +++ b/extensions/qa-lab/src/suite-runtime-agent-media.test.ts @@ -1,5 +1,4 @@ import fs from "node:fs/promises"; -import os from "node:os"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; @@ -20,18 +19,11 @@ import { extractMediaPathFromText, resolveGeneratedImagePath, } from "./suite-runtime-agent-media.js"; +import { createTempDirHarness } from "./temp-dir.test-helper.js"; -const tempDirs: string[] = []; +const { cleanup, makeTempDir } = createTempDirHarness(); -async function makeTempDir(prefix: string) { - const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); - tempDirs.push(dir); - return dir; -} - -afterEach(async () => { - await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); -}); +afterEach(cleanup); describe("qa suite runtime agent media helpers", () => { beforeEach(() => { diff --git a/extensions/qa-lab/src/suite-runtime-agent-session.test.ts b/extensions/qa-lab/src/suite-runtime-agent-session.test.ts index b63cf8718bd..5bd1af6a0c6 100644 --- a/extensions/qa-lab/src/suite-runtime-agent-session.test.ts +++ b/extensions/qa-lab/src/suite-runtime-agent-session.test.ts @@ -1,5 +1,4 @@ import fs from "node:fs/promises"; -import os from "node:os"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -8,18 +7,11 @@ import { readRawQaSessionStore, readSkillStatus, } from "./suite-runtime-agent-session.js"; +import { createTempDirHarness } from "./temp-dir.test-helper.js"; -const tempDirs: string[] = []; +const { cleanup, makeTempDir } = createTempDirHarness(); -async function makeTempDir(prefix: string) { - const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); - tempDirs.push(dir); - return dir; -} - -afterEach(async () => { - await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); -}); +afterEach(cleanup); describe("qa suite runtime agent session helpers", () => { const gatewayCall = vi.fn(); diff --git a/extensions/qa-lab/src/suite-runtime-agent-tools.test.ts b/extensions/qa-lab/src/suite-runtime-agent-tools.test.ts index db0e8799771..efb969ce383 100644 --- a/extensions/qa-lab/src/suite-runtime-agent-tools.test.ts +++ b/extensions/qa-lab/src/suite-runtime-agent-tools.test.ts @@ -1,5 +1,4 @@ import fs from "node:fs/promises"; -import os from "node:os"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; @@ -49,18 +48,11 @@ import { handleQaAction, writeWorkspaceSkill, } from "./suite-runtime-agent-tools.js"; +import { createTempDirHarness } from "./temp-dir.test-helper.js"; -const tempDirs: string[] = []; +const { cleanup, makeTempDir } = createTempDirHarness(); -async function makeTempDir(prefix: string) { - const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); - tempDirs.push(dir); - return dir; -} - -afterEach(async () => { - await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); -}); +afterEach(cleanup); describe("qa suite runtime agent tools helpers", () => { beforeEach(() => { diff --git a/extensions/qa-lab/src/temp-dir.test-helper.ts b/extensions/qa-lab/src/temp-dir.test-helper.ts new file mode 100644 index 00000000000..cf1bd93309c --- /dev/null +++ b/extensions/qa-lab/src/temp-dir.test-helper.ts @@ -0,0 +1,20 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; + +export function createTempDirHarness() { + const tempDirs: string[] = []; + + return { + async cleanup() { + await Promise.all( + tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true })), + ); + }, + async makeTempDir(prefix: string) { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); + tempDirs.push(dir); + return dir; + }, + }; +}