+func TestLogBuildsAMissingIndexAgain(t *testing.T) {
+ root := t.TempDir()
+ clock := newTestClock()
+ log, err := openLog(t.Context(), root, clock.Now)
+ require.NoError(t, err)
+
+ for _, text := range []string{"a", "b", "c"} {
+ _, err = log.Append("user", text)
+ require.NoError(t, err)
+
+ clock.now = clock.now.Add(24 * time.Hour)
+ }
+
+ require.NoError(t, log.Close())
+
+ // A missing index, and an index that a crash cut in a record.
+ for _, cut := range []func(string) error{os.Remove, truncateToOneAndAHalf} {
+ require.NoError(t, cut(filepath.Join(root, "index", "main.idx")))
+
+ log, err = openLog(t.Context(), root, clock.Now)
+ require.NoError(t, err)
+ require.Equal(t, 3, log.Len())
+
+ message, err := log.Message(2)
+ require.NoError(t, err)
+ require.Equal(t, "c", message.Text)
+ require.NoError(t, log.Close())
+ }
+}
+