diff options
author | Ethan Koenig <etk39@cornell.edu> | 2017-04-25 03:24:51 -0400 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2017-04-25 15:24:51 +0800 |
commit | c58708d3eedb352bb277feb2c12bb1652a8a58b7 (patch) | |
tree | 97aeed6a13031618baa7d67185b04faea506da38 /integrations/integration_test.go | |
parent | 3012971e92b79683178a286511c091fb31ee90f6 (diff) | |
download | gitea-c58708d3eedb352bb277feb2c12bb1652a8a58b7.tar.gz gitea-c58708d3eedb352bb277feb2c12bb1652a8a58b7.zip |
Integration test framework (#1290)
* Integration test framework
* udpate drone sign
* Formatting fixes and move router.go to routers/
* update sign for drone
Diffstat (limited to 'integrations/integration_test.go')
-rw-r--r-- | integrations/integration_test.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/integrations/integration_test.go b/integrations/integration_test.go new file mode 100644 index 0000000000..db78eead86 --- /dev/null +++ b/integrations/integration_test.go @@ -0,0 +1,92 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package integrations + +import ( + "bytes" + "fmt" + "io" + "net/http" + "os" + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/routers" + "code.gitea.io/gitea/routers/routes" + + "gopkg.in/macaron.v1" + "gopkg.in/testfixtures.v2" +) + +var mac *macaron.Macaron + +func TestMain(m *testing.M) { + appIniPath := os.Getenv("GITEA_CONF") + if appIniPath == "" { + fmt.Println("Environment variable $GITEA_CONF not set") + os.Exit(1) + } + setting.CustomConf = appIniPath + routers.GlobalInit() + mac = routes.NewMacaron() + routes.RegisterRoutes(mac) + + var helper testfixtures.Helper + if setting.UseMySQL { + helper = &testfixtures.MySQL{} + } else if setting.UsePostgreSQL { + helper = &testfixtures.PostgreSQL{} + } else if setting.UseSQLite3 { + helper = &testfixtures.SQLite{} + } else { + fmt.Println("Unsupported RDBMS for integration tests") + os.Exit(1) + } + + err := models.InitFixtures( + helper, + "integrations/gitea-integration/fixtures/", + ) + if err != nil { + fmt.Printf("Error initializing test database: %v\n", err) + os.Exit(1) + } + os.Exit(m.Run()) +} + +type TestResponseWriter struct { + HeaderCode int + Writer io.Writer +} + +func (w *TestResponseWriter) Header() http.Header { + return make(map[string][]string) +} + +func (w *TestResponseWriter) Write(b []byte) (int, error) { + return w.Writer.Write(b) +} + +func (w *TestResponseWriter) WriteHeader(n int) { + w.HeaderCode = n +} + +type TestResponse struct { + HeaderCode int + Body []byte +} + +func MakeRequest(req *http.Request) *TestResponse { + buffer := bytes.NewBuffer(nil) + respWriter := &TestResponseWriter{ + Writer: buffer, + } + mac.ServeHTTP(respWriter, req) + return &TestResponse{ + HeaderCode: respWriter.HeaderCode, + Body: buffer.Bytes(), + } +} |