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