]> source.dussan.org Git - gitea.git/commitdiff
Allow postgres integration tests to run over unix pipe (#19875)
authorzeripath <art27@cantab.net>
Fri, 3 Jun 2022 06:14:09 +0000 (07:14 +0100)
committerGitHub <noreply@github.com>
Fri, 3 Jun 2022 06:14:09 +0000 (02:14 -0400)
integrations/integration_test.go
integrations/migration-test/migration_test.go

index 4df485a6e8e1f6efdbba3ee5e7168cdfa5b9f49f..687591d5fa3f40ab57884007bf64a359f7688904 100644 (file)
@@ -193,8 +193,16 @@ func initIntegrationTest() {
                        log.Fatal("db.Exec: %v", err)
                }
        case setting.Database.UsePostgreSQL:
-               db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
-                       setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
+               var db *sql.DB
+               var err error
+               if setting.Database.Host[0] == '/' {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@/%s?sslmode=%s&host=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Name, setting.Database.SSLMode, setting.Database.Host))
+               } else {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+               }
+
                defer db.Close()
                if err != nil {
                        log.Fatal("sql.Open: %v", err)
@@ -216,8 +224,13 @@ func initIntegrationTest() {
                }
                db.Close()
 
-               db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
-                       setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+               if setting.Database.Host[0] == '/' {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@/%s?sslmode=%s&host=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Name, setting.Database.SSLMode, setting.Database.Host))
+               } else {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+               }
                // This is a different db object; requires a different Close()
                defer db.Close()
                if err != nil {
index 6e55807c271e38631f2a8b8d2f085f31838b48e3..6a431504a0f2ba6aecda83d9f171409ffc512237 100644 (file)
@@ -185,9 +185,17 @@ func restoreOldDB(t *testing.T, version string) bool {
                db.Close()
 
        case setting.Database.UsePostgreSQL:
-               db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
-                       setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
-               assert.NoError(t, err)
+               var db *sql.DB
+               var err error
+               if setting.Database.Host[0] == '/' {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@/?sslmode=%s&host=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.SSLMode, setting.Database.Host))
+                       assert.NoError(t, err)
+               } else {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
+                       assert.NoError(t, err)
+               }
                defer db.Close()
 
                _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", setting.Database.Name))
@@ -199,8 +207,13 @@ func restoreOldDB(t *testing.T, version string) bool {
 
                // Check if we need to setup a specific schema
                if len(setting.Database.Schema) != 0 {
-                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
-                               setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+                       if setting.Database.Host[0] == '/' {
+                               db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@/%s?sslmode=%s&host=%s",
+                                       setting.Database.User, setting.Database.Passwd, setting.Database.Name, setting.Database.SSLMode, setting.Database.Host))
+                       } else {
+                               db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
+                                       setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+                       }
                        if !assert.NoError(t, err) {
                                return false
                        }
@@ -225,8 +238,13 @@ func restoreOldDB(t *testing.T, version string) bool {
                        db.Close()
                }
 
-               db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
-                       setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+               if setting.Database.Host[0] == '/' {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@/%s?sslmode=%s&host=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Name, setting.Database.SSLMode, setting.Database.Host))
+               } else {
+                       db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
+                               setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
+               }
                assert.NoError(t, err)
                defer db.Close()