X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/feda522eba3e2a27c91741c77d0d01f1840c0004..7b6d0a81e0f3c8e33b1b76d5ecbc5bdb25a87249:/memory_test.go?ds=inline
diff --git a/memory_test.go b/memory_test.go
index 8c34149..b207601 100644
--- a/memory_test.go
+++ b/memory_test.go
@@ -54,6 +54,33 @@ func TestMemoryRestartLoadsTheSameView(t *testing.T) {
require.Equal(t, saved, loaded)
}
+func TestMemoryOpensAfterACrashBeforeTheViewSave(t *testing.T) {
+ root := t.TempDir()
+ clock := newTestClock()
+ memory, err := openMemory(t.Context(), root, clock.Now, newFakeSummarizer())
+ require.NoError(t, err)
+
+ _, err = memory.Append("user", "first")
+ require.NoError(t, err)
+
+ saved, err := os.ReadFile(filepath.Join(root, "view.json"))
+ require.NoError(t, err)
+
+ _, err = memory.Append("user", "second")
+ require.NoError(t, err)
+
+ view := memory.View()
+ require.NoError(t, memory.Close())
+
+ // The log and the tree hold message 1, but the view does not.
+ require.NoError(t, os.WriteFile(filepath.Join(root, "view.json"), saved, 0o600))
+
+ memory, err = openMemory(t.Context(), root, clock.Now, newFakeSummarizer())
+ require.NoError(t, err)
+ require.Equal(t, view, memory.View())
+ require.NoError(t, memory.Close())
+}
+
func TestMemoryKeepsTheCompactionViewCoarser(t *testing.T) {
memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer())
require.NoError(t, err)
@@ -234,7 +261,7 @@ func TestMemoryKeepsALongMessageOutOfTheView(t *testing.T) {
_, err = memory.Append("echo", longText(0))
require.NoError(t, err)
require.NoError(t, memory.Wait(t.Context()))
- require.Equal(t, "\n0+1|"+pending+"\n", memory.View())
+ require.Equal(t, "\n0+1|"+viewPending+"\n", memory.View())
summarizer.SetFailing(false)