summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMura Li <typeless@users.noreply.github.com>2017-06-20 19:23:16 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2017-06-20 19:23:16 +0800
commit754482bf5d4922f0553c281ac525daff3f446c22 (patch)
treeff665e299196aa3ccd71a6aaa2a6c7bc6354717b
parent75f166b6b9dc51d48b94006e82051c41247605ab (diff)
downloadgitea-754482bf5d4922f0553c281ac525daff3f446c22.tar.gz
gitea-754482bf5d4922f0553c281ac525daff3f446c22.zip
Add integration test for repository migration (#1983)
-rw-r--r--Makefile14
-rw-r--r--integrations/repo_migrate_test.go70
2 files changed, 84 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 70018cd554..659af47f43 100644
--- a/Makefile
+++ b/Makefile
@@ -164,6 +164,20 @@ test-mysql: integrations.test
test-pgsql: integrations.test
GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.test
+
+.PHONY: bench-sqlite
+bench-sqlite: integrations.sqlite.test
+ GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test -test.bench .
+
+.PHONY: bench-mysql
+bench-mysql: integrations.test
+ GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.test -test.bench .
+
+.PHONY: bench-pgsql
+bench-pgsql: integrations.test
+ GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.test -test.bench .
+
+
.PHONY: integration-test-coverage
integration-test-coverage: integrations.cover.test
GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
diff --git a/integrations/repo_migrate_test.go b/integrations/repo_migrate_test.go
new file mode 100644
index 0000000000..127c53c431
--- /dev/null
+++ b/integrations/repo_migrate_test.go
@@ -0,0 +1,70 @@
+// 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 (
+ "net/http"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func testRepoMigrate(t testing.TB, session *TestSession, cloneAddr, repoName string) *TestResponse {
+ req := NewRequest(t, "GET", "/repo/migrate")
+ resp := session.MakeRequest(t, req)
+ assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+
+ link, exists := htmlDoc.doc.Find("form.ui.form").Attr("action")
+ assert.True(t, exists, "The template has changed")
+
+ uid, exists := htmlDoc.doc.Find("#uid").Attr("value")
+ assert.True(t, exists, "The template has changed")
+
+ req = NewRequestWithValues(t, "POST", link, map[string]string{
+ "_csrf": htmlDoc.GetCSRF(),
+ "clone_addr": cloneAddr,
+ "uid": uid,
+ "repo_name": repoName,
+ },
+ )
+ req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
+ resp = session.MakeRequest(t, req)
+ assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
+
+ return resp
+}
+
+func TestRepoMigrate(t *testing.T) {
+ prepareTestEnv(t)
+ session := loginUser(t, "user2")
+ testRepoMigrate(t, session, "https://github.com/go-gitea/git.git", "git")
+}
+
+func BenchmarkRepoMigrate(b *testing.B) {
+ samples := []struct {
+ url string
+ name string
+ }{
+ {url: "https://github.com/go-gitea/gitea.git", name: "gitea"},
+ {url: "https://github.com/ethantkoenig/manyfiles.git", name: "manyfiles"},
+ {url: "https://github.com/moby/moby.git", name: "moby"},
+ {url: "https://github.com/golang/go.git", name: "go"},
+ {url: "https://github.com/torvalds/linux.git", name: "linux"},
+ }
+
+ prepareTestEnv(b)
+ session := loginUser(b, "user2")
+ b.ResetTimer()
+
+ for _, s := range samples {
+ b.Run(s.name, func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ testRepoMigrate(b, session, s.url, s.name)
+ }
+
+ })
+ }
+}