diff --git a/backend/migrations/migrations_test.go b/backend/migrations/migrations_test.go index 069212b..3e04af8 100644 --- a/backend/migrations/migrations_test.go +++ b/backend/migrations/migrations_test.go @@ -107,9 +107,31 @@ func TestBaselineDoesNotAlterProductionLikeSchema(t *testing.T) { if err != nil { t.Fatalf("旧库执行后续迁移失败: %v", err) } - if len(applied) != 2 || applied[0] != "0002_legacy_schema_patches" || applied[1] != "0003_billing_settings" { - t.Fatalf("旧库不应重跑 0001,实际执行: %v", applied) + // 断言真实意图:旧库不得重跑基线,且已登记的后续迁移不能再执行。 + // 不再写死迁移条数——否则每新增一个迁移都会误报。 // Logan.Li + for _, v := range applied { + if v == BaselineVersion { + t.Fatalf("旧库不应重跑基线 %s,实际执行: %v", BaselineVersion, applied) + } + if v == "0001_agent_credentials" { + t.Fatalf("旧库不应重跑 0001,实际执行: %v", applied) + } } + for _, want := range []string{"0002_legacy_schema_patches", "0003_billing_settings"} { + if !containsString(applied, want) { + t.Fatalf("旧库应补跑迁移 %s,实际执行: %v", want, applied) + } + } +} + +// containsString 判断字符串切片是否包含目标值。 // Logan.Li +func containsString(list []string, want string) bool { + for _, v := range list { + if v == want { + return true + } + } + return false } // schemaDefinitions 读取 SQLite 表定义,供基线非破坏性回归测试使用。 // Logan.Li