X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/c781f79f3c8cb9a7577ee1574d196988da2719b3..d7bc0a6ac452bfc646610fdfd7c8eccb5c55218f:/tree_test.go?ds=inline diff --git a/tree_test.go b/tree_test.go index 2f23d4d..37ecc94 100644 --- a/tree_test.go +++ b/tree_test.go @@ -61,6 +61,36 @@ func TestTreeBuildsEachNodeOnce(t *testing.T) { require.Equal(t, "user: a", treeReadNode(t, tree, 0, 0).Text) } +func TestTreeMissingNodeHasNoErrorAfterWrapping(t *testing.T) { + tree, err := openTree(t.Context(), t.TempDir(), 0, newTestClock().Now) + require.NoError(t, err) + + t.Cleanup(func() { + require.NoError(t, tree.Close()) + }) + + _, built, err := tree.Node(0, 0) + require.NoError(t, err) + require.False(t, built) +} + +func TestTreeReadFailureKeepsItsCause(t *testing.T) { + tree, err := openTree(t.Context(), t.TempDir(), 1, newTestClock().Now) + require.NoError(t, err) + t.Cleanup(func() { + require.NoError(t, tree.Close()) + }) + + require.NoError(t, tree.Add(treeTestNode(0, 0, "user: a"))) + require.NoError(t, tree.levels[0].Close()) + + _, built, err := tree.Node(0, 0) + delete(tree.levels, 0) + require.ErrorIs(t, err, os.ErrClosed) + require.False(t, built) + require.ErrorContains(t, err, "find node position") +} + func TestTreeReopenLoadsTheSameNodes(t *testing.T) { root := t.TempDir() clock := newTestClock()