fix(ci): resolve mock.module() cross-file leakage in test suite

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-04 02:35:23 +09:00
parent 673b107f53
commit 6acca09bd0
15 changed files with 130 additions and 66 deletions
+24 -10
View File
@@ -1,17 +1,8 @@
declare const require: (name: string) => any
const { afterEach, afterAll, describe, expect, mock, test } = require("bun:test")
const { afterEach, describe, expect, spyOn, test } = require("bun:test")
const PROVIDER_ID = "cliproxyapi"
mock.module("../shared/connected-providers-cache", () => ({
readConnectedProvidersCache: () => [PROVIDER_ID],
readProviderModelsCache: () => ({
connected: [PROVIDER_ID],
}),
}))
afterAll(() => { mock.restore() })
import { createEventHandler } from "./event"
import { createChatMessageHandler } from "./chat-message"
import { createModelFallbackHook } from "../hooks/model-fallback/hook"
@@ -20,6 +11,7 @@ import type { RuntimeFallbackPluginInput } from "../hooks/runtime-fallback/types
import { _resetForTesting } from "../features/claude-code-session-state"
import { _resetForTesting as _resetModelFallbackForTesting } from "../hooks/model-fallback/hook"
import { SessionCategoryRegistry } from "../shared/session-category-registry"
import * as connectedProvidersCache from "../shared/connected-providers-cache"
type EventHandlerArgs = Parameters<typeof createEventHandler>[0]
type ChatMessageHandlerArgs = Parameters<typeof createChatMessageHandler>[0]
@@ -92,6 +84,9 @@ type PromptAsyncCall = {
parts?: Array<{ type?: string; text?: string }>
}
let readConnectedProvidersCacheSpy: { mockRestore: () => void } | undefined
let readProviderModelsCacheSpy: { mockRestore: () => void } | undefined
function createPluginConfig(mode: HarnessMode) {
return {
agents: {
@@ -114,6 +109,7 @@ function createHarness(args: {
promptAsyncImpl?: (call: PromptAsyncCall) => Promise<unknown>
sessionTimeoutMs?: number
}) {
setupConnectedProviderCacheMocks()
const abortCalls: string[] = []
const promptCalls: string[] = []
const promptAsyncCalls: PromptAsyncCall[] = []
@@ -353,6 +349,24 @@ async function triggerAssistantMessageError(
}))
}
afterEach(() => {
readConnectedProvidersCacheSpy?.mockRestore()
readProviderModelsCacheSpy?.mockRestore()
readConnectedProvidersCacheSpy = undefined
readProviderModelsCacheSpy = undefined
})
function setupConnectedProviderCacheMocks(): void {
readConnectedProvidersCacheSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue([
PROVIDER_ID,
])
readProviderModelsCacheSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue({
connected: [PROVIDER_ID],
models: {},
updatedAt: new Date(0).toISOString(),
})
}
afterEach(() => {
_resetForTesting()
_resetModelFallbackForTesting()