test: update plugin tests for MCP-backed LSP
This commit is contained in:
@@ -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)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user