mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-04-01 01:20:31 -04:00
Merge from vscode 2e5312cd61ff99c570299ecc122c52584265eda2
This commit is contained in:
committed by
Anthony Dresser
parent
3603f55d97
commit
7f1d8fc32f
@@ -21,8 +21,8 @@ import { Emitter } from 'vs/base/common/event';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { TestLifecycleService, productService } from 'vs/workbench/test/browser/workbenchTestServices';
|
||||
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { TestLifecycleService } from 'vs/workbench/test/browser/workbenchTestServices';
|
||||
import { TestContextService, TestStorageService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { TestSharedProcessService } from 'vs/workbench/test/electron-browser/workbenchTestServices';
|
||||
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
@@ -48,7 +48,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
|
||||
import { ExtensionType } from 'vs/platform/extensions/common/extensions';
|
||||
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
|
||||
import { FileService } from 'vs/platform/files/common/fileService';
|
||||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { NullLogService, ILogService } from 'vs/platform/log/common/log';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
@@ -57,6 +57,7 @@ import { ExtensionTipsService } from 'vs/platform/extensionManagement/node/exten
|
||||
import { ExtensionRecommendationsService } from 'vs/workbench/contrib/extensions/browser/extensionRecommendationsService';
|
||||
import { NoOpWorkspaceTagsService } from 'vs/workbench/contrib/tags/browser/workspaceTagsService';
|
||||
import { IWorkspaceTagsService } from 'vs/workbench/contrib/tags/common/workspaceTags';
|
||||
import { IStorageKeysSyncRegistryService, StorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common/storageKeys';
|
||||
|
||||
const mockExtensionGallery: IGalleryExtension[] = [
|
||||
aGalleryExtension('MockExtension1', {
|
||||
@@ -207,23 +208,23 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
instantiationService.stub(ITelemetryService, NullTelemetryService);
|
||||
instantiationService.stub(IURLService, URLService);
|
||||
instantiationService.stub(IWorkspaceTagsService, new NoOpWorkspaceTagsService());
|
||||
instantiationService.set(IProductService, {
|
||||
...productService,
|
||||
...{
|
||||
extensionTips: {
|
||||
'ms-dotnettools.csharp': '{**/*.cs,**/project.json,**/global.json,**/*.csproj,**/*.sln,**/appsettings.json}',
|
||||
'msjsdiag.debugger-for-chrome': '{**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.es6,**/*.mjs,**/*.cjs,**/.babelrc}',
|
||||
'lukehoban.Go': '**/*.go'
|
||||
instantiationService.stub(IStorageService, new TestStorageService());
|
||||
instantiationService.stub(ILogService, new NullLogService());
|
||||
instantiationService.stub(IStorageKeysSyncRegistryService, new StorageKeysSyncRegistryService());
|
||||
instantiationService.stub(IProductService, <Partial<IProductService>>{
|
||||
extensionTips: {
|
||||
'ms-dotnettools.csharp': '{**/*.cs,**/project.json,**/global.json,**/*.csproj,**/*.sln,**/appsettings.json}',
|
||||
'msjsdiag.debugger-for-chrome': '{**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.es6,**/*.mjs,**/*.cjs,**/.babelrc}',
|
||||
'lukehoban.Go': '**/*.go'
|
||||
},
|
||||
extensionImportantTips: {
|
||||
'ms-python.python': {
|
||||
'name': 'Python',
|
||||
'pattern': '{**/*.py}'
|
||||
},
|
||||
extensionImportantTips: {
|
||||
'ms-python.python': {
|
||||
'name': 'Python',
|
||||
'pattern': '{**/*.py}'
|
||||
},
|
||||
'ms-vscode.PowerShell': {
|
||||
'name': 'PowerShell',
|
||||
'pattern': '{**/*.ps,**/*.ps1}'
|
||||
}
|
||||
'ms-vscode.PowerShell': {
|
||||
'name': 'PowerShell',
|
||||
'pattern': '{**/*.ps,**/*.ps1}'
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -259,7 +260,6 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
instantiationService.stub(INotificationService, new TestNotificationService2());
|
||||
|
||||
testConfigurationService.setUserConfiguration(ConfigurationKey, { ignoreRecommendations: false, showRecommendationsOnlyOnDemand: false });
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{ get: (a: string, b: StorageScope, c?: string) => c, getBoolean: (a: string, b: StorageScope, c: boolean) => c, store: () => { } });
|
||||
instantiationService.stub(IModelService, <IModelService>{
|
||||
getModels(): any { return []; },
|
||||
onModelAdded: onModelAddedEvent.event
|
||||
@@ -380,23 +380,14 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: No Prompt for valid workspace recommendations if ignoreRecommendations is set for current workspace', () => {
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{ get: (a: string, b: StorageScope, c?: string) => c, getBoolean: (a: string, b: StorageScope, c?: boolean) => a === 'extensionsAssistant/workspaceRecommendationsIgnore' || c });
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
return testNoPromptForValidRecommendations(mockTestData.validRecommendedExtensions);
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: No Recommendations of globally ignored recommendations', () => {
|
||||
const storageGetterStub = (a: string, _: StorageScope, c?: string) => {
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python", "ms-vscode.vscode-typescript-tslint-plugin"]';
|
||||
const ignoredRecommendations = '["ms-dotnettools.csharp", "mockpublisher2.mockextension2"]'; // ignore a stored recommendation and a workspace recommendation.
|
||||
if (a === 'extensionsAssistant/recommendations') { return storedRecommendations; }
|
||||
if (a === 'extensionsAssistant/ignored_recommendations') { return ignoredRecommendations; }
|
||||
return c;
|
||||
};
|
||||
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{
|
||||
get: storageGetterStub,
|
||||
getBoolean: (a: string, _: StorageScope, c?: boolean) => a === 'extensionsAssistant/workspaceRecommendationsIgnore' || c
|
||||
});
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', '["ms-dotnettools.csharp", "ms-python.python", "ms-vscode.vscode-typescript-tslint-plugin"]', StorageScope.GLOBAL);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/ignored_recommendations', '["ms-dotnettools.csharp", "mockpublisher2.mockextension2"]', StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -413,10 +404,8 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
test('ExtensionRecommendationsService: No Recommendations of workspace ignored recommendations', () => {
|
||||
const ignoredRecommendations = ['ms-dotnettools.csharp', 'mockpublisher2.mockextension2']; // ignore a stored recommendation and a workspace recommendation.
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python"]';
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{
|
||||
get: (a: string, b: StorageScope, c?: string) => a === 'extensionsAssistant/recommendations' ? storedRecommendations : c,
|
||||
getBoolean: (a: string, _: StorageScope, c?: boolean) => a === 'extensionsAssistant/workspaceRecommendationsIgnore' || c
|
||||
});
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', storedRecommendations, StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions, ignoredRecommendations).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -432,19 +421,12 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
test('ExtensionRecommendationsService: Able to retrieve collection of all ignored recommendations', () => {
|
||||
|
||||
const storageGetterStub = (a: string, _: StorageScope, c?: string) => {
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python"]';
|
||||
const globallyIgnoredRecommendations = '["mockpublisher2.mockextension2"]'; // ignore a workspace recommendation.
|
||||
if (a === 'extensionsAssistant/recommendations') { return storedRecommendations; }
|
||||
if (a === 'extensionsAssistant/ignored_recommendations') { return globallyIgnoredRecommendations; }
|
||||
return c;
|
||||
};
|
||||
|
||||
const workspaceIgnoredRecommendations = ['ms-dotnettools.csharp']; // ignore a stored recommendation and a workspace recommendation.
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{
|
||||
get: storageGetterStub,
|
||||
getBoolean: (a: string, _: StorageScope, c?: boolean) => a === 'extensionsAssistant/workspaceRecommendationsIgnore' || c
|
||||
});
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python"]';
|
||||
const globallyIgnoredRecommendations = '["mockpublisher2.mockextension2"]'; // ignore a workspace recommendation.
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', storedRecommendations, StorageScope.GLOBAL);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/ignored_recommendations', globallyIgnoredRecommendations, StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions, workspaceIgnoredRecommendations).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -459,19 +441,11 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: Able to dynamically ignore/unignore global recommendations', () => {
|
||||
const storageGetterStub = (a: string, _: StorageScope, c?: string) => {
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python"]';
|
||||
const globallyIgnoredRecommendations = '["mockpublisher2.mockextension2"]'; // ignore a workspace recommendation.
|
||||
if (a === 'extensionsAssistant/recommendations') { return storedRecommendations; }
|
||||
if (a === 'extensionsAssistant/ignored_recommendations') { return globallyIgnoredRecommendations; }
|
||||
return c;
|
||||
};
|
||||
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{
|
||||
get: storageGetterStub,
|
||||
store: () => { },
|
||||
getBoolean: (a: string, _: StorageScope, c?: boolean) => a === 'extensionsAssistant/workspaceRecommendationsIgnore' || c
|
||||
});
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python"]';
|
||||
const globallyIgnoredRecommendations = '["mockpublisher2.mockextension2"]'; // ignore a workspace recommendation.
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', storedRecommendations, StorageScope.GLOBAL);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/ignored_recommendations', globallyIgnoredRecommendations, StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -502,16 +476,11 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
});
|
||||
|
||||
test('test global extensions are modified and recommendation change event is fired when an extension is ignored', async () => {
|
||||
const storageSetterTarget = sinon.spy();
|
||||
const changeHandlerTarget = sinon.spy();
|
||||
const ignoredExtensionId = 'Some.Extension';
|
||||
instantiationService.stub(IStorageService, <any>{ // {{SQL CARBON EDIT}} strict-null-checks?
|
||||
get: (a: string, b: StorageScope, c?: boolean) => a === 'extensionsAssistant/ignored_recommendations' ? '["ms-vscode.vscode"]' : c,
|
||||
getBoolean: (a: string, b: StorageScope, c: boolean) => c,
|
||||
store: (...args: any[]) => {
|
||||
storageSetterTarget(...args);
|
||||
}
|
||||
});
|
||||
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/workspaceRecommendationsIgnore', true, StorageScope.WORKSPACE);
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/ignored_recommendations', '["ms-vscode.vscode"]', StorageScope.GLOBAL);
|
||||
|
||||
await setUpFolderWorkspace('myFolder', []);
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -520,13 +489,12 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
await testObject.loadWorkspaceConfigPromise;
|
||||
|
||||
assert.ok(changeHandlerTarget.calledOnce);
|
||||
assert.ok(changeHandlerTarget.getCall(0).calledWithMatch({ extensionId: 'Some.Extension', isRecommended: false }));
|
||||
assert.ok(storageSetterTarget.calledWithExactly('extensionsAssistant/ignored_recommendations', `["ms-vscode.vscode","${ignoredExtensionId.toLowerCase()}"]`, StorageScope.GLOBAL));
|
||||
assert.ok(changeHandlerTarget.getCall(0).calledWithMatch({ extensionId: ignoredExtensionId.toLowerCase(), isRecommended: false }));
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: Get file based recommendations from storage (old format)', () => {
|
||||
const storedRecommendations = '["ms-dotnettools.csharp", "ms-python.python", "ms-vscode.vscode-typescript-tslint-plugin"]';
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{ get: (a: string, b: StorageScope, c?: string) => a === 'extensionsAssistant/recommendations' ? storedRecommendations : c, getBoolean: (a: string, b: StorageScope, c: boolean) => c });
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', storedRecommendations, StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', []).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
@@ -545,7 +513,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
const now = Date.now();
|
||||
const tenDaysOld = 10 * milliSecondsInADay;
|
||||
const storedRecommendations = `{"ms-dotnettools.csharp": ${now}, "ms-python.python": ${now}, "ms-vscode.vscode-typescript-tslint-plugin": ${now}, "lukehoban.Go": ${tenDaysOld}}`;
|
||||
instantiationService.stub(IStorageService, <Partial<IStorageService>>{ get: (a: string, b: StorageScope, c?: string) => a === 'extensionsAssistant/recommendations' ? storedRecommendations : c, getBoolean: (a: string, b: StorageScope, c: boolean) => c });
|
||||
instantiationService.get(IStorageService).store('extensionsAssistant/recommendations', storedRecommendations, StorageScope.GLOBAL);
|
||||
|
||||
return setUpFolderWorkspace('myFolder', []).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
|
||||
@@ -11,12 +11,11 @@ import * as ExtensionsActions from 'vs/workbench/contrib/extensions/browser/exte
|
||||
import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService';
|
||||
import {
|
||||
IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension,
|
||||
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, InstallOperation
|
||||
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, InstallOperation, IExtensionTipsService
|
||||
} from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IExtensionRecommendationsService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
|
||||
import { ExtensionRecommendationsService } from 'vs/workbench/contrib/extensions/browser/extensionRecommendationsService';
|
||||
import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test';
|
||||
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService';
|
||||
import { IURLService } from 'vs/platform/url/common/url';
|
||||
@@ -47,6 +46,12 @@ import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts';
|
||||
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
||||
import { IProgressService } from 'vs/platform/progress/common/progress';
|
||||
import { ProgressService } from 'vs/workbench/services/progress/browser/progressService';
|
||||
import { IStorageKeysSyncRegistryService, StorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common/storageKeys';
|
||||
import { TestExperimentService } from 'vs/workbench/contrib/experiments/test/electron-browser/experimentService.test';
|
||||
import { IExperimentService } from 'vs/workbench/contrib/experiments/common/experimentService';
|
||||
import { ExtensionTipsService } from 'vs/platform/extensionManagement/node/extensionTipsService';
|
||||
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
|
||||
import { TestLifecycleService } from 'vs/workbench/test/browser/workbenchTestServices';
|
||||
|
||||
suite('ExtensionsActions Test', () => {
|
||||
|
||||
@@ -71,6 +76,8 @@ suite('ExtensionsActions Test', () => {
|
||||
instantiationService.stub(IWorkspaceContextService, new TestContextService());
|
||||
instantiationService.stub(IConfigurationService, new TestConfigurationService());
|
||||
instantiationService.stub(IProgressService, ProgressService);
|
||||
instantiationService.stub(IStorageKeysSyncRegistryService, new StorageKeysSyncRegistryService());
|
||||
instantiationService.stub(IProductService, {});
|
||||
|
||||
instantiationService.stub(IExtensionGalleryService, ExtensionGalleryService);
|
||||
instantiationService.stub(ISharedProcessService, TestSharedProcessService);
|
||||
@@ -94,7 +101,10 @@ suite('ExtensionsActions Test', () => {
|
||||
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
|
||||
instantiationService.stub(ILabelService, { onDidChangeFormatters: new Emitter<IFormatterChangeEvent>().event });
|
||||
|
||||
instantiationService.set(IExtensionRecommendationsService, instantiationService.createInstance(ExtensionRecommendationsService));
|
||||
instantiationService.stub(ILifecycleService, new TestLifecycleService());
|
||||
instantiationService.stub(IExperimentService, instantiationService.createInstance(TestExperimentService));
|
||||
instantiationService.stub(IExtensionTipsService, instantiationService.createInstance(ExtensionTipsService));
|
||||
instantiationService.stub(IExtensionRecommendationsService, {});
|
||||
instantiationService.stub(IURLService, URLService);
|
||||
|
||||
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', []);
|
||||
|
||||
@@ -17,7 +17,6 @@ import {
|
||||
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IExtensionRecommendationsService, ExtensionRecommendationReason } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
|
||||
import { ExtensionRecommendationsService } from 'vs/workbench/contrib/extensions/browser/extensionRecommendationsService';
|
||||
import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test';
|
||||
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService';
|
||||
import { IURLService } from 'vs/platform/url/common/url';
|
||||
@@ -49,7 +48,6 @@ import { IMenuService } from 'vs/platform/actions/common/actions';
|
||||
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
|
||||
|
||||
suite('ExtensionsListView Tests', () => {
|
||||
|
||||
let instantiationService: TestInstantiationService;
|
||||
@@ -69,6 +67,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
|
||||
const workspaceRecommendationA = aGalleryExtension('workspace-recommendation-A');
|
||||
const workspaceRecommendationB = aGalleryExtension('workspace-recommendation-B');
|
||||
const configBasedRecommendationA = aGalleryExtension('configbased-recommendation-A');
|
||||
const fileBasedRecommendationA = aGalleryExtension('filebased-recommendation-A');
|
||||
const fileBasedRecommendationB = aGalleryExtension('filebased-recommendation-B');
|
||||
const otherRecommendationA = aGalleryExtension('other-recommendation-A');
|
||||
@@ -110,27 +109,40 @@ suite('ExtensionsListView Tests', () => {
|
||||
|
||||
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
|
||||
|
||||
instantiationService.stub(IExtensionRecommendationsService, ExtensionRecommendationsService);
|
||||
instantiationService.stub(IURLService, URLService);
|
||||
|
||||
instantiationService.stubPromise(IExtensionRecommendationsService, 'getWorkspaceRecommendations', [
|
||||
{ extensionId: workspaceRecommendationA.identifier.id },
|
||||
{ extensionId: workspaceRecommendationB.identifier.id }]);
|
||||
instantiationService.stub(IExtensionRecommendationsService, 'getFileBasedRecommendations', [
|
||||
{ extensionId: fileBasedRecommendationA.identifier.id },
|
||||
{ extensionId: fileBasedRecommendationB.identifier.id }]);
|
||||
instantiationService.stubPromise(IExtensionRecommendationsService, 'getOtherRecommendations', [
|
||||
{ extensionId: otherRecommendationA.identifier.id }
|
||||
]);
|
||||
const reasons: { [key: string]: any } = {};
|
||||
reasons[workspaceRecommendationA.identifier.id] = { reasonId: ExtensionRecommendationReason.Workspace };
|
||||
reasons[workspaceRecommendationB.identifier.id] = { reasonId: ExtensionRecommendationReason.Workspace };
|
||||
reasons[fileBasedRecommendationA.identifier.id] = { reasonId: ExtensionRecommendationReason.File };
|
||||
reasons[fileBasedRecommendationB.identifier.id] = { reasonId: ExtensionRecommendationReason.File };
|
||||
reasons[otherRecommendationA.identifier.id] = { reasonId: ExtensionRecommendationReason.Executable };
|
||||
|
||||
instantiationService.stub(IExtensionRecommendationsService, 'getAllRecommendationsWithReason', reasons);
|
||||
|
||||
reasons[configBasedRecommendationA.identifier.id] = { reasonId: ExtensionRecommendationReason.WorkspaceConfig };
|
||||
instantiationService.stub(IExtensionRecommendationsService, <Partial<IExtensionRecommendationsService>>{
|
||||
getWorkspaceRecommendations() {
|
||||
return Promise.resolve([
|
||||
{ extensionId: workspaceRecommendationA.identifier.id },
|
||||
{ extensionId: workspaceRecommendationB.identifier.id }]);
|
||||
},
|
||||
getConfigBasedRecommendations() {
|
||||
return Promise.resolve([
|
||||
{ extensionId: configBasedRecommendationA.identifier.id }
|
||||
]);
|
||||
},
|
||||
getFileBasedRecommendations() {
|
||||
return [
|
||||
{ extensionId: fileBasedRecommendationA.identifier.id },
|
||||
{ extensionId: fileBasedRecommendationB.identifier.id }
|
||||
];
|
||||
},
|
||||
getOtherRecommendations() {
|
||||
return Promise.resolve([
|
||||
{ extensionId: otherRecommendationA.identifier.id }
|
||||
]);
|
||||
},
|
||||
getAllRecommendationsWithReason() {
|
||||
return reasons;
|
||||
}
|
||||
});
|
||||
instantiationService.stub(IURLService, URLService);
|
||||
});
|
||||
|
||||
setup(async () => {
|
||||
@@ -140,7 +152,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
instantiationService.stubPromise(IExperimentService, 'getExperimentsByType', []);
|
||||
|
||||
instantiationService.stub(IViewDescriptorService, {
|
||||
getViewLocation(): ViewContainerLocation {
|
||||
getViewLocationById(): ViewContainerLocation {
|
||||
return ViewContainerLocation.Sidebar;
|
||||
}
|
||||
});
|
||||
@@ -336,6 +348,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
|
||||
test('Test @recommended query', () => {
|
||||
const allRecommendedExtensions = [
|
||||
configBasedRecommendationA,
|
||||
fileBasedRecommendationA,
|
||||
fileBasedRecommendationB,
|
||||
otherRecommendationA
|
||||
@@ -360,6 +373,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
const allRecommendedExtensions = [
|
||||
workspaceRecommendationA,
|
||||
workspaceRecommendationB,
|
||||
configBasedRecommendationA,
|
||||
fileBasedRecommendationA,
|
||||
fileBasedRecommendationB,
|
||||
otherRecommendationA
|
||||
|
||||
@@ -12,12 +12,11 @@ import { IExtensionsWorkbenchService, ExtensionState, AutoCheckUpdatesConfigurat
|
||||
import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService';
|
||||
import {
|
||||
IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension,
|
||||
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IGalleryExtensionAssets, IExtensionIdentifier, InstallOperation
|
||||
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IGalleryExtensionAssets, IExtensionIdentifier, InstallOperation, IExtensionTipsService
|
||||
} from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
|
||||
import { ExtensionRecommendationsService } from 'vs/workbench/contrib/extensions/browser/extensionRecommendationsService';
|
||||
import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test';
|
||||
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService';
|
||||
import { IURLService } from 'vs/platform/url/common/url';
|
||||
@@ -41,6 +40,13 @@ import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteA
|
||||
import { RemoteAgentService } from 'vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl';
|
||||
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
|
||||
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { IStorageKeysSyncRegistryService, StorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common/storageKeys';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
|
||||
import { TestLifecycleService } from 'vs/workbench/test/browser/workbenchTestServices';
|
||||
import { IExperimentService } from 'vs/workbench/contrib/experiments/common/experimentService';
|
||||
import { TestExperimentService } from 'vs/workbench/contrib/experiments/test/electron-browser/experimentService.test';
|
||||
import { ExtensionTipsService } from 'vs/platform/extensionManagement/node/extensionTipsService';
|
||||
|
||||
suite('ExtensionsWorkbenchServiceTest', () => {
|
||||
|
||||
@@ -62,6 +68,8 @@ suite('ExtensionsWorkbenchServiceTest', () => {
|
||||
instantiationService.stub(ITelemetryService, NullTelemetryService);
|
||||
instantiationService.stub(ILogService, NullLogService);
|
||||
instantiationService.stub(IProgressService, ProgressService);
|
||||
instantiationService.stub(IStorageKeysSyncRegistryService, new StorageKeysSyncRegistryService());
|
||||
instantiationService.stub(IProductService, {});
|
||||
|
||||
instantiationService.stub(IExtensionGalleryService, ExtensionGalleryService);
|
||||
instantiationService.stub(IURLService, URLService);
|
||||
@@ -91,7 +99,10 @@ suite('ExtensionsWorkbenchServiceTest', () => {
|
||||
|
||||
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
|
||||
|
||||
instantiationService.set(IExtensionRecommendationsService, instantiationService.createInstance(ExtensionRecommendationsService));
|
||||
instantiationService.stub(ILifecycleService, new TestLifecycleService());
|
||||
instantiationService.stub(IExperimentService, instantiationService.createInstance(TestExperimentService));
|
||||
instantiationService.stub(IExtensionTipsService, instantiationService.createInstance(ExtensionTipsService));
|
||||
instantiationService.stub(IExtensionRecommendationsService, {});
|
||||
|
||||
instantiationService.stub(INotificationService, { prompt: () => null! });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user