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
|
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 { getSessionPromptParams, clearSessionPromptParams } from "../../shared/session-prompt-params-state"
|
||||||
import { tmpdir } from "node:os"
|
import { tmpdir } from "node:os"
|
||||||
import type { PluginInput } from "@opencode-ai/plugin"
|
import type { PluginInput } from "@opencode-ai/plugin"
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { createChatMessageHandler } from "./chat-message"
|
|||||||
import { createModelFallbackHook } from "../hooks/model-fallback/hook"
|
import { createModelFallbackHook } from "../hooks/model-fallback/hook"
|
||||||
import { createRuntimeFallbackHook } from "../hooks/runtime-fallback"
|
import { createRuntimeFallbackHook } from "../hooks/runtime-fallback"
|
||||||
import { _resetForTesting } from "../features/claude-code-session-state"
|
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 { SessionCategoryRegistry } from "../shared/session-category-registry"
|
||||||
|
|
||||||
const PRIMARY_MODEL = {
|
const PRIMARY_MODEL = {
|
||||||
@@ -311,6 +312,7 @@ async function triggerAssistantMessageError(
|
|||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
_resetForTesting()
|
_resetForTesting()
|
||||||
|
_resetModelFallbackForTesting()
|
||||||
SessionCategoryRegistry.clear()
|
SessionCategoryRegistry.clear()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ describe("createToolExecuteBeforeHandler session notification sessionID", () =>
|
|||||||
|
|
||||||
expect(getMainSessionIDSpy).toHaveBeenCalled()
|
expect(getMainSessionIDSpy).toHaveBeenCalled()
|
||||||
expect(capturedSessionID).toBe(mainSessionID)
|
expect(capturedSessionID).toBe(mainSessionID)
|
||||||
|
|
||||||
|
getMainSessionIDSpy.mockRestore()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -222,6 +222,11 @@ export function createConnectedProvidersCacheStore(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _resetMemCacheForTesting(): void {
|
||||||
|
memConnected = undefined
|
||||||
|
memProviderModels = undefined
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
readConnectedProvidersCache,
|
readConnectedProvidersCache,
|
||||||
hasConnectedProvidersCache,
|
hasConnectedProvidersCache,
|
||||||
@@ -229,6 +234,7 @@ export function createConnectedProvidersCacheStore(
|
|||||||
hasProviderModelsCache,
|
hasProviderModelsCache,
|
||||||
writeProviderModelsCache,
|
writeProviderModelsCache,
|
||||||
updateConnectedProvidersCache,
|
updateConnectedProvidersCache,
|
||||||
|
_resetMemCacheForTesting,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,4 +275,5 @@ export const {
|
|||||||
hasProviderModelsCache,
|
hasProviderModelsCache,
|
||||||
writeProviderModelsCache,
|
writeProviderModelsCache,
|
||||||
updateConnectedProvidersCache,
|
updateConnectedProvidersCache,
|
||||||
|
_resetMemCacheForTesting,
|
||||||
} = defaultConnectedProvidersCacheStore
|
} = defaultConnectedProvidersCacheStore
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import { beforeEach } from "bun:test"
|
import { beforeEach } from "bun:test"
|
||||||
import { _resetForTesting as resetClaudeSessionState } from "./src/features/claude-code-session-state/state"
|
import { _resetForTesting as resetClaudeSessionState } from "./src/features/claude-code-session-state/state"
|
||||||
import { _resetForTesting as resetModelFallbackState } from "./src/hooks/model-fallback/hook"
|
import { _resetForTesting as resetModelFallbackState } from "./src/hooks/model-fallback/hook"
|
||||||
|
import { _resetMemCacheForTesting as resetConnectedProvidersCache } from "./src/shared/connected-providers-cache"
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetClaudeSessionState()
|
resetClaudeSessionState()
|
||||||
resetModelFallbackState()
|
resetModelFallbackState()
|
||||||
|
resetConnectedProvidersCache()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user