test: update plugin tests for MCP-backed LSP

This commit is contained in:
YeonGyu-Kim
2026-05-18 12:12:48 +09:00
parent 8716ef458c
commit 48c827ffc0
4 changed files with 5 additions and 55 deletions
-50
View File
@@ -12,14 +12,10 @@ describe("createPluginDispose", () => {
const skillMcpManager = { const skillMcpManager = {
disconnectAll: async (): Promise<void> => {}, disconnectAll: async (): Promise<void> => {},
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const shutdownSpy = spyOn(backgroundManager, "shutdown") const shutdownSpy = spyOn(backgroundManager, "shutdown")
const dispose = createPluginDispose({ const dispose = createPluginDispose({
backgroundManager, backgroundManager,
skillMcpManager, skillMcpManager,
lspManager,
disposeHooks: (): void => {}, disposeHooks: (): void => {},
}) })
@@ -38,14 +34,10 @@ describe("createPluginDispose", () => {
const skillMcpManager = { const skillMcpManager = {
disconnectAll: async (): Promise<void> => {}, disconnectAll: async (): Promise<void> => {},
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll") const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll")
const dispose = createPluginDispose({ const dispose = createPluginDispose({
backgroundManager, backgroundManager,
skillMcpManager, skillMcpManager,
lspManager,
disposeHooks: (): void => {}, disposeHooks: (): void => {},
}) })
@@ -73,9 +65,6 @@ describe("createPluginDispose", () => {
const autoSlashCommand = { const autoSlashCommand = {
dispose: (): void => {}, dispose: (): void => {},
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const claudeCodeHooksDisposeSpy = spyOn(claudeCodeHooks, "dispose") const claudeCodeHooksDisposeSpy = spyOn(claudeCodeHooks, "dispose")
const commentCheckerDisposeSpy = spyOn(commentChecker, "dispose") const commentCheckerDisposeSpy = spyOn(commentChecker, "dispose")
const runtimeFallbackDisposeSpy = spyOn(runtimeFallback, "dispose") const runtimeFallbackDisposeSpy = spyOn(runtimeFallback, "dispose")
@@ -88,7 +77,6 @@ describe("createPluginDispose", () => {
skillMcpManager: { skillMcpManager: {
disconnectAll: async (): Promise<void> => {}, disconnectAll: async (): Promise<void> => {},
}, },
lspManager,
disposeHooks: (): void => { disposeHooks: (): void => {
disposeCreatedHooks({ disposeCreatedHooks({
claudeCodeHooks, claudeCodeHooks,
@@ -119,20 +107,15 @@ describe("createPluginDispose", () => {
const skillMcpManager = { const skillMcpManager = {
disconnectAll: async (): Promise<void> => {}, disconnectAll: async (): Promise<void> => {},
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const disposeHooks = { const disposeHooks = {
run: (): void => {}, run: (): void => {},
} }
const shutdownSpy = spyOn(backgroundManager, "shutdown") const shutdownSpy = spyOn(backgroundManager, "shutdown")
const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll") const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll")
const stopAllSpy = spyOn(lspManager, "stopAll")
const disposeHooksSpy = spyOn(disposeHooks, "run") const disposeHooksSpy = spyOn(disposeHooks, "run")
const dispose = createPluginDispose({ const dispose = createPluginDispose({
backgroundManager, backgroundManager,
skillMcpManager, skillMcpManager,
lspManager,
disposeHooks: disposeHooks.run, disposeHooks: disposeHooks.run,
}) })
@@ -143,7 +126,6 @@ describe("createPluginDispose", () => {
// then // then
expect(shutdownSpy).toHaveBeenCalledTimes(1) expect(shutdownSpy).toHaveBeenCalledTimes(1)
expect(disconnectAllSpy).toHaveBeenCalledTimes(1) expect(disconnectAllSpy).toHaveBeenCalledTimes(1)
expect(stopAllSpy).toHaveBeenCalledTimes(1)
expect(disposeHooksSpy).toHaveBeenCalledTimes(1) expect(disposeHooksSpy).toHaveBeenCalledTimes(1)
}) })
@@ -157,15 +139,11 @@ describe("createPluginDispose", () => {
const skillMcpManager = { const skillMcpManager = {
disconnectAll: async (): Promise<void> => {}, disconnectAll: async (): Promise<void> => {},
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const disposeHooksCalls: number[] = [] const disposeHooksCalls: number[] = []
const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll") const disconnectAllSpy = spyOn(skillMcpManager, "disconnectAll")
const dispose = createPluginDispose({ const dispose = createPluginDispose({
backgroundManager, backgroundManager,
skillMcpManager, skillMcpManager,
lspManager,
disposeHooks: (): void => { disposeHooks: (): void => {
disposeHooksCalls.push(1) disposeHooksCalls.push(1)
}, },
@@ -189,15 +167,11 @@ describe("createPluginDispose", () => {
throw new Error("disconnectAll failed") throw new Error("disconnectAll failed")
}, },
} }
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const disposeHooksCalls: number[] = [] const disposeHooksCalls: number[] = []
const shutdownSpy = spyOn(backgroundManager, "shutdown") const shutdownSpy = spyOn(backgroundManager, "shutdown")
const dispose = createPluginDispose({ const dispose = createPluginDispose({
backgroundManager, backgroundManager,
skillMcpManager, skillMcpManager,
lspManager,
disposeHooks: (): void => { disposeHooks: (): void => {
disposeHooksCalls.push(1) disposeHooksCalls.push(1)
}, },
@@ -210,28 +184,4 @@ describe("createPluginDispose", () => {
expect(shutdownSpy).toHaveBeenCalledTimes(1) expect(shutdownSpy).toHaveBeenCalledTimes(1)
expect(disposeHooksCalls).toHaveLength(1) expect(disposeHooksCalls).toHaveLength(1)
}) })
test("#given active LSP clients #when dispose runs #then lsp manager is stopped", async () => {
// given
const lspManager = {
stopAll: async (): Promise<void> => {},
}
const stopAllSpy = spyOn(lspManager, "stopAll")
const dispose = createPluginDispose({
backgroundManager: {
shutdown: async (): Promise<void> => {},
},
skillMcpManager: {
disconnectAll: async (): Promise<void> => {},
},
lspManager,
disposeHooks: (): void => {},
})
// when
await dispose()
// then
expect(stopAllSpy).toHaveBeenCalledTimes(1)
})
}) })
+5 -3
View File
@@ -1,7 +1,6 @@
const { afterEach, describe, expect, test } = require("bun:test") const { afterEach, describe, expect, test } = require("bun:test")
const { createToolExecuteBeforeHandler } = require("./tool-execute-before") const { createToolExecuteBeforeHandler } = require("./tool-execute-before")
const { createToolRegistry } = require("./tool-registry") const { createToolRegistry } = require("./tool-registry")
const { builtinTools } = require("../tools")
const { resetStorageClient } = require("../tools/session-manager/storage") const { resetStorageClient } = require("../tools/session-manager/storage")
describe("createToolExecuteBeforeHandler", () => { describe("createToolExecuteBeforeHandler", () => {
@@ -335,13 +334,16 @@ describe("createToolRegistry", () => {
describe("#given max_tools is lower than or equal to builtin tool count", () => { describe("#given max_tools is lower than or equal to builtin tool count", () => {
describe("#when creating the tool registry", () => { describe("#when creating the tool registry", () => {
test("#then it trims to the exact configured cap", () => { test("#then it trims to the exact configured cap", () => {
const baseline = createToolRegistry(createRegistryInput())
const baselineToolCount = Object.keys(baseline.filteredTools).length
const result = createToolRegistry( const result = createToolRegistry(
createRegistryInput({ createRegistryInput({
experimental: { max_tools: Object.keys(builtinTools).length }, experimental: { max_tools: baselineToolCount },
}), }),
) )
expect(Object.keys(result.filteredTools)).toHaveLength(Object.keys(builtinTools).length) expect(Object.keys(result.filteredTools)).toHaveLength(baselineToolCount)
}) })
}) })
}) })
@@ -63,7 +63,6 @@ describe("team-mode tool registry wiring", () => {
}, },
availableCategories: [], availableCategories: [],
toolFactories: { toolFactories: {
builtinTools: { bash: fakeTool, read: fakeTool },
createBackgroundTools: mock(() => ({})), createBackgroundTools: mock(() => ({})),
createCallOmoAgent: mock(() => fakeTool), createCallOmoAgent: mock(() => fakeTool),
createLookAt: mock(() => fakeTool), createLookAt: mock(() => fakeTool),
-1
View File
@@ -46,7 +46,6 @@ const TEAM_TOOL_NAMES = [
const { createToolRegistry, trimToolsToCap } = await import("./tool-registry") const { createToolRegistry, trimToolsToCap } = await import("./tool-registry")
const toolFactories: NonNullable<Parameters<typeof createToolRegistry>[0]["toolFactories"]> = { const toolFactories: NonNullable<Parameters<typeof createToolRegistry>[0]["toolFactories"]> = {
builtinTools: { bash: fakeTool, read: fakeTool },
createBackgroundTools: mock(() => ({})), createBackgroundTools: mock(() => ({})),
createCallOmoAgent: mock(() => fakeTool), createCallOmoAgent: mock(() => fakeTool),
createLookAt: mock(() => fakeTool), createLookAt: mock(() => fakeTool),