提交 f6b128d8 编写于 作者: R Ramya Achutha Rao

Avoid querying gallery when not configured fixes #42204

上级 96022b64
...@@ -71,7 +71,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe ...@@ -71,7 +71,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
) { ) {
super(); super();
if (!this._galleryService.isEnabled() || this.environmentService.extensionDevelopmentPath) { if (!this.isEnabled()) {
return; return;
} }
...@@ -85,6 +85,10 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe ...@@ -85,6 +85,10 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
this._register(this.contextService.onDidChangeWorkspaceFolders(e => this.onWorkspaceFoldersChanged(e))); this._register(this.contextService.onDidChangeWorkspaceFolders(e => this.onWorkspaceFoldersChanged(e)));
} }
private isEnabled(): boolean {
return this._galleryService.isEnabled() && !this.environmentService.extensionDevelopmentPath;
}
getAllRecommendationsWithReason(): { [id: string]: string; } { getAllRecommendationsWithReason(): { [id: string]: string; } {
let output: { [id: string]: string; } = Object.create(null); let output: { [id: string]: string; } = Object.create(null);
this._allWorkspaceRecommendedExtensions.forEach(x => output[x.toLowerCase()] = localize('workspaceRecommendation', "This extension is recommended by users of the current workspace.")); this._allWorkspaceRecommendedExtensions.forEach(x => output[x.toLowerCase()] = localize('workspaceRecommendation', "This extension is recommended by users of the current workspace."));
...@@ -94,6 +98,9 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe ...@@ -94,6 +98,9 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
} }
getWorkspaceRecommendations(): TPromise<string[]> { getWorkspaceRecommendations(): TPromise<string[]> {
if (!this.isEnabled()) {
return TPromise.as([]);
}
const workspace = this.contextService.getWorkspace(); const workspace = this.contextService.getWorkspace();
return TPromise.join([this.resolveWorkspaceRecommendations(workspace), ...workspace.folders.map(workspaceFolder => this.resolveWorkspaceFolderRecommendations(workspaceFolder))]) return TPromise.join([this.resolveWorkspaceRecommendations(workspace), ...workspace.folders.map(workspaceFolder => this.resolveWorkspaceFolderRecommendations(workspaceFolder))])
.then(recommendations => { .then(recommendations => {
......
...@@ -268,22 +268,34 @@ suite('ExtensionsTipsService Test', () => { ...@@ -268,22 +268,34 @@ suite('ExtensionsTipsService Test', () => {
function testNoPromptForValidRecommendations(recommendations: string[]) { function testNoPromptForValidRecommendations(recommendations: string[]) {
return setUpFolderWorkspace('myFolder', recommendations).then(() => { return setUpFolderWorkspace('myFolder', recommendations).then(() => {
testObject = instantiationService.createInstance(ExtensionTipsService); testObject = instantiationService.createInstance(ExtensionTipsService);
const promise = testObject.promptWorkspaceRecommendationsPromise || testObject.getWorkspaceRecommendations(); return testObject.promptWorkspaceRecommendationsPromise.then(() => {
return promise.then(() => {
assert.equal(Object.keys(testObject.getAllRecommendationsWithReason()).length, recommendations.length); assert.equal(Object.keys(testObject.getAllRecommendationsWithReason()).length, recommendations.length);
assert.ok(!prompted); assert.ok(!prompted);
}); });
}); });
} }
function testNoPromptOrRecommendationsForValidRecommendations(recommendations: string[]) {
return setUpFolderWorkspace('myFolder', mockTestData.validRecommendedExtensions).then(() => {
testObject = instantiationService.createInstance(ExtensionTipsService);
assert.equal(!testObject.promptWorkspaceRecommendationsPromise, true);
assert.ok(!prompted);
return testObject.getWorkspaceRecommendations().then(() => {
assert.equal(Object.keys(testObject.getAllRecommendationsWithReason()).length, 0);
assert.ok(!prompted);
});
});
}
test('ExtensionTipsService: No Prompt for valid workspace recommendations when galleryService is absent', () => { test('ExtensionTipsService: No Prompt for valid workspace recommendations when galleryService is absent', () => {
instantiationService.stub(IExtensionGalleryService, 'isEnabled', false); instantiationService.stub(IExtensionGalleryService, 'isEnabled', false);
return testNoPromptForValidRecommendations(mockTestData.validRecommendedExtensions); return testNoPromptOrRecommendationsForValidRecommendations(mockTestData.validRecommendedExtensions);
}); });
test('ExtensionTipsService: No Prompt for valid workspace recommendations during extension development', () => { test('ExtensionTipsService: No Prompt for valid workspace recommendations during extension development', () => {
instantiationService.stub(IEnvironmentService, { extensionDevelopmentPath: true }); instantiationService.stub(IEnvironmentService, { extensionDevelopmentPath: true });
return testNoPromptForValidRecommendations(mockTestData.validRecommendedExtensions); return testNoPromptOrRecommendationsForValidRecommendations(mockTestData.validRecommendedExtensions);
}); });
test('ExtensionTipsService: No workspace recommendations or prompts when extensions.json has empty array', () => { test('ExtensionTipsService: No workspace recommendations or prompts when extensions.json has empty array', () => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册