Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/services/extensions/test/common/extensionDescriptionRegistry.test.ts
3296 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 assert from 'assert';
7
import { URI } from '../../../../../base/common/uri.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
9
import { ExtensionIdentifier, IExtensionDescription, TargetPlatform } from '../../../../../platform/extensions/common/extensions.js';
10
import { ExtensionDescriptionRegistry, IActivationEventsReader } from '../../common/extensionDescriptionRegistry.js';
11
12
suite('ExtensionDescriptionRegistry', () => {
13
14
ensureNoDisposablesAreLeakedInTestSuite();
15
16
test('allow removing and adding the same extension at a different version', () => {
17
const idA = new ExtensionIdentifier('a');
18
const extensionA1 = desc(idA, '1.0.0');
19
const extensionA2 = desc(idA, '2.0.0');
20
21
const basicActivationEventsReader: IActivationEventsReader = {
22
readActivationEvents: (extensionDescription: IExtensionDescription): string[] => {
23
return extensionDescription.activationEvents ?? [];
24
}
25
};
26
27
const registry = new ExtensionDescriptionRegistry(basicActivationEventsReader, [extensionA1]);
28
registry.deltaExtensions([extensionA2], [idA]);
29
30
assert.deepStrictEqual(registry.getAllExtensionDescriptions(), [extensionA2]);
31
32
registry.dispose();
33
});
34
35
function desc(id: ExtensionIdentifier, version: string, activationEvents: string[] = ['*']): IExtensionDescription {
36
return {
37
name: id.value,
38
publisher: 'test',
39
version: '0.0.0',
40
engines: { vscode: '^1.0.0' },
41
identifier: id,
42
extensionLocation: URI.parse(`nothing://nowhere`),
43
isBuiltin: false,
44
isUnderDevelopment: false,
45
isUserBuiltin: false,
46
activationEvents,
47
main: 'index.js',
48
targetPlatform: TargetPlatform.UNDEFINED,
49
extensionDependencies: [],
50
enabledApiProposals: undefined,
51
preRelease: false,
52
};
53
}
54
});
55
56