Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/test/base/extHostContext/simulationWorkspaceExtHost.ts
13394 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
// Allow importing vscode here. eslint does not let us exclude this path: https://github.com/import-js/eslint-plugin-import/issues/2800
6
/* eslint-disable copilot-local/no-runtime-import */
7
8
import { writeFileSync } from 'fs';
9
import * as vscode from 'vscode';
10
import { TestingServiceCollection } from '../../../src/platform/test/node/services';
11
import { SimulationWorkspace } from '../../../src/platform/test/node/simulationWorkspace';
12
import { isEqualOrParent } from '../../../src/util/vs/base/common/resources';
13
import { addExtensionHostSimulationServices } from './simulationExtHostContext';
14
15
export class SimulationWorkspaceExtHost extends SimulationWorkspace {
16
private readonly _root = vscode.workspace.workspaceFolders![0].uri;
17
18
public override setupServices(testingServiceCollection: TestingServiceCollection): void {
19
super.setupServices(testingServiceCollection);
20
addExtensionHostSimulationServices(testingServiceCollection);
21
vscode.commands.executeCommand('setContext', 'vscode.chat.tools.global.autoApprove.testMode', true);
22
vscode.workspace.getConfiguration('chat.tools.global').update('autoApprove', true, vscode.ConfigurationTarget.Global);
23
vscode.workspace.getConfiguration('chat.tools.terminal').update('autoReplyToPrompts', true, vscode.ConfigurationTarget.Global);
24
}
25
26
override applyEdits(uri: vscode.Uri, edits: vscode.TextEdit[], initialRange?: vscode.Range): vscode.Range {
27
const res = super.applyEdits(uri, edits, initialRange);
28
29
if (isEqualOrParent(uri, this._root)) {
30
const document = this.getDocument(uri);
31
writeFileSync(uri.fsPath, document.getText(), 'utf8');
32
}
33
34
return res;
35
}
36
}
37
38