From def68ddc8f91b01ce66fca1ea18561b864f3801b Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 14 Mar 2021 20:23:06 +1100 Subject: fix bug for combining directories with single child --- pkg/commands/models/status_line_node.go | 16 ++++++++-------- pkg/commands/models/status_line_node_test.go | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 8 deletions(-) (limited to 'pkg/commands') diff --git a/pkg/commands/models/status_line_node.go b/pkg/commands/models/status_line_node.go index 1ac8bcdd7..3ed1a573a 100644 --- a/pkg/commands/models/status_line_node.go +++ b/pkg/commands/models/status_line_node.go @@ -157,10 +157,6 @@ func (s *StatusLineNode) GetPath() string { return s.Path } -func (s *StatusLineNode) HasExactlyOneChild() bool { - return len(s.Children) == 1 -} - func (s *StatusLineNode) Compress() { if s == nil { return @@ -174,10 +170,10 @@ func (s *StatusLineNode) compressAux() *StatusLineNode { return s } - for i, child := range s.Children { - if child.HasExactlyOneChild() { - grandchild := child.Children[0] - grandchild.Name = fmt.Sprintf("%s/%s", child.Name, grandchild.Name) + for i := range s.Children { + for s.Children[i].HasExactlyOneChild() { + grandchild := s.Children[i].Children[0] + grandchild.Name = fmt.Sprintf("%s/%s", s.Children[i].Name, grandchild.Name) s.Children[i] = grandchild } } @@ -188,3 +184,7 @@ func (s *StatusLineNode) compressAux() *StatusLineNode { return s } + +func (s *StatusLineNode) HasExactlyOneChild() bool { + return len(s.Children) == 1 +} diff --git a/pkg/commands/models/status_line_node_test.go b/pkg/commands/models/status_line_node_test.go index c68199c18..5f0a1a853 100644 --- a/pkg/commands/models/status_line_node_test.go +++ b/pkg/commands/models/status_line_node_test.go @@ -64,6 +64,23 @@ func TestCompress(t *testing.T) { }, }, }, + { + Name: "dir3", + Path: "dir3", + Children: []*StatusLineNode{ + { + Name: "dir3-1", + Path: "dir3/dir3-1", + Children: []*StatusLineNode{ + { + File: &File{Name: "file5", ShortStatus: "M ", HasUnstagedChanges: true}, + Name: "file5", + Path: "dir3/dir3-1/file5", + }, + }, + }, + }, + }, { File: &File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, Name: "file1", @@ -95,6 +112,11 @@ func TestCompress(t *testing.T) { }, }, }, + { + Name: "dir3/dir3-1/file5", + File: &File{Name: "file5", ShortStatus: "M ", HasUnstagedChanges: true}, + Path: "dir3/dir3-1/file5", + }, { File: &File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, Name: "file1", -- cgit v1.2.3