diff --git a/tree.go b/tree.go index ff39242..f6acce4 100644 --- a/tree.go +++ b/tree.go @@ -18,6 +18,7 @@ const ( collapsedItem = "⊕ " ) + type FileTree struct { root *Node size int @@ -51,7 +52,9 @@ func NewNode(parent *Node, name string, data *FileChangeInfo) (node *Node) { node.data = data node.children = make(map[string]*Node) node.parent = parent - node.tree = parent.tree + if parent != nil { + node.tree = parent.tree + } return node } diff --git a/tree_test.go b/tree_test.go index 2d11e95..095d1cd 100644 --- a/tree_test.go +++ b/tree_test.go @@ -105,7 +105,6 @@ func TestPrintTree(t *testing.T) { } - func TestAddPath(t *testing.T) { tree := NewTree() tree.AddPath("/etc/nginx/nginx.conf", nil) @@ -189,7 +188,6 @@ func TestIsWhiteout(t *testing.T) { } } - func TestStack(t *testing.T) { payloadKey := "/var/run/systemd" payloadValue := FileChangeInfo{ @@ -244,4 +242,35 @@ func TestStack(t *testing.T) { t.Errorf("Expected tree string:\n--->%s<---\nGot:\n--->%s<---", expected, actual) } -} \ No newline at end of file +} + +func TestCopy(t *testing.T) { + tree := NewTree() + tree.AddPath("/etc/nginx/nginx.conf", nil) + tree.AddPath("/etc/nginx/public", nil) + tree.AddPath("/var/run/systemd", nil) + tree.AddPath("/var/run/bashful", nil) + tree.AddPath("/tmp", nil) + tree.AddPath("/tmp/nonsense", nil) + + tree.RemovePath("/var/run/bashful") + tree.RemovePath("/tmp") + + expected := `. +├── etc +│ └── nginx +│ ├── nginx.conf +│ └── public +└── var + └── run + └── systemd +` + + newTree := tree.Copy() + actual := newTree.String() + + if expected != actual { + t.Errorf("Expected tree string:\n--->%s<---\nGot:\n--->%s<---", expected, actual) + } + +}