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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user