Skip to content

Commit 5e06cd6

Browse files
Copilotdata-douser
andauthored
fix: remove duplicate assertion, add try/finally for spy, cache extension version
Agent-Logs-Url: https://github.com/advanced-security/codeql-development-mcp-server/sessions/28160745-507f-46aa-b350-6fd6d19315ba Co-authored-by: data-douser <70299490+data-douser@users.noreply.github.com>
1 parent dd80dc5 commit 5e06cd6

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

extensions/vscode/src/server/mcp-provider.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,19 @@ export class McpProvider
2727
*/
2828
private _revision = 0;
2929

30+
/**
31+
* Cached extension version to avoid repeated synchronous `readFileSync`
32+
* calls on every `getEffectiveVersion()` invocation.
33+
*/
34+
private readonly _extensionVersion: string;
35+
3036
constructor(
3137
private readonly serverManager: ServerManager,
3238
private readonly envBuilder: EnvironmentBuilder,
3339
private readonly logger: Logger,
3440
) {
3541
super();
42+
this._extensionVersion = serverManager.getExtensionVersion();
3643
this.push(this._onDidChange);
3744
}
3845

@@ -117,9 +124,7 @@ export class McpProvider
117124
* cycle.
118125
*/
119126
private getEffectiveVersion(): string {
120-
const base =
121-
this.serverManager.getVersion() ??
122-
this.serverManager.getExtensionVersion();
127+
const base = this.serverManager.getVersion() ?? this._extensionVersion;
123128
if (this._revision === 0) {
124129
return base;
125130
}

extensions/vscode/test/extension.test.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,17 @@ describe('Extension', () => {
193193
mcpProviderInstance.requestRestart.mockClear();
194194
envBuilderInstance.invalidate.mockClear();
195195

196-
// Simulate workspace folder change
197-
workspaceFolderChangeCallback!();
198-
199-
// Cache invalidated immediately; no VS Code notification.
200-
// VS Code manages MCP server lifecycle (stop/restart) when roots change.
201-
expect(envBuilderInstance.invalidate).toHaveBeenCalledTimes(1);
202-
expect(mcpProviderInstance.fireDidChange).not.toHaveBeenCalled();
203-
expect(mcpProviderInstance.requestRestart).not.toHaveBeenCalled();
204-
205-
spy.mockRestore();
196+
try {
197+
// Simulate workspace folder change
198+
workspaceFolderChangeCallback!();
199+
200+
// Cache invalidated immediately; no VS Code notification.
201+
// VS Code manages MCP server lifecycle (stop/restart) when roots change.
202+
expect(envBuilderInstance.invalidate).toHaveBeenCalledTimes(1);
203+
expect(mcpProviderInstance.fireDidChange).not.toHaveBeenCalled();
204+
expect(mcpProviderInstance.requestRestart).not.toHaveBeenCalled();
205+
} finally {
206+
spy.mockRestore();
207+
}
206208
});
207209
});

extensions/vscode/test/suite/workspace-folder-change.integration.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ async function removeWorkspaceFolder(fsPath: string): Promise<void> {
6363
const changePromise = waitForWorkspaceFolderChange();
6464
const ok = vscode.workspace.updateWorkspaceFolders(idx, 1);
6565
assert.ok(ok, 'updateWorkspaceFolders (remove) returned false');
66-
assert.ok(ok, 'updateWorkspaceFolders (remove) returned false');
6766
await changePromise;
6867
}
6968

0 commit comments

Comments
 (0)