Path: blob/main/src/vs/workbench/services/extensions/test/common/extensionDescriptionRegistry.test.ts
3296 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 assert from 'assert';6import { URI } from '../../../../../base/common/uri.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';8import { ExtensionIdentifier, IExtensionDescription, TargetPlatform } from '../../../../../platform/extensions/common/extensions.js';9import { ExtensionDescriptionRegistry, IActivationEventsReader } from '../../common/extensionDescriptionRegistry.js';1011suite('ExtensionDescriptionRegistry', () => {1213ensureNoDisposablesAreLeakedInTestSuite();1415test('allow removing and adding the same extension at a different version', () => {16const idA = new ExtensionIdentifier('a');17const extensionA1 = desc(idA, '1.0.0');18const extensionA2 = desc(idA, '2.0.0');1920const basicActivationEventsReader: IActivationEventsReader = {21readActivationEvents: (extensionDescription: IExtensionDescription): string[] => {22return extensionDescription.activationEvents ?? [];23}24};2526const registry = new ExtensionDescriptionRegistry(basicActivationEventsReader, [extensionA1]);27registry.deltaExtensions([extensionA2], [idA]);2829assert.deepStrictEqual(registry.getAllExtensionDescriptions(), [extensionA2]);3031registry.dispose();32});3334function desc(id: ExtensionIdentifier, version: string, activationEvents: string[] = ['*']): IExtensionDescription {35return {36name: id.value,37publisher: 'test',38version: '0.0.0',39engines: { vscode: '^1.0.0' },40identifier: id,41extensionLocation: URI.parse(`nothing://nowhere`),42isBuiltin: false,43isUnderDevelopment: false,44isUserBuiltin: false,45activationEvents,46main: 'index.js',47targetPlatform: TargetPlatform.UNDEFINED,48extensionDependencies: [],49enabledApiProposals: undefined,50preRelease: false,51};52}53});545556