mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-30 16:50:30 -04:00
Merge from vscode 7eaf220cafb9d9e901370ffce02229171cbf3ea6
This commit is contained in:
committed by
Anthony Dresser
parent
39d9eed585
commit
a63578e6f7
@@ -33,8 +33,7 @@ import { IPager } from 'vs/base/common/paging';
|
||||
import { assign } from 'vs/base/common/objects';
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ConfigurationKey } from 'vs/workbench/contrib/extensions/common/extensions';
|
||||
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
|
||||
import { ConfigurationKey, IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/common/extensions';
|
||||
import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test';
|
||||
import { IURLService } from 'vs/platform/url/common/url';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
@@ -58,6 +57,8 @@ import { ExtensionRecommendationsService } from 'vs/workbench/contrib/extensions
|
||||
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';
|
||||
import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
|
||||
const mockExtensionGallery: IGalleryExtension[] = [
|
||||
aGalleryExtension('MockExtension1', {
|
||||
@@ -199,11 +200,18 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
testConfigurationService = new TestConfigurationService();
|
||||
instantiationService.stub(IConfigurationService, testConfigurationService);
|
||||
instantiationService.stub(INotificationService, new TestNotificationService());
|
||||
instantiationService.stub(IExtensionManagementService, ExtensionManagementService);
|
||||
instantiationService.stub(IExtensionManagementService, 'onInstallExtension', installEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onDidInstallExtension', didInstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onUninstallExtension', uninstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onDidUninstallExtension', didUninstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, <Partial<IExtensionManagementService>>{
|
||||
onInstallExtension: installEvent.event,
|
||||
onDidInstallExtension: didInstallEvent.event,
|
||||
onUninstallExtension: uninstallEvent.event,
|
||||
onDidUninstallExtension: didUninstallEvent.event,
|
||||
async getInstalled() { return []; },
|
||||
async canInstall() { return true; },
|
||||
async getExtensionsReport() { return []; },
|
||||
});
|
||||
instantiationService.stub(IExtensionService, <Partial<IExtensionService>>{
|
||||
async whenInstalledExtensionsRegistered() { return true; }
|
||||
});
|
||||
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
|
||||
instantiationService.stub(ITelemetryService, NullTelemetryService);
|
||||
instantiationService.stub(IURLService, NativeURLService);
|
||||
@@ -231,6 +239,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
experimentService = instantiationService.createInstance(TestExperimentService);
|
||||
instantiationService.stub(IExperimentService, experimentService);
|
||||
instantiationService.set(IExtensionsWorkbenchService, instantiationService.createInstance(ExtensionsWorkbenchService));
|
||||
instantiationService.stub(IExtensionTipsService, instantiationService.createInstance(ExtensionTipsService));
|
||||
|
||||
onModelAddedEvent = new Emitter<ITextModel>();
|
||||
@@ -302,7 +311,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
function testNoPromptForValidRecommendations(recommendations: string[]) {
|
||||
return setUpFolderWorkspace('myFolder', recommendations).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
assert.equal(Object.keys(testObject.getAllRecommendationsWithReason()).length, recommendations.length);
|
||||
assert.ok(!prompted);
|
||||
});
|
||||
@@ -338,20 +347,18 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
return testNoPromptForValidRecommendations([]);
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: Prompt for valid workspace recommendations', () => {
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.recommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
const recommendations = Object.keys(testObject.getAllRecommendationsWithReason());
|
||||
test('ExtensionRecommendationsService: Prompt for valid workspace recommendations', async () => {
|
||||
await setUpFolderWorkspace('myFolder', mockTestData.recommendedExtensions);
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
await testObject.activationPromise;
|
||||
|
||||
assert.equal(recommendations.length, mockTestData.validRecommendedExtensions.length);
|
||||
mockTestData.validRecommendedExtensions.forEach(x => {
|
||||
assert.equal(recommendations.indexOf(x.toLowerCase()) > -1, true);
|
||||
});
|
||||
|
||||
assert.ok(prompted);
|
||||
});
|
||||
const recommendations = Object.keys(testObject.getAllRecommendationsWithReason());
|
||||
assert.equal(recommendations.length, mockTestData.validRecommendedExtensions.length);
|
||||
mockTestData.validRecommendedExtensions.forEach(x => {
|
||||
assert.equal(recommendations.indexOf(x.toLowerCase()) > -1, true);
|
||||
});
|
||||
|
||||
assert.ok(prompted);
|
||||
});
|
||||
|
||||
test('ExtensionRecommendationsService: No Prompt for valid workspace recommendations if they are already installed', () => {
|
||||
@@ -373,7 +380,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
testConfigurationService.setUserConfiguration(ConfigurationKey, { showRecommendationsOnlyOnDemand: true });
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
assert.ok(!prompted);
|
||||
});
|
||||
});
|
||||
@@ -391,7 +398,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getAllRecommendationsWithReason();
|
||||
assert.ok(!recommendations['ms-dotnettools.csharp']); // stored recommendation that has been globally ignored
|
||||
assert.ok(recommendations['ms-python.python']); // stored recommendation
|
||||
@@ -409,7 +416,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions, ignoredRecommendations).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getAllRecommendationsWithReason();
|
||||
assert.ok(!recommendations['ms-dotnettools.csharp']); // stored recommendation that has been workspace ignored
|
||||
assert.ok(recommendations['ms-python.python']); // stored recommendation
|
||||
@@ -430,7 +437,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions, workspaceIgnoredRecommendations).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getAllRecommendationsWithReason();
|
||||
assert.ok(recommendations['ms-python.python']);
|
||||
|
||||
@@ -449,7 +456,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getAllRecommendationsWithReason();
|
||||
assert.ok(recommendations['ms-python.python']);
|
||||
assert.ok(recommendations['mockpublisher1.mockextension1']);
|
||||
@@ -486,7 +493,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
testObject.onRecommendationChange(changeHandlerTarget);
|
||||
testObject.toggleIgnoredRecommendation(ignoredExtensionId, true);
|
||||
await testObject.loadWorkspaceConfigPromise;
|
||||
await testObject.activationPromise;
|
||||
|
||||
assert.ok(changeHandlerTarget.calledOnce);
|
||||
assert.ok(changeHandlerTarget.getCall(0).calledWithMatch({ extensionId: ignoredExtensionId.toLowerCase(), isRecommended: false }));
|
||||
@@ -498,7 +505,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', []).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getFileBasedRecommendations();
|
||||
assert.equal(recommendations.length, 2);
|
||||
assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips
|
||||
@@ -517,7 +524,7 @@ suite.skip('ExtensionRecommendationsService Test', () => { // {{SQL CARBON EDIT}
|
||||
|
||||
return setUpFolderWorkspace('myFolder', []).then(() => {
|
||||
testObject = instantiationService.createInstance(ExtensionRecommendationsService);
|
||||
return testObject.loadWorkspaceConfigPromise.then(() => {
|
||||
return testObject.activationPromise.then(() => {
|
||||
const recommendations = testObject.getFileBasedRecommendations();
|
||||
assert.equal(recommendations.length, 2);
|
||||
assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips
|
||||
|
||||
@@ -101,7 +101,7 @@ async function setupTest() {
|
||||
instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService {
|
||||
#localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' };
|
||||
constructor() {
|
||||
super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService));
|
||||
super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(ILabelService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IProductService), instantiationService.get(IConfigurationService), instantiationService.get(ILogService));
|
||||
}
|
||||
get localExtensionManagementServer(): IExtensionManagementServer { return this.#localExtensionManagementServer; }
|
||||
set localExtensionManagementServer(server: IExtensionManagementServer) { }
|
||||
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
} from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IExtensionRecommendationsService, ExtensionRecommendationReason, IExtensionRecommendation } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
|
||||
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
|
||||
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';
|
||||
@@ -40,13 +39,13 @@ import { RemoteAgentService } from 'vs/workbench/services/remote/electron-browse
|
||||
import { ExtensionIdentifier, ExtensionType, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
|
||||
import { ExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { ILabelService } from 'vs/platform/label/common/label';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
|
||||
import { IMenuService } from 'vs/platform/actions/common/actions';
|
||||
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
|
||||
import { IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
|
||||
suite('ExtensionsListView Tests', () => {
|
||||
|
||||
@@ -68,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 configBasedRecommendationB = aGalleryExtension('configbased-recommendation-B');
|
||||
const fileBasedRecommendationA = aGalleryExtension('filebased-recommendation-A');
|
||||
const fileBasedRecommendationB = aGalleryExtension('filebased-recommendation-B');
|
||||
const otherRecommendationA = aGalleryExtension('other-recommendation-A');
|
||||
@@ -89,11 +89,15 @@ suite('ExtensionsListView Tests', () => {
|
||||
instantiationService.stub(ISharedProcessService, TestSharedProcessService);
|
||||
instantiationService.stub(IExperimentService, ExperimentService);
|
||||
|
||||
instantiationService.stub(IExtensionManagementService, ExtensionManagementService);
|
||||
instantiationService.stub(IExtensionManagementService, 'onInstallExtension', installEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onDidInstallExtension', didInstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onUninstallExtension', uninstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, 'onDidUninstallExtension', didUninstallEvent.event);
|
||||
instantiationService.stub(IExtensionManagementService, <Partial<IExtensionManagementService>>{
|
||||
onInstallExtension: installEvent.event,
|
||||
onDidInstallExtension: didInstallEvent.event,
|
||||
onUninstallExtension: uninstallEvent.event,
|
||||
onDidUninstallExtension: didUninstallEvent.event,
|
||||
async getInstalled() { return []; },
|
||||
async canInstall() { return true; },
|
||||
async getExtensionsReport() { return []; },
|
||||
});
|
||||
instantiationService.stub(IRemoteAgentService, RemoteAgentService);
|
||||
instantiationService.stub(IContextKeyService, new MockContextKeyService());
|
||||
instantiationService.stub(IMenuService, new TestMenuService());
|
||||
@@ -101,7 +105,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService {
|
||||
#localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' };
|
||||
constructor() {
|
||||
super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService));
|
||||
super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(ILabelService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IProductService), instantiationService.get(IConfigurationService), instantiationService.get(ILogService));
|
||||
}
|
||||
get localExtensionManagementServer(): IExtensionManagementServer { return this.#localExtensionManagementServer; }
|
||||
set localExtensionManagementServer(server: IExtensionManagementServer) { }
|
||||
@@ -123,9 +127,10 @@ suite('ExtensionsListView Tests', () => {
|
||||
{ extensionId: workspaceRecommendationB.identifier.id }]);
|
||||
},
|
||||
getConfigBasedRecommendations() {
|
||||
return Promise.resolve([
|
||||
{ extensionId: configBasedRecommendationA.identifier.id }
|
||||
]);
|
||||
return Promise.resolve({
|
||||
important: [{ extensionId: configBasedRecommendationA.identifier.id }],
|
||||
others: [{ extensionId: configBasedRecommendationB.identifier.id }],
|
||||
});
|
||||
},
|
||||
getImportantRecommendations(): Promise<IExtensionRecommendation[]> {
|
||||
return Promise.resolve([]);
|
||||
@@ -138,6 +143,7 @@ suite('ExtensionsListView Tests', () => {
|
||||
},
|
||||
getOtherRecommendations() {
|
||||
return Promise.resolve([
|
||||
{ extensionId: configBasedRecommendationB.identifier.id },
|
||||
{ extensionId: otherRecommendationA.identifier.id }
|
||||
]);
|
||||
},
|
||||
@@ -333,7 +339,8 @@ suite('ExtensionsListView Tests', () => {
|
||||
test('Test @recommended:workspace query', () => {
|
||||
const workspaceRecommendedExtensions = [
|
||||
workspaceRecommendationA,
|
||||
workspaceRecommendationB
|
||||
workspaceRecommendationB,
|
||||
configBasedRecommendationA,
|
||||
];
|
||||
const target = <SinonStub>instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage(...workspaceRecommendedExtensions));
|
||||
|
||||
@@ -351,9 +358,9 @@ suite('ExtensionsListView Tests', () => {
|
||||
|
||||
test('Test @recommended query', () => {
|
||||
const allRecommendedExtensions = [
|
||||
configBasedRecommendationA,
|
||||
fileBasedRecommendationA,
|
||||
fileBasedRecommendationB,
|
||||
configBasedRecommendationB,
|
||||
otherRecommendationA
|
||||
];
|
||||
const target = <SinonStub>instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage(...allRecommendedExtensions));
|
||||
@@ -379,7 +386,8 @@ suite('ExtensionsListView Tests', () => {
|
||||
configBasedRecommendationA,
|
||||
fileBasedRecommendationA,
|
||||
fileBasedRecommendationB,
|
||||
otherRecommendationA
|
||||
configBasedRecommendationB,
|
||||
otherRecommendationA,
|
||||
];
|
||||
const target = <SinonStub>instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage(...allRecommendedExtensions));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user