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()