diff --git a/integrations/integration_test.go b/integrations/integration_test.go index 664290cc9..847bcd9ea 100644 --- a/integrations/integration_test.go +++ b/integrations/integration_test.go @@ -130,6 +130,19 @@ func initIntegrationTest() { if _, err = db.Exec("CREATE DATABASE testgitea"); err != nil { log.Fatalf("db.Exec: %v", err) } + case setting.UseMSSQL: + host, port := models.ParseMSSQLHostPort(models.DbCfg.Host) + db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", + host, port, models.DbCfg.Name, models.DbCfg.User, models.DbCfg.Passwd)) + defer db.Close() + if err != nil { + log.Fatalf("sql.Open: %v", err) + } + // FIXME: what happens if the database already exists? ¯\_(ツ)_/¯ + if _, err := db.Exec("CREATE DATABASE master"); err != nil { + log.Fatalf("db.Exec: %v", err) + } + } routers.GlobalInit() } diff --git a/models/models.go b/models/models.go index 5743f1862..329750609 100644 --- a/models/models.go +++ b/models/models.go @@ -197,7 +197,8 @@ func getPostgreSQLConnectionString(DBHost, DBUser, DBPasswd, DBName, DBParam, DB return } -func parseMSSQLHostPort(info string) (string, string) { +// ParseMSSQLHostPort splits the host into host and port +func ParseMSSQLHostPort(info string) (string, string) { host, port := "127.0.0.1", "1433" if strings.Contains(info, ":") { host = strings.Split(info, ":")[0] @@ -229,7 +230,7 @@ func getEngine() (*xorm.Engine, error) { case "postgres": connStr = getPostgreSQLConnectionString(DbCfg.Host, DbCfg.User, DbCfg.Passwd, DbCfg.Name, Param, DbCfg.SSLMode) case "mssql": - host, port := parseMSSQLHostPort(DbCfg.Host) + host, port := ParseMSSQLHostPort(DbCfg.Host) connStr = fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", host, port, DbCfg.Name, DbCfg.User, DbCfg.Passwd) case "sqlite3": if !EnableSQLite3 {