mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 07:11:51 +08:00
tests: makes sure we all migrations are working
This commit is contained in:
@ -14,13 +14,15 @@ import (
|
|||||||
var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"}
|
var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"}
|
||||||
|
|
||||||
func TestMigrations(t *testing.T) {
|
func TestMigrations(t *testing.T) {
|
||||||
//log.NewLogger(0, "console", `{"level": 0}`)
|
|
||||||
|
|
||||||
testDBs := []sqlutil.TestDB{
|
testDBs := []sqlutil.TestDB{
|
||||||
sqlutil.TestDB_Sqlite3,
|
sqlutil.TestDB_Sqlite3,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testDB := range testDBs {
|
for _, testDB := range testDBs {
|
||||||
|
sql := `select count(*) as count from migration_log`
|
||||||
|
r := struct {
|
||||||
|
Count int64
|
||||||
|
}{}
|
||||||
|
|
||||||
Convey("Initial "+testDB.DriverName+" migration", t, func() {
|
Convey("Initial "+testDB.DriverName+" migration", t, func() {
|
||||||
x, err := xorm.NewEngine(testDB.DriverName, testDB.ConnStr)
|
x, err := xorm.NewEngine(testDB.DriverName, testDB.ConnStr)
|
||||||
@ -28,30 +30,31 @@ func TestMigrations(t *testing.T) {
|
|||||||
|
|
||||||
sqlutil.CleanDB(x)
|
sqlutil.CleanDB(x)
|
||||||
|
|
||||||
|
has, err := x.SQL(sql).Get(&r)
|
||||||
|
So(err, ShouldNotBeNil)
|
||||||
|
|
||||||
mg := NewMigrator(x)
|
mg := NewMigrator(x)
|
||||||
AddMigrations(mg)
|
AddMigrations(mg)
|
||||||
|
|
||||||
err = mg.Start()
|
err = mg.Start()
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
// tables, err := x.DBMetas()
|
has, err = x.SQL(sql).Get(&r)
|
||||||
// So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
//
|
So(has, ShouldBeTrue)
|
||||||
// fmt.Printf("\nDB Schema after migration: table count: %v\n", len(tables))
|
expectedMigrations := mg.MigrationsCount() - 2 //we currently skip to migrations. We should rewrite skipped migrations to write in the log as well. until then we have to keep this
|
||||||
//
|
So(r.Count, ShouldEqual, expectedMigrations)
|
||||||
// for _, table := range tables {
|
|
||||||
// fmt.Printf("\nTable: %v \n", table.Name)
|
mg = NewMigrator(x)
|
||||||
// for _, column := range table.Columns() {
|
AddMigrations(mg)
|
||||||
// fmt.Printf("\t %v \n", column.String(x.Dialect()))
|
|
||||||
// }
|
err = mg.Start()
|
||||||
//
|
So(err, ShouldBeNil)
|
||||||
// if len(table.Indexes) > 0 {
|
|
||||||
// fmt.Printf("\n\tIndexes:\n")
|
has, err = x.SQL(sql).Get(&r)
|
||||||
// for _, index := range table.Indexes {
|
So(err, ShouldBeNil)
|
||||||
// fmt.Printf("\t %v (%v) %v \n", index.Name, strings.Join(index.Cols, ","), indexTypes[index.Type])
|
So(has, ShouldBeTrue)
|
||||||
// }
|
So(r.Count, ShouldEqual, expectedMigrations)
|
||||||
// }
|
|
||||||
// }
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ func NewMigrator(engine *xorm.Engine) *Migrator {
|
|||||||
return mg
|
return mg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (mg *Migrator) MigrationsCount() int {
|
||||||
|
return len(mg.migrations)
|
||||||
|
}
|
||||||
|
|
||||||
func (mg *Migrator) AddMigration(id string, m Migration) {
|
func (mg *Migrator) AddMigration(id string, m Migration) {
|
||||||
m.SetId(id)
|
m.SetId(id)
|
||||||
mg.migrations = append(mg.migrations, m)
|
mg.migrations = append(mg.migrations, m)
|
||||||
|
Reference in New Issue
Block a user