mirror of
https://github.com/ent/ent.git
synced 2026-03-05 19:35:23 +03:00
dialect/sql/schema: respect sumfile when present and do not operate on checksum mismatch (#2522)
This commit is contained in:
@@ -187,7 +187,12 @@ func (m *Migrate) NamedDiff(ctx context.Context, name string, tables ...*Table)
|
|||||||
opts := []migrate.PlannerOption{
|
opts := []migrate.PlannerOption{
|
||||||
migrate.WithFormatter(m.atlas.fmt),
|
migrate.WithFormatter(m.atlas.fmt),
|
||||||
}
|
}
|
||||||
if !m.atlas.genSum {
|
if m.atlas.genSum {
|
||||||
|
// Validate the migration directory before proceeding.
|
||||||
|
if err := migrate.Validate(m.atlas.dir); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
opts = append(opts, migrate.DisableChecksum())
|
opts = append(opts, migrate.DisableChecksum())
|
||||||
}
|
}
|
||||||
return migrate.NewPlanner(nil, m.atlas.dir, opts...).WritePlan(plan)
|
return migrate.NewPlanner(nil, m.atlas.dir, opts...).WritePlan(plan)
|
||||||
|
|||||||
@@ -84,6 +84,19 @@ func TestMigrate_Diff(t *testing.T) {
|
|||||||
requireFileEqual(t, filepath.Join(p, v+"_changes.up.sql"), "-- create \"users\" table\nCREATE TABLE `users` (, PRIMARY KEY ());\n")
|
requireFileEqual(t, filepath.Join(p, v+"_changes.up.sql"), "-- create \"users\" table\nCREATE TABLE `users` (, PRIMARY KEY ());\n")
|
||||||
requireFileEqual(t, filepath.Join(p, v+"_changes.down.sql"), "-- reverse: create \"users\" table\nDROP TABLE `users`;\n")
|
requireFileEqual(t, filepath.Join(p, v+"_changes.down.sql"), "-- reverse: create \"users\" table\nDROP TABLE `users`;\n")
|
||||||
require.NoFileExists(t, filepath.Join(p, "atlas.sum"))
|
require.NoFileExists(t, filepath.Join(p, "atlas.sum"))
|
||||||
|
|
||||||
|
// Test integrity file.
|
||||||
|
p = t.TempDir()
|
||||||
|
d, err = migrate.NewLocalDir(p)
|
||||||
|
require.NoError(t, err)
|
||||||
|
m, err = NewMigrate(db, WithDir(d), WithSumFile())
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NoError(t, m.Diff(context.Background(), &Table{Name: "users"}))
|
||||||
|
requireFileEqual(t, filepath.Join(p, v+"_changes.up.sql"), "-- create \"users\" table\nCREATE TABLE `users` (, PRIMARY KEY ());\n")
|
||||||
|
requireFileEqual(t, filepath.Join(p, v+"_changes.down.sql"), "-- reverse: create \"users\" table\nDROP TABLE `users`;\n")
|
||||||
|
require.FileExists(t, filepath.Join(p, "atlas.sum"))
|
||||||
|
require.NoError(t, d.WriteFile("tmp.sql", nil))
|
||||||
|
require.ErrorIs(t, m.Diff(context.Background(), &Table{Name: "users"}), migrate.ErrChecksumMismatch)
|
||||||
}
|
}
|
||||||
|
|
||||||
func requireFileEqual(t *testing.T, name, contents string) {
|
func requireFileEqual(t *testing.T, name, contents string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user