From f70758dec918b01f0895bb747decfdf110ae52bd Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 3 Nov 2017 01:51:03 +0800 Subject: [PATCH] Add git clone test on integration test (#1682) --- integrations/git_test.go | 60 ++++++++++++++++++++++++++++++++ integrations/integration_test.go | 7 ++-- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 integrations/git_test.go diff --git a/integrations/git_test.go b/integrations/git_test.go new file mode 100644 index 000000000..5e6334d20 --- /dev/null +++ b/integrations/git_test.go @@ -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"))) + }) +} diff --git a/integrations/integration_test.go b/integrations/integration_test.go index 55014b5a4..eae063858 100644 --- a/integrations/integration_test.go +++ b/integrations/integration_test.go @@ -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 {