From c5e42ffbae2c9e571933cf6a7d8ab51f81d0ca81 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Tue, 23 Jun 2026 20:19:35 +0100 Subject: [PATCH] fix(store): surface invalid schema_version; split migration test assertion Co-Authored-By: Claude Opus 4.8 (1M context) --- internal/store/store.go | 6 +++++- internal/store/store_test.go | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/store/store.go b/internal/store/store.go index 4abb192..9b3d695 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -59,7 +59,11 @@ func (s *Store) migrate() error { // Fresh database: schemaSQL created all columns already. return s.SetSetting("schema_version", strconv.Itoa(schemaVersion)) } - ver, _ := strconv.Atoi(v) + var ver int + ver, err = strconv.Atoi(v) + if err != nil { + return fmt.Errorf("invalid schema_version %q: %w", v, err) + } if ver < 2 { if _, err := s.db.Exec(`ALTER TABLE accounts ADD COLUMN from_address TEXT`); err != nil { return fmt.Errorf("migrate to v2: %w", err) diff --git a/internal/store/store_test.go b/internal/store/store_test.go index 28e32c0..5ea3da5 100644 --- a/internal/store/store_test.go +++ b/internal/store/store_test.go @@ -158,8 +158,11 @@ INSERT INTO accounts(name,mode,imap_host,imap_port,imap_security,auth_type,usern if err != nil { t.Fatalf("ListAccounts after migrate: %v", err) } - if len(accs) != 1 || accs[0].FromAddress != "" { - t.Fatalf("legacy account wrong after migrate: %+v", accs) + if len(accs) != 1 { + t.Fatalf("want 1 account after migrate, got %d", len(accs)) + } + if accs[0].FromAddress != "" { + t.Fatalf("legacy account FromAddress should be empty, got %q", accs[0].FromAddress) } if got := accs[0].SendFrom(); got != "login@example.com" { t.Fatalf("legacy account should send from username, got %q", got)