func testForMySQL(m *testing.M) int { db := os.Getenv("DATABASE") defer os.Setenv("DATABASE", db) os.Setenv("DATABASE", "mysql") dbHost := os.Getenv("DB_HOST") if len(dbHost) == 0 { log.Fatalf("environment variable DB_HOST is not set") } dbUser := os.Getenv("DB_USR") if len(dbUser) == 0 { log.Fatalf("environment variable DB_USR is not set") } dbPort := os.Getenv("DB_PORT") if len(dbPort) == 0 { log.Fatalf("environment variable DB_PORT is not set") } dbPassword := os.Getenv("DB_PWD") log.Infof("DB_HOST: %s, DB_USR: %s, DB_PORT: %s, DB_PWD: %s\n", dbHost, dbUser, dbPort, dbPassword) os.Setenv("MYSQL_HOST", dbHost) os.Setenv("MYSQL_PORT", dbPort) os.Setenv("MYSQL_USR", dbUser) os.Setenv("MYSQL_PWD", dbPassword) return testForAll(m) }
func TestMain(m *testing.M) { databases := []string{"mysql", "sqlite"} for _, database := range databases { log.Infof("run test cases for database: %s", database) result := 1 switch database { case "mysql": result = testForMySQL(m) case "sqlite": result = testForSQLite(m) default: log.Fatalf("invalid database: %s", database) } if result != 0 { os.Exit(result) } } }