Corrects workspace project tree refresh behavior for adding new projects to the workspace (#16650)

* bugfix and updates

* PR feedback

* Deferred promise for project disk scan

* fix casing

* fixing race condition on extension activation, test failure
This commit is contained in:
Benjin Dubishar
2021-08-11 09:11:00 -07:00
committed by GitHub
parent 998c838d8f
commit d0bcba4cc0
12 changed files with 134 additions and 65 deletions

View File

@@ -44,19 +44,19 @@ suite('WorkspaceService', function (): void {
test('getProjectsInWorkspace', async () => {
// No workspace is loaded
let projects = await service.getProjectsInWorkspace();
let projects = await service.getProjectsInWorkspace(undefined, true);
should.strictEqual(projects.length, 0, 'no projects should be returned when no workspace is loaded');
// No projects are present in the workspace file
const workspaceFoldersStub = sinon.stub(vscode.workspace, 'workspaceFolders').value([]);
projects = await service.getProjectsInWorkspace();
projects = await service.getProjectsInWorkspace(undefined, true);
should.strictEqual(projects.length, 0, 'no projects should be returned when projects are present in the workspace file');
workspaceFoldersStub.restore();
// Projects are present
sinon.stub(vscode.workspace, 'workspaceFolders').value([{ uri: vscode.Uri.file('')}]);
sinon.stub(service, 'getAllProjectsInFolder').resolves([vscode.Uri.file('/test/folder/abc.sqlproj'), vscode.Uri.file('/test/folder/folder1/abc1.sqlproj'), vscode.Uri.file('/test/folder/folder2/abc2.sqlproj')]);
projects = await service.getProjectsInWorkspace();
projects = await service.getProjectsInWorkspace(undefined, true);
should.strictEqual(projects.length, 3, 'there should be 3 projects');
const project1 = vscode.Uri.file('/test/folder/abc.sqlproj');
const project2 = vscode.Uri.file('/test/folder/folder1/abc1.sqlproj');

View File

@@ -20,12 +20,12 @@ suite('workspaceTreeDataProvider Tests', function (): void {
sinon.restore();
});
test('test refresh()', () => {
test('test refresh()', async () => {
const treeDataChangeHandler = sinon.stub();
treeProvider.onDidChangeTreeData!((e) => {
treeDataChangeHandler(e);
});
treeProvider.refresh();
await treeProvider.refresh();
should.strictEqual(treeDataChangeHandler.calledOnce, true);
});
@@ -100,16 +100,17 @@ suite('workspaceTreeDataProvider Tests', function (): void {
}],
getDashboardComponents: (projectFile: string): IDashboardTable[] => {
return [{
name: 'Deployments',
columns: [{ displayName: 'c1', width: 75, type: 'string' }],
data: [['d1']]
},
{
name: 'Builds',
columns: [{ displayName: 'c1', width: 75, type: 'string' }],
data: [['d1']]
}];
}};
name: 'Deployments',
columns: [{ displayName: 'c1', width: 75, type: 'string' }],
data: [['d1']]
},
{
name: 'Builds',
columns: [{ displayName: 'c1', width: 75, type: 'string' }],
data: [['d1']]
}];
}
};
const getProjectProviderStub = sinon.stub(workspaceService, 'getProjectProvider');
getProjectProviderStub.onFirstCall().resolves(undefined);
getProjectProviderStub.onSecondCall().resolves(projectProvider);