|
|
package mysqldriver
import ( "github.com/pressly/goose" "log" "os" "testing" "time" )
var testDB *DB
func TestMain(m *testing.M) { testDbConnect := os.Getenv("DB_TEST_CONNECT") if testDbConnect == "" { testDbConnect = "stufflog_test:test1234@(localhost:3306)/stufflog_test" }
for i := 0; i < 10; i++ { db, err := Open(testDbConnect) if err != nil { log.Println("DB ERROR", i, err) time.Sleep(time.Second) continue }
testDB = db break } if testDB == nil { log.Println("DB FAILED") os.Exit(1) return }
err := goose.SetDialect("mysql") if err != nil { log.Println("GOOSE ERROR", err) os.Exit(1) return }
for { err = goose.Down(testDB.db.DB, "../../../migrations/mysql") if err != nil { break } }
err = goose.Up(testDB.db.DB, "../../../migrations/mysql") if err != nil && err != goose.ErrNoNextVersion && err != goose.ErrNoCurrentVersion { log.Println("UP ERROR", err) os.Exit(3) return }
code := m.Run()
os.Exit(code) }
func clearTable(tableName string) error { // If you really want to SQL inject the test DB, go right ahead!
_, err := testDB.db.Exec("DELETE FROM " + tableName + " WHERE TRUE") return err }
func mustParseTime(str string) time.Time { d, err := time.Parse(time.RFC3339Nano, str) if err != nil { panic(err) }
return d.UTC() }
func ptrInt(v int) *int { return &v }
func ptrString(v string) *string { return &v }
func ptrBool(v bool) *bool { return &v }
|