aboutsummaryrefslogtreecommitdiff
path: root/internal/persistence/txn_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-10-05 17:49:48 -0400
committerhistoria <[not public]>2026-10-05 17:49:48 -0400
commit7a15a5d70004b28bf2a710fa0f536af2446e5b17 (patch)
tree920705853f79bb13a65fcb2f89cee38e6f2efab8 /internal/persistence/txn_test.go
parentec703a39738fefb60817f5659f76f8e683f8d301 (diff)
downloadthehouseoficarus-7a15a5d70004b28bf2a710fa0f536af2446e5b17.tar.gz
fix: production multi-step recipes, drop-weight validation, journal versioning
Diffstat (limited to 'internal/persistence/txn_test.go')
-rw-r--r--internal/persistence/txn_test.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/internal/persistence/txn_test.go b/internal/persistence/txn_test.go
index be19c7c..e1cd05d 100644
--- a/internal/persistence/txn_test.go
+++ b/internal/persistence/txn_test.go
@@ -280,3 +280,23 @@ func TestRecoverKeepsJournalWithUnknownOpKind(t *testing.T) {
t.Fatalf("journal with unknown kind was removed: %v", err)
}
}
+
+// Regression: a journal written by a newer version must be refused, not
+// silently misread or deleted.
+func TestRecoverRefusesUnknownJournalVersion(t *testing.T) {
+ dir := t.TempDir()
+ journalDir := filepath.Join(dir, ".journal")
+ if err := os.MkdirAll(journalDir, 0700); err != nil {
+ t.Fatal(err)
+ }
+ path := filepath.Join(journalDir, "txn-future.json")
+ if err := os.WriteFile(path, []byte(`{"version":99,"ops":[]}`), 0600); err != nil {
+ t.Fatal(err)
+ }
+ if err := Recover(journalDir); err == nil {
+ t.Fatal("Recover accepted an unknown journal version")
+ }
+ if _, err := os.Stat(path); err != nil {
+ t.Fatalf("journal with an unknown version was removed: %v", err)
+ }
+}