diff options
-rw-r--r-- | pkg/commands/models/status_line_node.go | 16 | ||||
-rw-r--r-- | pkg/commands/models/status_line_node_test.go | 22 |
2 files changed, 30 insertions, 8 deletions
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 @@ -65,6 +65,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", Path: "file1", @@ -96,6 +113,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", Path: "file1", |