Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/test/vscode-node/services.ts
13399 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 { CopilotTokenStore, ICopilotTokenStore } from '../../../platform/authentication/common/copilotTokenStore';
7
import { BlockedExtensionService, IBlockedExtensionService } from '../../../platform/chat/common/blockedExtensionService';
8
import { IChatMLFetcher } from '../../../platform/chat/common/chatMLFetcher';
9
import { IChatSessionService } from '../../../platform/chat/common/chatSessionService';
10
import { TestChatSessionService } from '../../../platform/chat/test/common/testChatSessionService';
11
import { INaiveChunkingService, NaiveChunkingService } from '../../../platform/chunking/node/naiveChunkerService';
12
import { MockRunCommandExecutionService } from '../../../platform/commands/common/mockRunCommandExecutionService';
13
import { IRunCommandExecutionService } from '../../../platform/commands/common/runCommandExecutionService';
14
import { IConfigurationService } from '../../../platform/configuration/common/configurationService';
15
import { DefaultsOnlyConfigurationService } from '../../../platform/configuration/common/defaultsOnlyConfigurationService';
16
import { IDebugOutputService } from '../../../platform/debug/common/debugOutputService';
17
import { DebugOutputServiceImpl } from '../../../platform/debug/vscode/debugOutputServiceImpl';
18
import { IDialogService } from '../../../platform/dialog/common/dialogService';
19
import { IDiffService } from '../../../platform/diff/common/diffService';
20
import { DiffServiceImpl } from '../../../platform/diff/node/diffServiceImpl';
21
import { IEmbeddingsComputer } from '../../../platform/embeddings/common/embeddingsComputer';
22
import { RemoteEmbeddingsComputer } from '../../../platform/embeddings/common/remoteEmbeddingsComputer';
23
import { ICAPIClientService } from '../../../platform/endpoint/common/capiClient';
24
import { IDomainService } from '../../../platform/endpoint/common/domainService';
25
import { IEndpointProvider } from '../../../platform/endpoint/common/endpointProvider';
26
import { AutomodeService, IAutomodeService } from '../../../platform/endpoint/node/automodeService';
27
import { CAPIClientImpl } from '../../../platform/endpoint/node/capiClientImpl';
28
import { DomainService } from '../../../platform/endpoint/node/domainServiceImpl';
29
import { TestEndpointProvider } from '../../../platform/endpoint/test/node/testEndpointProvider';
30
import { IEnvService, INativeEnvService } from '../../../platform/env/common/envService';
31
import { NullNativeEnvService } from '../../../platform/env/common/nullEnvService';
32
import { EnvServiceImpl } from '../../../platform/env/vscode/envServiceImpl';
33
import { IVSCodeExtensionContext } from '../../../platform/extContext/common/extensionContext';
34
import { IExtensionsService } from '../../../platform/extensions/common/extensionsService';
35
import { VSCodeExtensionsService } from '../../../platform/extensions/vscode/extensionsService';
36
import { IFileSystemService } from '../../../platform/filesystem/common/fileSystemService';
37
import { NodeFileSystemService } from '../../../platform/filesystem/node/fileSystemServiceImpl';
38
import { IGitDiffService } from '../../../platform/git/common/gitDiffService';
39
import { IGitExtensionService } from '../../../platform/git/common/gitExtensionService';
40
import { IGitService } from '../../../platform/git/common/gitService';
41
import { GitServiceImpl } from '../../../platform/git/vscode-node/gitServiceImpl';
42
import { GitExtensionServiceImpl } from '../../../platform/git/vscode/gitExtensionServiceImpl';
43
import { IOctoKitService } from '../../../platform/github/common/githubService';
44
import { OctoKitService } from '../../../platform/github/common/octoKitServiceImpl';
45
import { IIgnoreService, NullIgnoreService } from '../../../platform/ignore/common/ignoreService';
46
import { IImageService, nullImageService } from '../../../platform/image/common/imageService';
47
import { IInlineEditsModelService, IUndesiredModelsManager } from '../../../platform/inlineEdits/common/inlineEditsModelService';
48
import { InlineEditsModelService, UndesiredModels } from '../../../platform/inlineEdits/node/inlineEditsModelService';
49
import { ILanguageDiagnosticsService } from '../../../platform/languages/common/languageDiagnosticsService';
50
import { ILanguageFeaturesService, NoopLanguageFeaturesService } from '../../../platform/languages/common/languageFeaturesService';
51
import { LanguageDiagnosticsServiceImpl } from '../../../platform/languages/vscode/languageDiagnosticsServiceImpl';
52
import { IMcpService, NullMcpService } from '../../../platform/mcp/common/mcpService';
53
import { EditLogService, IEditLogService } from '../../../platform/multiFileEdit/common/editLogService';
54
import { IMultiFileEditInternalTelemetryService, MultiFileEditInternalTelemetryService } from '../../../platform/multiFileEdit/common/multiFileEditQualityTelemetry';
55
import { ICompletionsFetchService } from '../../../platform/nesFetch/common/completionsFetchService';
56
import { CompletionsFetchService } from '../../../platform/nesFetch/node/completionsFetchServiceImpl';
57
import { IChatWebSocketManager, NullChatWebSocketManager } from '../../../platform/networking/node/chatWebSocketManager';
58
import { IAlternativeNotebookContentService } from '../../../platform/notebook/common/alternativeContent';
59
import { AlternativeNotebookContentEditGenerator, IAlternativeNotebookContentEditGenerator } from '../../../platform/notebook/common/alternativeContentEditGenerator';
60
import { MockAlternativeNotebookContentService } from '../../../platform/notebook/common/mockAlternativeContentService';
61
import { INotebookService } from '../../../platform/notebook/common/notebookService';
62
import { INotificationService, NullNotificationService } from '../../../platform/notification/common/notificationService';
63
import { IOTelSqliteStore, OTelSqliteStore } from '../../../platform/otel/node/sqlite/otelSqliteStore';
64
import { IPromptsService } from '../../../platform/promptFiles/common/promptsService';
65
import { PromptsServiceImpl } from '../../../platform/promptFiles/vscode/promptsServiceImpl';
66
import { IPromptPathRepresentationService, PromptPathRepresentationService } from '../../../platform/prompts/common/promptPathRepresentationService';
67
import { IProxyModelsService, NullProxyModelsService } from '../../../platform/proxyModels/common/proxyModelsService';
68
import { IRemoteRepositoriesService, RemoteRepositoriesService } from '../../../platform/remoteRepositories/vscode/remoteRepositories';
69
import { NullRequestLogger } from '../../../platform/requestLogger/node/nullRequestLogger';
70
import { IRequestLogger } from '../../../platform/requestLogger/common/requestLogger';
71
import { IReviewService } from '../../../platform/review/common/reviewService';
72
import { IScopeSelector } from '../../../platform/scopeSelection/common/scopeSelection';
73
import { ScopeSelectorImpl } from '../../../platform/scopeSelection/vscode-node/scopeSelectionImpl';
74
import { ISearchService } from '../../../platform/search/common/searchService';
75
import { SearchServiceImpl } from '../../../platform/search/vscode-node/searchServiceImpl';
76
import { ISimulationTestContext, NulSimulationTestContext } from '../../../platform/simulationTestContext/common/simulationTestContext';
77
import { ITabsAndEditorsService } from '../../../platform/tabs/common/tabsAndEditorsService';
78
import { TabsAndEditorsServiceImpl } from '../../../platform/tabs/vscode/tabsAndEditorsServiceImpl';
79
import { NullTelemetryService } from '../../../platform/telemetry/common/nullTelemetryService';
80
import { ITelemetryService } from '../../../platform/telemetry/common/telemetry';
81
import { ITerminalService } from '../../../platform/terminal/common/terminalService';
82
import { TerminalServiceImpl } from '../../../platform/terminal/vscode/terminalServiceImpl';
83
import { MockExtensionContext } from '../../../platform/test/node/extensionContext';
84
import { _createBaselineServices, TestingServiceCollection } from '../../../platform/test/node/services';
85
import { SimulationNotebookService, SimulationReviewService, TestingDialogService } from '../../../platform/test/node/simulationWorkspaceServices';
86
import { ITestProvider } from '../../../platform/testing/common/testProvider';
87
import { IWorkspaceMutationManager } from '../../../platform/testing/common/workspaceMutationManager';
88
import { ISetupTestsDetector, NullSetupTestsDetector } from '../../../platform/testing/node/setupTestDetector';
89
import { TestProvider } from '../../../platform/testing/vscode/testProviderImpl';
90
import { ITokenizerProvider, TokenizerProvider } from '../../../platform/tokenizer/node/tokenizer';
91
import { IWorkspaceService } from '../../../platform/workspace/common/workspaceService';
92
import { ExtensionTextDocumentManager } from '../../../platform/workspace/vscode/workspaceServiceImpl';
93
import { GithubAvailableEmbeddingTypesService, IGithubAvailableEmbeddingTypesService } from '../../../platform/workspaceChunkSearch/common/githubAvailableEmbeddingTypes';
94
import { IRerankerService, RerankerService } from '../../../platform/workspaceChunkSearch/common/rerankerService';
95
import { SyncDescriptor } from '../../../util/vs/platform/instantiation/common/descriptors';
96
import { IToolResultContentRenderer } from '../../agentDebug/common/toolResultRenderer';
97
import { ToolResultContentRenderer } from '../../agentDebug/vscode-node/toolResultContentRenderer';
98
import { GitHubOrgChatResourcesService, IGitHubOrgChatResourcesService } from '../../agents/vscode-node/githubOrgChatResourcesService';
99
import { CommandServiceImpl, ICommandService } from '../../commands/node/commandService';
100
import { ICopilotInlineCompletionItemProviderService, NullCopilotInlineCompletionItemProviderService } from '../../completions/common/copilotInlineCompletionItemProviderService';
101
import { IPromptWorkspaceLabels, PromptWorkspaceLabels } from '../../context/node/resolvers/promptWorkspaceLabels';
102
import { IUserFeedbackService, UserFeedbackService } from '../../conversation/vscode-node/userActions';
103
import { ConversationStore, IConversationStore } from '../../conversationStore/node/conversationStore';
104
import { ITestGenInfoStorage, TestGenInfoStorage } from '../../intents/node/testIntent/testInfoStorage';
105
import { ILinkifyService, LinkifyService } from '../../linkify/common/linkifyService';
106
import { ILaunchConfigService } from '../../onboardDebug/common/launchConfigService';
107
import { DebugCommandToConfigConverter, IDebugCommandToConfigConverter } from '../../onboardDebug/node/commandToConfigConverter';
108
import { DebuggableCommandIdentifier, IDebuggableCommandIdentifier } from '../../onboardDebug/node/debuggableCommandIdentifier';
109
import { ILanguageToolsProvider, LanguageToolsProvider } from '../../onboardDebug/node/languageToolsProvider';
110
import { LaunchConfigService } from '../../onboardDebug/vscode/launchConfigService';
111
import { IPowerService, NullPowerService } from '../../power/common/powerService';
112
import { ChatMLFetcherImpl } from '../../prompt/node/chatMLFetcher';
113
import { IFeedbackReporter, NullFeedbackReporterImpl } from '../../prompt/node/feedbackReporter';
114
import { IPromptVariablesService } from '../../prompt/node/promptVariablesService';
115
import { ITodoListContextProvider, TodoListContextProvider } from '../../prompt/node/todoListContextProvider';
116
import { GitDiffService } from '../../prompt/vscode-node/gitDiffService';
117
import { PromptVariablesServiceImpl } from '../../prompt/vscode-node/promptVariablesService';
118
import { IChatDiskSessionResources } from '../../prompts/common/chatDiskSessionResources';
119
import { ChatDiskSessionResources } from '../../prompts/node/chatDiskSessionResourcesImpl';
120
import { CodeMapperService, ICodeMapperService } from '../../prompts/node/codeMapper/codeMapperService';
121
import { FixCookbookService, IFixCookbookService } from '../../prompts/node/inline/fixCookbookService';
122
import { WorkspaceMutationManager } from '../../testing/node/setupTestsFileManager';
123
import { AgentMemoryService, IAgentMemoryService } from '../../tools/common/agentMemoryService';
124
import { EditToolLearningService, IEditToolLearningService } from '../../tools/common/editToolLearningService';
125
import { IToolDeferralService } from '../../../platform/networking/common/toolDeferralService';
126
import { ToolDeferralService } from '../../tools/common/toolDeferralService';
127
import { IToolsService, NullToolsService } from '../../tools/common/toolsService';
128
import { ToolGroupingService } from '../../tools/common/virtualTools/toolGroupingService';
129
import { ToolGroupingCache } from '../../tools/common/virtualTools/virtualToolGroupCache';
130
import { IToolGroupingCache, IToolGroupingService } from '../../tools/common/virtualTools/virtualToolTypes';
131
import { ISessionStore } from '../../../platform/chronicle/common/sessionStore';
132
import { SessionStore } from '../../../platform/chronicle/node/sessionStore';
133
134
/**
135
* A default context for VSCode extension testing, building on general one in `lib`.
136
* Only includes items that are needed for almost all extension tests.
137
*/
138
export function createExtensionTestingServices(): TestingServiceCollection {
139
const testingServiceCollection = _createBaselineServices();
140
testingServiceCollection.define(IAutomodeService, new SyncDescriptor(AutomodeService));
141
testingServiceCollection.define(IFileSystemService, new SyncDescriptor(NodeFileSystemService));
142
testingServiceCollection.define(IConfigurationService, new SyncDescriptor(DefaultsOnlyConfigurationService));
143
testingServiceCollection.define(IEnvService, new SyncDescriptor(TestEnvService));
144
testingServiceCollection.define(INativeEnvService, new SyncDescriptor(NullNativeEnvService));
145
testingServiceCollection.define(ISimulationTestContext, new SyncDescriptor(NulSimulationTestContext));
146
testingServiceCollection.define(IRequestLogger, new SyncDescriptor(NullRequestLogger));
147
testingServiceCollection.define(IFeedbackReporter, new SyncDescriptor(NullFeedbackReporterImpl));
148
testingServiceCollection.define(IEndpointProvider, new SyncDescriptor(TestEndpointProvider, [undefined, undefined, undefined, undefined, false, undefined]));
149
testingServiceCollection.define(ICopilotTokenStore, new SyncDescriptor(CopilotTokenStore));
150
testingServiceCollection.define(IDomainService, new SyncDescriptor(DomainService));
151
testingServiceCollection.define(ICAPIClientService, new SyncDescriptor(CAPIClientImpl));
152
testingServiceCollection.define(INotificationService, new SyncDescriptor(NullNotificationService));
153
testingServiceCollection.define(ICommandService, new SyncDescriptor(CommandServiceImpl));
154
testingServiceCollection.define(IPromptVariablesService, new SyncDescriptor(PromptVariablesServiceImpl));
155
testingServiceCollection.define(IVSCodeExtensionContext, new SyncDescriptor(MockExtensionContext));
156
testingServiceCollection.define(IIgnoreService, new SyncDescriptor(NullIgnoreService));
157
testingServiceCollection.define(IRemoteRepositoriesService, new SyncDescriptor(RemoteRepositoriesService));
158
testingServiceCollection.define(IWorkspaceService, new SyncDescriptor(ExtensionTextDocumentManager));
159
testingServiceCollection.define(IMcpService, new SyncDescriptor(NullMcpService));
160
testingServiceCollection.define(IExtensionsService, new SyncDescriptor(VSCodeExtensionsService));
161
testingServiceCollection.define(IPowerService, new SyncDescriptor(NullPowerService));
162
testingServiceCollection.define(IChatMLFetcher, new SyncDescriptor(ChatMLFetcherImpl));
163
testingServiceCollection.define(IChatWebSocketManager, new SyncDescriptor(NullChatWebSocketManager));
164
testingServiceCollection.define(IImageService, nullImageService);
165
testingServiceCollection.define(ITabsAndEditorsService, new SyncDescriptor(TabsAndEditorsServiceImpl));
166
testingServiceCollection.define(IEmbeddingsComputer, new SyncDescriptor(RemoteEmbeddingsComputer));
167
testingServiceCollection.define(ITelemetryService, new SyncDescriptor(NullTelemetryService));
168
testingServiceCollection.define(ILanguageDiagnosticsService, new SyncDescriptor(LanguageDiagnosticsServiceImpl));
169
testingServiceCollection.define(ITokenizerProvider, new SyncDescriptor(TokenizerProvider, [true]));
170
testingServiceCollection.define(IPromptWorkspaceLabels, new SyncDescriptor(PromptWorkspaceLabels));
171
testingServiceCollection.define(IGitDiffService, new SyncDescriptor(GitDiffService));
172
testingServiceCollection.define(IGitExtensionService, new SyncDescriptor(GitExtensionServiceImpl));
173
testingServiceCollection.define(IGitService, new SyncDescriptor(GitServiceImpl));
174
testingServiceCollection.define(IOctoKitService, new SyncDescriptor(OctoKitService));
175
testingServiceCollection.define(ISetupTestsDetector, new SyncDescriptor(NullSetupTestsDetector));
176
testingServiceCollection.define(IWorkspaceMutationManager, new SyncDescriptor(WorkspaceMutationManager));
177
testingServiceCollection.define(ITestProvider, new SyncDescriptor(TestProvider));
178
testingServiceCollection.define(INaiveChunkingService, new SyncDescriptor(NaiveChunkingService));
179
testingServiceCollection.define(ILinkifyService, new SyncDescriptor(LinkifyService));
180
testingServiceCollection.define(ITestGenInfoStorage, new SyncDescriptor(TestGenInfoStorage));
181
testingServiceCollection.define(IEditToolLearningService, new SyncDescriptor(EditToolLearningService));
182
testingServiceCollection.define(IAgentMemoryService, new SyncDescriptor(AgentMemoryService));
183
testingServiceCollection.define(IDebugCommandToConfigConverter, new SyncDescriptor(DebugCommandToConfigConverter));
184
testingServiceCollection.define(ILaunchConfigService, new SyncDescriptor(LaunchConfigService));
185
testingServiceCollection.define(IDebuggableCommandIdentifier, new SyncDescriptor(DebuggableCommandIdentifier));
186
testingServiceCollection.define(ILanguageToolsProvider, new SyncDescriptor(LanguageToolsProvider));
187
testingServiceCollection.define(IEditLogService, new SyncDescriptor(EditLogService));
188
testingServiceCollection.define(IMultiFileEditInternalTelemetryService, new SyncDescriptor(MultiFileEditInternalTelemetryService));
189
testingServiceCollection.define(ICodeMapperService, new SyncDescriptor(CodeMapperService));
190
testingServiceCollection.define(IAlternativeNotebookContentService, new SyncDescriptor(MockAlternativeNotebookContentService));
191
testingServiceCollection.define(IAlternativeNotebookContentEditGenerator, new SyncDescriptor(AlternativeNotebookContentEditGenerator));
192
testingServiceCollection.define(IDiffService, new SyncDescriptor(DiffServiceImpl));
193
testingServiceCollection.define(ICompletionsFetchService, new SyncDescriptor(CompletionsFetchService));
194
testingServiceCollection.define(IDebugOutputService, new SyncDescriptor(DebugOutputServiceImpl));
195
testingServiceCollection.define(IUserFeedbackService, new SyncDescriptor(UserFeedbackService));
196
testingServiceCollection.define(ITerminalService, new SyncDescriptor(TerminalServiceImpl));
197
testingServiceCollection.define(IConversationStore, new SyncDescriptor(ConversationStore));
198
testingServiceCollection.define(IFixCookbookService, new SyncDescriptor(FixCookbookService));
199
testingServiceCollection.define(IReviewService, new SyncDescriptor(SimulationReviewService));
200
testingServiceCollection.define(IBlockedExtensionService, new SyncDescriptor(BlockedExtensionService));
201
testingServiceCollection.define(IDialogService, new SyncDescriptor(TestingDialogService));
202
testingServiceCollection.define(ILanguageFeaturesService, new SyncDescriptor(NoopLanguageFeaturesService));
203
testingServiceCollection.define(IScopeSelector, new SyncDescriptor(ScopeSelectorImpl));
204
testingServiceCollection.define(IPromptPathRepresentationService, new SyncDescriptor(PromptPathRepresentationService));
205
testingServiceCollection.define(IPromptsService, new SyncDescriptor(PromptsServiceImpl));
206
testingServiceCollection.define(IToolsService, new SyncDescriptor(NullToolsService));
207
testingServiceCollection.define(IToolDeferralService, new ToolDeferralService());
208
testingServiceCollection.define(IChatDiskSessionResources, new SyncDescriptor(ChatDiskSessionResources));
209
testingServiceCollection.define(IChatSessionService, new SyncDescriptor(TestChatSessionService));
210
testingServiceCollection.define(INotebookService, new SyncDescriptor(SimulationNotebookService));
211
testingServiceCollection.define(IRunCommandExecutionService, new SyncDescriptor(MockRunCommandExecutionService));
212
testingServiceCollection.define(ISearchService, new SyncDescriptor(SearchServiceImpl));
213
testingServiceCollection.define(IToolGroupingCache, new SyncDescriptor(ToolGroupingCache));
214
testingServiceCollection.define(IToolGroupingService, new SyncDescriptor(ToolGroupingService));
215
testingServiceCollection.define(ITodoListContextProvider, new SyncDescriptor(TodoListContextProvider));
216
testingServiceCollection.define(IGithubAvailableEmbeddingTypesService, new SyncDescriptor(GithubAvailableEmbeddingTypesService));
217
testingServiceCollection.define(IProxyModelsService, new SyncDescriptor(NullProxyModelsService));
218
testingServiceCollection.define(IInlineEditsModelService, new SyncDescriptor(InlineEditsModelService));
219
testingServiceCollection.define(IUndesiredModelsManager, new SyncDescriptor(UndesiredModels.Manager));
220
testingServiceCollection.define(ICopilotInlineCompletionItemProviderService, new SyncDescriptor(NullCopilotInlineCompletionItemProviderService));
221
testingServiceCollection.define(IRerankerService, new SyncDescriptor(RerankerService));
222
testingServiceCollection.define(IOTelSqliteStore, new OTelSqliteStore(':memory:'));
223
testingServiceCollection.define(ISessionStore, new SessionStore(':memory:'));
224
testingServiceCollection.define(IToolResultContentRenderer, new SyncDescriptor(ToolResultContentRenderer));
225
testingServiceCollection.define(IGitHubOrgChatResourcesService, new SyncDescriptor(GitHubOrgChatResourcesService));
226
227
return testingServiceCollection;
228
}
229
230
class TestEnvService extends EnvServiceImpl {
231
override get sessionId(): string {
232
return 'test-session';
233
}
234
235
override get machineId(): string {
236
return 'test-machine';
237
}
238
239
override get devDeviceId(): string {
240
return 'test-dev-device';
241
}
242
}
243
244