@@ -6,8 +6,10 @@ package integrations
66
77import (
88 "bytes"
9+ "database/sql"
910 "fmt"
1011 "io"
12+ "log"
1113 "net/http"
1214 "os"
1315 "testing"
@@ -26,13 +28,7 @@ import (
2628var mac * macaron.Macaron
2729
2830func TestMain (m * testing.M ) {
29- appIniPath := os .Getenv ("GITEA_CONF" )
30- if appIniPath == "" {
31- fmt .Println ("Environment variable $GITEA_CONF not set" )
32- os .Exit (1 )
33- }
34- setting .CustomConf = appIniPath
35- routers .GlobalInit ()
31+ initIntegrationTest ()
3632 mac = routes .NewMacaron ()
3733 routes .RegisterRoutes (mac )
3834
@@ -59,6 +55,48 @@ func TestMain(m *testing.M) {
5955 os .Exit (m .Run ())
6056}
6157
58+ func initIntegrationTest () {
59+ if setting .CustomConf = os .Getenv ("GITEA_CONF" ); setting .CustomConf == "" {
60+ fmt .Println ("Environment variable $GITEA_CONF not set" )
61+ os .Exit (1 )
62+ }
63+
64+ setting .NewContext ()
65+ models .LoadConfigs ()
66+
67+ switch {
68+ case setting .UseMySQL :
69+ db , err := sql .Open ("mysql" , fmt .Sprintf ("%s:%s@tcp(%s)/" ,
70+ models .DbCfg .User , models .DbCfg .Passwd , models .DbCfg .Host ))
71+ defer db .Close ()
72+ if err != nil {
73+ log .Fatalf ("sql.Open: %v" , err )
74+ }
75+ if _ , err = db .Exec ("CREATE DATABASE IF NOT EXISTS testgitea" ); err != nil {
76+ log .Fatalf ("db.Exec: %v" , err )
77+ }
78+ case setting .UsePostgreSQL :
79+ db , err := sql .Open ("postgres" , fmt .Sprintf ("postgres://%s:%s@%s/?sslmode=%s" ,
80+ models .DbCfg .User , models .DbCfg .Passwd , models .DbCfg .Host , models .DbCfg .SSLMode ))
81+ defer db .Close ()
82+ if err != nil {
83+ log .Fatalf ("sql.Open: %v" , err )
84+ }
85+ rows , err := db .Query (fmt .Sprintf ("SELECT 1 FROM pg_database WHERE datname = '%s'" ,
86+ models .DbCfg .Name ))
87+ if err != nil {
88+ log .Fatalf ("db.Query: %v" , err )
89+ }
90+ if rows .Next () {
91+ break // database already exists
92+ }
93+ if _ , err = db .Exec ("CREATE DATABASE testgitea" ); err != nil {
94+ log .Fatalf ("db.Exec: %v" , err )
95+ }
96+ }
97+ routers .GlobalInit ()
98+ }
99+
62100func prepareTestEnv (t * testing.T ) {
63101 assert .NoError (t , models .LoadFixtures ())
64102 assert .NoError (t , os .RemoveAll ("integrations/gitea-integration" ))
0 commit comments