Show git status in projects tree (#14182)

* show git status in project tree

* fix for windows

* fix tests
This commit is contained in:
Kim Santiago
2021-02-22 11:33:42 -08:00
committed by GitHub
parent cd4024625f
commit 9087a9fbb1
3 changed files with 20 additions and 19 deletions

View File

@@ -29,7 +29,7 @@ export class FolderNode extends BaseProjectTreeItem {
} }
public get treeItem(): vscode.TreeItem { public get treeItem(): vscode.TreeItem {
const folderItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); const folderItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.Collapsed);
folderItem.contextValue = DatabaseProjectItemType.folder; folderItem.contextValue = DatabaseProjectItemType.folder;
folderItem.iconPath = IconPathHelper.folder; folderItem.iconPath = IconPathHelper.folder;
@@ -57,7 +57,7 @@ export class FileNode extends BaseProjectTreeItem {
} }
public get treeItem(): vscode.TreeItem { public get treeItem(): vscode.TreeItem {
const treeItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.None); const treeItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.None);
treeItem.command = { treeItem.command = {
title: 'Open file', title: 'Open file',

View File

@@ -25,7 +25,7 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem {
fileSystemUri: vscode.Uri; fileSystemUri: vscode.Uri;
constructor(project: Project) { constructor(project: Project) {
super(vscode.Uri.parse(path.basename(project.projectFilePath, sqlprojExtension)), undefined); super(vscode.Uri.file(project.projectFilePath), undefined);
this.project = project; this.project = project;
this.fileSystemUri = vscode.Uri.file(project.projectFilePath); this.fileSystemUri = vscode.Uri.file(project.projectFilePath);
@@ -48,6 +48,7 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem {
const projectItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Expanded); const projectItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Expanded);
projectItem.contextValue = DatabaseProjectItemType.project; projectItem.contextValue = DatabaseProjectItemType.project;
projectItem.iconPath = IconPathHelper.databaseProject; projectItem.iconPath = IconPathHelper.databaseProject;
projectItem.label = path.basename(this.uri.fsPath, sqlprojExtension);
return projectItem; return projectItem;
} }

View File

@@ -68,16 +68,16 @@ describe('Project Tree tests', function (): void {
const tree = new ProjectRootTreeItem(proj); const tree = new ProjectRootTreeItem(proj);
should(tree.children.map(x => x.uri.path)).deepEqual([ should(tree.children.map(x => x.uri.path)).deepEqual([
'/TestProj/Database References', '/TestProj.sqlproj/Database References',
'/TestProj/duplicateFolder', '/TestProj.sqlproj/duplicateFolder',
'/TestProj/someFolder', '/TestProj.sqlproj/someFolder',
'/TestProj/duplicate.sql']); '/TestProj.sqlproj/duplicate.sql']);
should(tree.children.find(x => x.uri.path === '/TestProj/someFolder')?.children.map(y => y.uri.path)).deepEqual([ should(tree.children.find(x => x.uri.path === '/TestProj.sqlproj/someFolder')?.children.map(y => y.uri.path)).deepEqual([
'/TestProj/someFolder/aNestedFolder', '/TestProj.sqlproj/someFolder/aNestedFolder',
'/TestProj/someFolder/bNestedFolder', '/TestProj.sqlproj/someFolder/bNestedFolder',
'/TestProj/someFolder/aNestedTest.sql', '/TestProj.sqlproj/someFolder/aNestedTest.sql',
'/TestProj/someFolder/bNestedTest.sql']); '/TestProj.sqlproj/someFolder/bNestedTest.sql']);
should(tree.children.map(x => x.treeItem.contextValue)).deepEqual([ should(tree.children.map(x => x.treeItem.contextValue)).deepEqual([
DatabaseProjectItemType.referencesRoot, DatabaseProjectItemType.referencesRoot,
@@ -85,7 +85,7 @@ describe('Project Tree tests', function (): void {
DatabaseProjectItemType.folder, DatabaseProjectItemType.folder,
DatabaseProjectItemType.file]); DatabaseProjectItemType.file]);
should(tree.children.find(x => x.uri.path === '/TestProj/someFolder')?.children.map(y => y.treeItem.contextValue)).deepEqual([ should(tree.children.find(x => x.uri.path === '/TestProj.sqlproj/someFolder')?.children.map(y => y.treeItem.contextValue)).deepEqual([
DatabaseProjectItemType.folder, DatabaseProjectItemType.folder,
DatabaseProjectItemType.folder, DatabaseProjectItemType.folder,
DatabaseProjectItemType.file, DatabaseProjectItemType.file,
@@ -104,11 +104,11 @@ describe('Project Tree tests', function (): void {
const tree = new ProjectRootTreeItem(proj); const tree = new ProjectRootTreeItem(proj);
should(tree.children.map(x => x.uri.path)).deepEqual([ should(tree.children.map(x => x.uri.path)).deepEqual([
'/TestProj/Database References', '/TestProj.sqlproj/Database References',
'/TestProj/someFolder1']); '/TestProj.sqlproj/someFolder1']);
// Why are we only matching names - https://github.com/microsoft/azuredatastudio/issues/11026 // Why are we only matching names - https://github.com/microsoft/azuredatastudio/issues/11026
should(tree.children.find(x => x.uri.path === '/TestProj/someFolder1')?.children.map(y => path.basename(y.uri.path))).deepEqual([ should(tree.children.find(x => x.uri.path === '/TestProj.sqlproj/someFolder1')?.children.map(y => path.basename(y.uri.path))).deepEqual([
'MyNestedFolder1', 'MyNestedFolder1',
'MyNestedFolder2', 'MyNestedFolder2',
'MyFile2.sql']); 'MyFile2.sql']);
@@ -126,8 +126,8 @@ describe('Project Tree tests', function (): void {
const tree = new ProjectRootTreeItem(proj); const tree = new ProjectRootTreeItem(proj);
should(tree.children.map(x => x.uri.path)).deepEqual([ should(tree.children.map(x => x.uri.path)).deepEqual([
'/TestProj/Database References', '/Root/Level1/Level2/TestProj.sqlproj/Database References',
'/TestProj/MyFile1.sql', '/Root/Level1/Level2/TestProj.sqlproj/MyFile1.sql',
'/TestProj/MyFile2.sql']); '/Root/Level1/Level2/TestProj.sqlproj/MyFile2.sql']);
}); });
}); });