mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-31 14:24:25 +03:00
Add user config gui.addRootItemInFileTree
This commit is contained in:
@ -26,6 +26,7 @@ func TestRenderFileTree(t *testing.T) {
|
||||
files []*models.File
|
||||
collapsedPaths []string
|
||||
showLineChanges bool
|
||||
showRootItem bool
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
@ -38,7 +39,8 @@ func TestRenderFileTree(t *testing.T) {
|
||||
files: []*models.File{
|
||||
{Path: "test", ShortStatus: " M", HasStagedChanges: true},
|
||||
},
|
||||
expected: []string{" M test"},
|
||||
showRootItem: true,
|
||||
expected: []string{" M test"},
|
||||
},
|
||||
{
|
||||
name: "numstat",
|
||||
@ -49,6 +51,7 @@ func TestRenderFileTree(t *testing.T) {
|
||||
{Path: "test4", ShortStatus: " M", HasStagedChanges: true, LinesAdded: 0, LinesDeleted: 0},
|
||||
},
|
||||
showLineChanges: true,
|
||||
showRootItem: true,
|
||||
expected: []string{
|
||||
"▼ /",
|
||||
" M test +1 -1",
|
||||
@ -67,6 +70,7 @@ func TestRenderFileTree(t *testing.T) {
|
||||
{Path: "dir2/file5", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
{Path: "file1", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
},
|
||||
showRootItem: true,
|
||||
expected: toStringSlice(
|
||||
`
|
||||
▼ /
|
||||
@ -81,6 +85,30 @@ func TestRenderFileTree(t *testing.T) {
|
||||
),
|
||||
collapsedPaths: []string{"./dir1"},
|
||||
},
|
||||
{
|
||||
name: "big example without root item",
|
||||
files: []*models.File{
|
||||
{Path: "dir1/file2", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
{Path: "dir1/file3", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
{Path: "dir2/dir2/file3", ShortStatus: " M", HasStagedChanges: true},
|
||||
{Path: "dir2/dir2/file4", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
{Path: "dir2/file5", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
{Path: "file1", ShortStatus: "M ", HasUnstagedChanges: true},
|
||||
},
|
||||
showRootItem: false,
|
||||
expected: toStringSlice(
|
||||
`
|
||||
▶ dir1
|
||||
▼ dir2
|
||||
▼ dir2
|
||||
M file3
|
||||
M file4
|
||||
M file5
|
||||
M file1
|
||||
`,
|
||||
),
|
||||
collapsedPaths: []string{"dir1"},
|
||||
},
|
||||
}
|
||||
|
||||
oldColorLevel := color.ForceSetColorLevel(terminfo.ColorLevelNone)
|
||||
@ -89,12 +117,13 @@ func TestRenderFileTree(t *testing.T) {
|
||||
for _, s := range scenarios {
|
||||
t.Run(s.name, func(t *testing.T) {
|
||||
common := common.NewDummyCommon()
|
||||
common.UserConfig().Gui.ShowRootItemInFileTree = s.showRootItem
|
||||
viewModel := filetree.NewFileTree(func() []*models.File { return s.files }, common, true)
|
||||
viewModel.SetTree()
|
||||
for _, path := range s.collapsedPaths {
|
||||
viewModel.ToggleCollapsed(path)
|
||||
}
|
||||
result := RenderFileTree(viewModel, nil, false, s.showLineChanges, &config.CustomIconsConfig{})
|
||||
result := RenderFileTree(viewModel, nil, false, s.showLineChanges, &config.CustomIconsConfig{}, s.showRootItem)
|
||||
assert.EqualValues(t, s.expected, result)
|
||||
})
|
||||
}
|
||||
@ -106,6 +135,7 @@ func TestRenderCommitFileTree(t *testing.T) {
|
||||
root *filetree.FileNode
|
||||
files []*models.CommitFile
|
||||
collapsedPaths []string
|
||||
showRootItem bool
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
@ -118,7 +148,8 @@ func TestRenderCommitFileTree(t *testing.T) {
|
||||
files: []*models.CommitFile{
|
||||
{Path: "test", ChangeStatus: "A"},
|
||||
},
|
||||
expected: []string{"A test"},
|
||||
showRootItem: true,
|
||||
expected: []string{"A test"},
|
||||
},
|
||||
{
|
||||
name: "big example",
|
||||
@ -130,6 +161,7 @@ func TestRenderCommitFileTree(t *testing.T) {
|
||||
{Path: "dir2/file5", ChangeStatus: "M"},
|
||||
{Path: "file1", ChangeStatus: "M"},
|
||||
},
|
||||
showRootItem: true,
|
||||
expected: toStringSlice(
|
||||
`
|
||||
▼ /
|
||||
@ -144,6 +176,30 @@ func TestRenderCommitFileTree(t *testing.T) {
|
||||
),
|
||||
collapsedPaths: []string{"./dir1"},
|
||||
},
|
||||
{
|
||||
name: "big example without root item",
|
||||
files: []*models.CommitFile{
|
||||
{Path: "dir1/file2", ChangeStatus: "M"},
|
||||
{Path: "dir1/file3", ChangeStatus: "A"},
|
||||
{Path: "dir2/dir2/file3", ChangeStatus: "D"},
|
||||
{Path: "dir2/dir2/file4", ChangeStatus: "M"},
|
||||
{Path: "dir2/file5", ChangeStatus: "M"},
|
||||
{Path: "file1", ChangeStatus: "M"},
|
||||
},
|
||||
showRootItem: false,
|
||||
expected: toStringSlice(
|
||||
`
|
||||
▶ dir1
|
||||
▼ dir2
|
||||
▼ dir2
|
||||
D file3
|
||||
M file4
|
||||
M file5
|
||||
M file1
|
||||
`,
|
||||
),
|
||||
collapsedPaths: []string{"dir1"},
|
||||
},
|
||||
}
|
||||
|
||||
oldColorLevel := color.ForceSetColorLevel(terminfo.ColorLevelNone)
|
||||
@ -154,6 +210,7 @@ func TestRenderCommitFileTree(t *testing.T) {
|
||||
hashPool := &utils.StringPool{}
|
||||
|
||||
common := common.NewDummyCommon()
|
||||
common.UserConfig().Gui.ShowRootItemInFileTree = s.showRootItem
|
||||
viewModel := filetree.NewCommitFileTreeViewModel(func() []*models.CommitFile { return s.files }, common, true)
|
||||
viewModel.SetRef(models.NewCommit(hashPool, models.NewCommitOpts{Hash: "1234"}))
|
||||
viewModel.SetTree()
|
||||
|
Reference in New Issue
Block a user