Path: blob/main/src/vs/workbench/api/test/common/extHostSCM.test.ts
13401 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 * as assert from 'assert';6import { URI } from '../../../../base/common/uri.js';7import { mock } from '../../../../base/test/common/mock.js';8import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';9import { NullLogService } from '../../../../platform/log/common/log.js';10import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';11import { nullExtensionDescription } from '../../../services/extensions/common/extensions.js';12import { MainContext, MainThreadSCMShape, MainThreadTelemetryShape } from '../../common/extHost.protocol.js';13import { ArgumentProcessor, ExtHostCommands } from '../../common/extHostCommands.js';14import { ExtHostDocuments } from '../../common/extHostDocuments.js';15import { ExtHostSCM } from '../../common/extHostSCM.js';16import { TestRPCProtocol } from './testRPCProtocol.js';1718suite('ExtHostSCM', () => {19ensureNoDisposablesAreLeakedInTestSuite();2021test('disposed source controls are removed from extension bookkeeping', () => {22const rpcProtocol = new TestRPCProtocol();23rpcProtocol.set(MainContext.MainThreadSCM, new class extends mock<MainThreadSCMShape>() {24override async $registerSourceControl(): Promise<void> { }25override async $unregisterSourceControl(): Promise<void> { }26});27rpcProtocol.set(MainContext.MainThreadTelemetry, new class extends mock<MainThreadTelemetryShape>() {28override $publicLog2(): void { }29});3031const commands = new class extends mock<ExtHostCommands>() {32override registerArgumentProcessor(_processor: ArgumentProcessor): void { }33};34const extension = {35...nullExtensionDescription,36identifier: new ExtensionIdentifier('vscode.git'),37name: 'git',38displayName: 'Git',39extensionLocation: URI.file('/extension'),40isBuiltin: true41};4243const extHostSCM = new ExtHostSCM(44rpcProtocol,45commands,46{} as ExtHostDocuments,47new NullLogService()48);4950const sourceControl = extHostSCM.createSourceControl(extension, 'git', 'Git', URI.file('/repo'), undefined, undefined, undefined);51assert.ok(extHostSCM.getLastInputBox(extension));5253sourceControl.dispose();5455assert.strictEqual(extHostSCM.getLastInputBox(extension), undefined);56});57});585960