Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/api/test/common/extHostSCM.test.ts
13401 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 * as assert from 'assert';
7
import { URI } from '../../../../base/common/uri.js';
8
import { mock } from '../../../../base/test/common/mock.js';
9
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
10
import { NullLogService } from '../../../../platform/log/common/log.js';
11
import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
12
import { nullExtensionDescription } from '../../../services/extensions/common/extensions.js';
13
import { MainContext, MainThreadSCMShape, MainThreadTelemetryShape } from '../../common/extHost.protocol.js';
14
import { ArgumentProcessor, ExtHostCommands } from '../../common/extHostCommands.js';
15
import { ExtHostDocuments } from '../../common/extHostDocuments.js';
16
import { ExtHostSCM } from '../../common/extHostSCM.js';
17
import { TestRPCProtocol } from './testRPCProtocol.js';
18
19
suite('ExtHostSCM', () => {
20
ensureNoDisposablesAreLeakedInTestSuite();
21
22
test('disposed source controls are removed from extension bookkeeping', () => {
23
const rpcProtocol = new TestRPCProtocol();
24
rpcProtocol.set(MainContext.MainThreadSCM, new class extends mock<MainThreadSCMShape>() {
25
override async $registerSourceControl(): Promise<void> { }
26
override async $unregisterSourceControl(): Promise<void> { }
27
});
28
rpcProtocol.set(MainContext.MainThreadTelemetry, new class extends mock<MainThreadTelemetryShape>() {
29
override $publicLog2(): void { }
30
});
31
32
const commands = new class extends mock<ExtHostCommands>() {
33
override registerArgumentProcessor(_processor: ArgumentProcessor): void { }
34
};
35
const extension = {
36
...nullExtensionDescription,
37
identifier: new ExtensionIdentifier('vscode.git'),
38
name: 'git',
39
displayName: 'Git',
40
extensionLocation: URI.file('/extension'),
41
isBuiltin: true
42
};
43
44
const extHostSCM = new ExtHostSCM(
45
rpcProtocol,
46
commands,
47
{} as ExtHostDocuments,
48
new NullLogService()
49
);
50
51
const sourceControl = extHostSCM.createSourceControl(extension, 'git', 'Git', URI.file('/repo'), undefined, undefined, undefined);
52
assert.ok(extHostSCM.getLastInputBox(extension));
53
54
sourceControl.dispose();
55
56
assert.strictEqual(extHostSCM.getLastInputBox(extension), undefined);
57
});
58
});
59
60