Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/test/getVscodeInfo.spec.ts
13406 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { beforeEach, describe, expect, it, vi } from 'vitest';
7
import { TestLogService } from '../../../../../platform/testing/common/testLogService';
8
import { MockMcpServer, parseToolResult } from './testHelpers';
9
10
vi.mock('vscode', () => ({
11
version: '1.95.0',
12
env: {
13
appName: 'Visual Studio Code',
14
appRoot: '/usr/share/code',
15
language: 'en',
16
machineId: 'test-machine-id',
17
sessionId: 'test-session-id',
18
uriScheme: 'vscode',
19
shell: '/bin/bash',
20
},
21
}));
22
23
import { registerGetVscodeInfoTool } from '../tools/getVscodeInfo';
24
25
interface VscodeInfoResult {
26
version: string;
27
appName: string;
28
appRoot: string;
29
language: string;
30
machineId: string;
31
sessionId: string;
32
uriScheme: string;
33
shell: string;
34
}
35
36
describe('getVscodeInfo tool', () => {
37
const logger = new TestLogService();
38
let server: MockMcpServer;
39
40
beforeEach(() => {
41
vi.clearAllMocks();
42
server = new MockMcpServer();
43
registerGetVscodeInfoTool(server as unknown as import('@modelcontextprotocol/sdk/server/mcp.js').McpServer, logger);
44
});
45
46
it('should register the get_vscode_info tool', () => {
47
expect(server.hasToolRegistered('get_vscode_info')).toBe(true);
48
});
49
50
it('should return VS Code environment information', async () => {
51
const handler = server.getToolHandler('get_vscode_info')!;
52
const result = parseToolResult<VscodeInfoResult>(await handler({}));
53
54
expect(result.version).toBe('1.95.0');
55
expect(result.appName).toBe('Visual Studio Code');
56
expect(result.appRoot).toBe('/usr/share/code');
57
expect(result.language).toBe('en');
58
expect(result.machineId).toBe('test-machine-id');
59
expect(result.sessionId).toBe('test-session-id');
60
expect(result.uriScheme).toBe('vscode');
61
expect(result.shell).toBe('/bin/bash');
62
});
63
});
64
65