]> source.dussan.org Git - gitea.git/commitdiff
Add git clone test on integration test (#1682)
authorLunny Xiao <xiaolunwen@gmail.com>
Thu, 2 Nov 2017 17:51:03 +0000 (01:51 +0800)
committerKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>
Thu, 2 Nov 2017 17:51:03 +0000 (18:51 +0100)
integrations/git_test.go [new file with mode: 0644]
integrations/integration_test.go

diff --git a/integrations/git_test.go b/integrations/git_test.go
new file mode 100644 (file)
index 0000000..5e6334d
--- /dev/null
@@ -0,0 +1,60 @@
+// 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 (
+       "context"
+       "fmt"
+       "io/ioutil"
+       "net"
+       "net/http"
+       "os"
+       "path/filepath"
+       "testing"
+       "time"
+
+       "code.gitea.io/git"
+
+       "github.com/Unknwon/com"
+       "github.com/stretchr/testify/assert"
+)
+
+func onGiteaWebRun(t *testing.T, callback func(*testing.T, string)) {
+       s := http.Server{
+               Handler: mac,
+       }
+
+       listener, err := net.Listen("tcp", "")
+       assert.NoError(t, err)
+
+       defer func() {
+               ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
+               s.Shutdown(ctx)
+               cancel()
+       }()
+
+       go s.Serve(listener)
+
+       _, port, err := net.SplitHostPort(listener.Addr().String())
+       assert.NoError(t, err)
+
+       callback(t, fmt.Sprintf("http://localhost:%s/", port))
+}
+
+func TestClone_ViaHTTP_NoLogin(t *testing.T) {
+       prepareTestEnv(t)
+
+       onGiteaWebRun(t, func(t *testing.T, urlPrefix string) {
+               dstPath, err := ioutil.TempDir("", "repo1")
+               assert.NoError(t, err)
+               defer os.RemoveAll(dstPath)
+
+               err = git.Clone(fmt.Sprintf("%suser2/repo1.git", urlPrefix),
+                       dstPath, git.CloneRepoOptions{})
+               assert.NoError(t, err)
+
+               assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md")))
+       })
+}
index 55014b5a41d194c3742ba86bd89ae3f3e742cf08..eae0638587835dfb4f3d8724dff015327f6945e8 100644 (file)
@@ -16,6 +16,7 @@ import (
        "net/url"
        "os"
        "path"
+       "path/filepath"
        "strings"
        "testing"
 
@@ -51,7 +52,7 @@ func TestMain(m *testing.M) {
 
        err := models.InitFixtures(
                helper,
-               "models/fixtures/",
+               path.Join(filepath.Dir(setting.AppPath), "models/fixtures/"),
        )
        if err != nil {
                fmt.Printf("Error initializing test database: %v\n", err)
@@ -134,7 +135,9 @@ func initIntegrationTest() {
 func prepareTestEnv(t testing.TB) {
        assert.NoError(t, models.LoadFixtures())
        assert.NoError(t, os.RemoveAll(setting.RepoRootPath))
-       assert.NoError(t, com.CopyDir("integrations/gitea-repositories-meta", setting.RepoRootPath))
+
+       assert.NoError(t, com.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"),
+               setting.RepoRootPath))
 }
 
 type TestSession struct {