From ab11f2eb4ed3ee2c4bc32c7c80b32cc4a9d32817 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Wed, 15 Apr 2026 11:14:52 +0900 Subject: [PATCH] fix(tests): replace mock.module with spyOn to prevent test pollution The opencode-config-agents-reader.test.ts was using mock.module() which permanently replaced the module in bun's module cache, causing state pollution in downstream tests (plugin-detection, write-omo-config, config-loader). Replaced with spyOn() pattern that properly restores in afterEach. --- .../opencode-config-agents-reader.test.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/features/claude-code-agent-loader/opencode-config-agents-reader.test.ts b/src/features/claude-code-agent-loader/opencode-config-agents-reader.test.ts index 1f7a48deb..e90bc2519 100644 --- a/src/features/claude-code-agent-loader/opencode-config-agents-reader.test.ts +++ b/src/features/claude-code-agent-loader/opencode-config-agents-reader.test.ts @@ -1,23 +1,22 @@ -import { describe, expect, it, beforeEach, afterEach } from "bun:test" -import { mock } from "bun:test" +import { describe, expect, it, beforeEach, afterEach, spyOn } from "bun:test" import * as fs from "node:fs" import * as os from "node:os" import * as path from "node:path" -// Mock getOpenCodeConfigDir to prevent global config leakage -let mockGlobalConfigDir: string -mock.module("../../shared/opencode-config-dir", () => ({ - getOpenCodeConfigDir: () => mockGlobalConfigDir, -})) - -const { readOpencodeConfigAgents } = require("./opencode-config-agents-reader") +import * as configDir from "../../shared/opencode-config-dir" +import { readOpencodeConfigAgents } from "./opencode-config-agents-reader" describe("readOpencodeConfigAgents", () => { + let mockGlobalConfigDir = "" + let configDirSpy: ReturnType + beforeEach(() => { mockGlobalConfigDir = fs.mkdtempSync(path.join(os.tmpdir(), "opencode-mock-global-")) + configDirSpy = spyOn(configDir, "getOpenCodeConfigDir").mockReturnValue(mockGlobalConfigDir) }) afterEach(() => { + configDirSpy.mockRestore() fs.rmSync(mockGlobalConfigDir, { recursive: true, force: true }) })