From fa8889eec4e2600930324600b61eab9c139f8fd1 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sat, 22 Nov 2025 22:15:17 +0100 Subject: [PATCH] data: test LoadTree+SaveTree cycle --- internal/data/tree_test.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/internal/data/tree_test.go b/internal/data/tree_test.go index ba1698227..1f58d1263 100644 --- a/internal/data/tree_test.go +++ b/internal/data/tree_test.go @@ -8,6 +8,7 @@ import ( "path/filepath" "slices" "strconv" + "strings" "testing" "github.com/restic/restic/internal/archiver" @@ -161,6 +162,26 @@ func TestTreeEqualSerialization(t *testing.T) { } } +func TestTreeLoadSaveCycle(t *testing.T) { + files := []string{"node.go", "tree.go", "tree_test.go"} + builder := data.NewTreeJSONBuilder() + for _, fn := range files { + node := nodeForFile(t, fn) + rtest.OK(t, builder.AddNode(node)) + } + buf, err := builder.Finalize() + rtest.OK(t, err) + + tm := data.TestTreeMap{restic.Hash(buf): buf} + it, err := data.LoadTree(context.TODO(), tm, restic.Hash(buf)) + rtest.OK(t, err) + + mtm := data.TestWritableTreeMap{TestTreeMap: data.TestTreeMap{}} + id, err := data.SaveTree(context.TODO(), mtm, it) + rtest.OK(t, err) + rtest.Equals(t, restic.Hash(buf), id, "saved tree id mismatch") +} + func BenchmarkBuildTree(b *testing.B) { const size = 100 // Directories of this size are not uncommon.