Skip to content

Commit 345d0b1

Browse files
authored
Merge pull request #242 from peterldowns/patch-1
Fix DisableCreateTable for MigrationSet instances.
2 parents 61ee1bf + 7393377 commit 345d0b1

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

migrate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -857,7 +857,7 @@ Check https://github.com/go-sql-driver/mysql#parsetime for more info.`)
857857
table.ColMap("Id").SetMaxSize(4000)
858858
}
859859

860-
if migSet.DisableCreateTable {
860+
if ms.DisableCreateTable {
861861
return dbMap, nil
862862
}
863863

migrate_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,54 @@ func (s *SqliteMigrateSuite) TestGetMigrationDbMapWithDisableCreateTable(c *C) {
760760
c.Assert(err, IsNil)
761761
}
762762

763+
// If ms.DisableCreateTable == true, then the the migrations table should not be
764+
// created, regardless of the global migSet.DisableCreateTable setting.
765+
func (s *SqliteMigrateSuite) TestGetMigrationObjDbMapWithDisableCreateTableTrue(c *C) {
766+
SetDisableCreateTable(false)
767+
ms := MigrationSet{
768+
DisableCreateTable: true,
769+
TableName: "silly_example_table",
770+
}
771+
c.Assert(migSet.DisableCreateTable, Equals, false)
772+
c.Assert(ms.DisableCreateTable, Equals, true)
773+
774+
dbMap, err := ms.getMigrationDbMap(s.Db, "sqlite3")
775+
c.Assert(err, IsNil)
776+
c.Assert(dbMap, NotNil)
777+
778+
tableNameIfExists, err := s.DbMap.SelectNullStr(
779+
"SELECT name FROM sqlite_master WHERE type='table' AND name=$1",
780+
ms.TableName,
781+
)
782+
c.Assert(err, IsNil)
783+
c.Assert(tableNameIfExists.Valid, Equals, false)
784+
}
785+
786+
// If ms.DisableCreateTable == false, then the the migrations table should not be
787+
// created, regardless of the global migSet.DisableCreateTable setting.
788+
func (s *SqliteMigrateSuite) TestGetMigrationObjDbMapWithDisableCreateTableFalse(c *C) {
789+
SetDisableCreateTable(true)
790+
defer SetDisableCreateTable(false) // reset the global state when the test ends.
791+
ms := MigrationSet{
792+
DisableCreateTable: false,
793+
TableName: "silly_example_table",
794+
}
795+
c.Assert(migSet.DisableCreateTable, Equals, true)
796+
c.Assert(ms.DisableCreateTable, Equals, false)
797+
798+
dbMap, err := ms.getMigrationDbMap(s.Db, "sqlite3")
799+
c.Assert(err, IsNil)
800+
c.Assert(dbMap, NotNil)
801+
802+
tableNameIfExists, err := s.DbMap.SelectNullStr(
803+
"SELECT name FROM sqlite_master WHERE type='table' AND name=$1",
804+
ms.TableName,
805+
)
806+
c.Assert(err, IsNil)
807+
c.Assert(tableNameIfExists.Valid, Equals, true)
808+
c.Assert(tableNameIfExists.String, Equals, ms.TableName)
809+
}
810+
763811
func (s *SqliteMigrateSuite) TestContextTimeout(c *C) {
764812
// This statement will run for a long time: 1,000,000 iterations of the fibonacci sequence
765813
fibonacciLoopStmt := `WITH RECURSIVE

0 commit comments

Comments
 (0)