fix(tests): resolve 6 test isolation failures in full suite
3 failures in fallback.cliproxyapi-matrix.test.ts: - Root cause: leaked spyOn(getMainSessionID) in tool-execute-before-session-notification.test.ts was never restored, poisoning module state for subsequent tests in the same worker - Added mockRestore() call and _resetModelFallbackForTesting in afterEach 3 failures in background-agent/manager.test.ts: - Root cause: connected-providers-cache memConnected/memProviderModels persisted across test files, making isReachable() skip fallback candidates in retry tests - Added mock.module for connected-providers-cache at file level - Added _resetMemCacheForTesting export and global beforeEach cleanup Full suite: 4638/4638 pass, 0 fail
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
declare const require: (name: string) => any
|
||||
const { describe, test, expect, beforeEach, afterEach, spyOn } = require("bun:test")
|
||||
const { describe, test, expect, beforeEach, afterEach, spyOn, mock } = require("bun:test")
|
||||
|
||||
mock.module("../../shared/connected-providers-cache", () => ({
|
||||
readConnectedProvidersCache: () => null,
|
||||
readProviderModelsCache: () => null,
|
||||
hasConnectedProvidersCache: () => false,
|
||||
hasProviderModelsCache: () => false,
|
||||
writeProviderModelsCache: () => {},
|
||||
updateConnectedProvidersCache: () => {},
|
||||
}))
|
||||
|
||||
import { getSessionPromptParams, clearSessionPromptParams } from "../../shared/session-prompt-params-state"
|
||||
import { tmpdir } from "node:os"
|
||||
import type { PluginInput } from "@opencode-ai/plugin"
|
||||
|
||||
@@ -15,6 +15,7 @@ import { createChatMessageHandler } from "./chat-message"
|
||||
import { createModelFallbackHook } from "../hooks/model-fallback/hook"
|
||||
import { createRuntimeFallbackHook } from "../hooks/runtime-fallback"
|
||||
import { _resetForTesting } from "../features/claude-code-session-state"
|
||||
import { _resetForTesting as _resetModelFallbackForTesting } from "../hooks/model-fallback/hook"
|
||||
import { SessionCategoryRegistry } from "../shared/session-category-registry"
|
||||
|
||||
const PRIMARY_MODEL = {
|
||||
@@ -311,6 +312,7 @@ async function triggerAssistantMessageError(
|
||||
|
||||
afterEach(() => {
|
||||
_resetForTesting()
|
||||
_resetModelFallbackForTesting()
|
||||
SessionCategoryRegistry.clear()
|
||||
})
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ describe("createToolExecuteBeforeHandler session notification sessionID", () =>
|
||||
|
||||
expect(getMainSessionIDSpy).toHaveBeenCalled()
|
||||
expect(capturedSessionID).toBe(mainSessionID)
|
||||
|
||||
getMainSessionIDSpy.mockRestore()
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -222,6 +222,11 @@ export function createConnectedProvidersCacheStore(
|
||||
}
|
||||
}
|
||||
|
||||
function _resetMemCacheForTesting(): void {
|
||||
memConnected = undefined
|
||||
memProviderModels = undefined
|
||||
}
|
||||
|
||||
return {
|
||||
readConnectedProvidersCache,
|
||||
hasConnectedProvidersCache,
|
||||
@@ -229,6 +234,7 @@ export function createConnectedProvidersCacheStore(
|
||||
hasProviderModelsCache,
|
||||
writeProviderModelsCache,
|
||||
updateConnectedProvidersCache,
|
||||
_resetMemCacheForTesting,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,4 +275,5 @@ export const {
|
||||
hasProviderModelsCache,
|
||||
writeProviderModelsCache,
|
||||
updateConnectedProvidersCache,
|
||||
_resetMemCacheForTesting,
|
||||
} = defaultConnectedProvidersCacheStore
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { beforeEach } from "bun:test"
|
||||
import { _resetForTesting as resetClaudeSessionState } from "./src/features/claude-code-session-state/state"
|
||||
import { _resetForTesting as resetModelFallbackState } from "./src/hooks/model-fallback/hook"
|
||||
import { _resetMemCacheForTesting as resetConnectedProvidersCache } from "./src/shared/connected-providers-cache"
|
||||
|
||||
beforeEach(() => {
|
||||
resetClaudeSessionState()
|
||||
resetModelFallbackState()
|
||||
resetConnectedProvidersCache()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user