From 95be3d7258e8dca549bb9d486d2a5214b606e8ac Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Mon, 4 Dec 2017 23:33:53 +0100 Subject: [PATCH 01/11] Add failing test --- integrations/git_test.go | 59 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index 5e6334d20a17e..b0971bf888df6 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -8,8 +8,10 @@ import ( "context" "fmt" "io/ioutil" + "math/rand" "net" "net/http" + "net/url" "os" "path/filepath" "testing" @@ -43,7 +45,7 @@ func onGiteaWebRun(t *testing.T, callback func(*testing.T, string)) { callback(t, fmt.Sprintf("http://localhost:%s/", port)) } -func TestClone_ViaHTTP_NoLogin(t *testing.T) { +func TestGit(t *testing.T) { prepareTestEnv(t) onGiteaWebRun(t, func(t *testing.T, urlPrefix string) { @@ -51,10 +53,57 @@ func TestClone_ViaHTTP_NoLogin(t *testing.T) { assert.NoError(t, err) defer os.RemoveAll(dstPath) - err = git.Clone(fmt.Sprintf("%suser2/repo1.git", urlPrefix), - dstPath, git.CloneRepoOptions{}) - assert.NoError(t, err) + t.Run("CloneNoLogin", func(t *testing.T) { + 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"))) + }) + + t.Run("LFS", func(t *testing.T) { + /* Generate random file */ + data := make([]byte, 1024) + _, err := rand.Read(data) + assert.NoError(t, err) + tmpFile, err := ioutil.TempFile(dstPath, "data-file-") + defer tmpFile.Close() + _, err = tmpFile.Write(data) + assert.NoError(t, err) + + //Setup git LFS + _, err = git.NewCommand("lfs").AddArguments("install").RunInDir(dstPath) + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("track", "data-file-*").RunInDir(dstPath) + assert.NoError(t, err) + + //Commit + err = git.AddChanges(dstPath, false, ".gitattributes", tmpFile.Name()) + assert.NoError(t, err) + err = git.CommitChanges(dstPath, git.CommitChangesOptions{ + Committer: &git.Signature{ + Email: "test@email.com", + Name: "User2", + When: time.Now(), + }, + Author: &git.Signature{ + Email: "test@email.com", + Name: "User2", + When: time.Now(), + }, + Message: "Testing LFS ", + }) + assert.NoError(t, err) - assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) + //Push + u, err := url.Parse(fmt.Sprintf("%suser2/repo1.git", urlPrefix)) + u.User = url.UserPassword("user2", "password") + assert.NoError(t, err) + err = git.Push(dstPath, git.PushOptions{ + Branch: "master", + Remote: u.String(), + Force: false, + }) + assert.NoError(t, err) + }) }) } From 93726dce7064a5629f5d348ddba5ae8eec6a66ea Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Mon, 4 Dec 2017 23:52:32 +0100 Subject: [PATCH 02/11] Fix urls --- modules/lfs/server.go | 4 ++-- routers/repo/view.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/lfs/server.go b/modules/lfs/server.go index 474a3f56c3e2b..329d6f00c4861 100644 --- a/modules/lfs/server.go +++ b/modules/lfs/server.go @@ -68,12 +68,12 @@ type ObjectError struct { // ObjectLink builds a URL linking to the object. func (v *RequestVars) ObjectLink() string { - return setting.AppURL + path.Join(v.User, v.Repo, "info/lfs/objects", v.Oid) + return setting.AppURL + path.Join(v.User, v.Repo+".git", "info/lfs/objects", v.Oid) } // VerifyLink builds a URL for verifying the object. func (v *RequestVars) VerifyLink() string { - return setting.AppURL + path.Join(v.User, v.Repo, "info/lfs/verify") + return setting.AppURL + path.Join(v.User, v.Repo+".git", "info/lfs/verify") } // link provides a structure used to build a hypermedia representation of an HTTP link. diff --git a/routers/repo/view.go b/routers/repo/view.go index a02acb0d6c137..512af27fc4886 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -179,7 +179,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st ctx.Data["IsLFSFile"] = true ctx.Data["FileSize"] = size filenameBase64 := base64.RawURLEncoding.EncodeToString([]byte(blob.Name())) - ctx.Data["RawFileLink"] = fmt.Sprintf("%s%s/info/lfs/objects/%s/%s", setting.AppURL, ctx.Repo.Repository.FullName(), oid, filenameBase64) + ctx.Data["RawFileLink"] = fmt.Sprintf("%s%s.git/info/lfs/objects/%s/%s", setting.AppURL, ctx.Repo.Repository.FullName(), oid, filenameBase64) } } } From e5d1c78d486ea2129b02595f5f6f2c581981b1ea Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 00:18:34 +0100 Subject: [PATCH 03/11] Improve url in tests --- integrations/git_test.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index b0971bf888df6..fd071aa4e8d9b 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -18,17 +18,20 @@ import ( "time" "code.gitea.io/git" + "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" "github.com/stretchr/testify/assert" ) -func onGiteaWebRun(t *testing.T, callback func(*testing.T, string)) { +func onGiteaWebRun(t *testing.T, callback func(*testing.T, *url.URL)) { s := http.Server{ Handler: mac, } - listener, err := net.Listen("tcp", "") + u, err := url.Parse(setting.AppURL) + assert.NoError(t, err) + listener, err := net.Listen("tcp", u.Host) assert.NoError(t, err) defer func() { @@ -39,23 +42,20 @@ func onGiteaWebRun(t *testing.T, callback func(*testing.T, string)) { go s.Serve(listener) - _, port, err := net.SplitHostPort(listener.Addr().String()) - assert.NoError(t, err) - - callback(t, fmt.Sprintf("http://localhost:%s/", port)) + callback(t, u) } func TestGit(t *testing.T) { prepareTestEnv(t) - onGiteaWebRun(t, func(t *testing.T, urlPrefix string) { + onGiteaWebRun(t, func(t *testing.T, u *url.URL) { dstPath, err := ioutil.TempDir("", "repo1") assert.NoError(t, err) defer os.RemoveAll(dstPath) + u.Path = "user2/repo1.git" t.Run("CloneNoLogin", func(t *testing.T) { - err = git.Clone(fmt.Sprintf("%suser2/repo1.git", urlPrefix), - dstPath, git.CloneRepoOptions{}) + err = git.Clone(u.String(), dstPath, git.CloneRepoOptions{}) assert.NoError(t, err) assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) }) @@ -95,8 +95,8 @@ func TestGit(t *testing.T) { assert.NoError(t, err) //Push - u, err := url.Parse(fmt.Sprintf("%suser2/repo1.git", urlPrefix)) u.User = url.UserPassword("user2", "password") + fmt.Printf("Debug : %s \n", u.String()) assert.NoError(t, err) err = git.Push(dstPath, git.PushOptions{ Branch: "master", From d7dbb1da6d02b16303a8af2e8e064283ea8555d2 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 00:44:25 +0100 Subject: [PATCH 04/11] improve testing --- integrations/git_test.go | 137 +++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 47 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index fd071aa4e8d9b..5e5b16b94ed87 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -54,56 +54,99 @@ func TestGit(t *testing.T) { defer os.RemoveAll(dstPath) u.Path = "user2/repo1.git" - t.Run("CloneNoLogin", func(t *testing.T) { - err = git.Clone(u.String(), dstPath, git.CloneRepoOptions{}) - assert.NoError(t, err) - assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) + t.Run("Standard", func(t *testing.T) { + t.Run("CloneNoLogin", func(t *testing.T) { + err = git.Clone(u.String(), dstPath, git.CloneRepoOptions{}) + assert.NoError(t, err) + assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) + }) + t.Run("PushCommit", func(t *testing.T) { + data := make([]byte, 1024) + _, err := rand.Read(data) + assert.NoError(t, err) + tmpFile, err := ioutil.TempFile(dstPath, "data-file-") + defer tmpFile.Close() + _, err = tmpFile.Write(data) + assert.NoError(t, err) + fmt.Printf("Debug : %s / %s \n", dstPath, filepath.Base(tmpFile.Name())) + + //Commit + err = git.AddChanges(dstPath, false, filepath.Base(tmpFile.Name())) + assert.NoError(t, err) + err = git.CommitChanges(dstPath, git.CommitChangesOptions{ + Committer: &git.Signature{ + Email: "user2@example.com", + Name: "User Two", + When: time.Now(), + }, + Author: &git.Signature{ + Email: "user2@example.com", + Name: "User Two", + When: time.Now(), + }, + Message: "Testing commit", + }) + assert.NoError(t, err) + + //Push + u.User = url.UserPassword("user2", "password") + fmt.Printf("Debug : %s \n", u.String()) + assert.NoError(t, err) + err = git.Push(dstPath, git.PushOptions{ + Branch: "master", + Remote: u.String(), + Force: false, + }) + assert.NoError(t, err) + }) }) - t.Run("LFS", func(t *testing.T) { - /* Generate random file */ - data := make([]byte, 1024) - _, err := rand.Read(data) - assert.NoError(t, err) - tmpFile, err := ioutil.TempFile(dstPath, "data-file-") - defer tmpFile.Close() - _, err = tmpFile.Write(data) - assert.NoError(t, err) - - //Setup git LFS - _, err = git.NewCommand("lfs").AddArguments("install").RunInDir(dstPath) - assert.NoError(t, err) - _, err = git.NewCommand("lfs").AddArguments("track", "data-file-*").RunInDir(dstPath) - assert.NoError(t, err) - - //Commit - err = git.AddChanges(dstPath, false, ".gitattributes", tmpFile.Name()) - assert.NoError(t, err) - err = git.CommitChanges(dstPath, git.CommitChangesOptions{ - Committer: &git.Signature{ - Email: "test@email.com", - Name: "User2", - When: time.Now(), - }, - Author: &git.Signature{ - Email: "test@email.com", - Name: "User2", - When: time.Now(), - }, - Message: "Testing LFS ", - }) - assert.NoError(t, err) - - //Push - u.User = url.UserPassword("user2", "password") - fmt.Printf("Debug : %s \n", u.String()) - assert.NoError(t, err) - err = git.Push(dstPath, git.PushOptions{ - Branch: "master", - Remote: u.String(), - Force: false, + t.Run("PushCommit", func(t *testing.T) { + /* Generate random file */ + data := make([]byte, 1024) + _, err := rand.Read(data) + assert.NoError(t, err) + tmpFile, err := ioutil.TempFile(dstPath, "data-file-") + defer tmpFile.Close() + _, err = tmpFile.Write(data) + assert.NoError(t, err) + fmt.Printf("Debug : %s / %s \n", dstPath, filepath.Base(tmpFile.Name())) + + //Setup git LFS + _, err = git.NewCommand("lfs").AddArguments("install").RunInDir(dstPath) + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("track", "data-file-*").RunInDir(dstPath) + assert.NoError(t, err) + + //Commit + err = git.AddChanges(dstPath, false, ".gitattributes", filepath.Base(tmpFile.Name())) + assert.NoError(t, err) + err = git.CommitChanges(dstPath, git.CommitChangesOptions{ + Committer: &git.Signature{ + Email: "user2@example.com", + Name: "User Two", + When: time.Now(), + }, + Author: &git.Signature{ + Email: "user2@example.com", + Name: "User Two", + When: time.Now(), + }, + Message: "Testing LFS ", + }) + assert.NoError(t, err) + + //Push + u.User = url.UserPassword("user2", "password") + fmt.Printf("Debug : %s \n", u.String()) + assert.NoError(t, err) + err = git.Push(dstPath, git.PushOptions{ + Branch: "master", + Remote: u.String(), + Force: false, + }) + assert.NoError(t, err) }) - assert.NoError(t, err) }) }) } From 0dd551408c4084a18d5ec51b2e4a5cdc3bec2e91 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 00:59:49 +0100 Subject: [PATCH 05/11] Remove debug code --- integrations/git_test.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index 5e5b16b94ed87..a291b3c4f3c8e 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -6,7 +6,6 @@ package integrations import ( "context" - "fmt" "io/ioutil" "math/rand" "net" @@ -68,7 +67,6 @@ func TestGit(t *testing.T) { defer tmpFile.Close() _, err = tmpFile.Write(data) assert.NoError(t, err) - fmt.Printf("Debug : %s / %s \n", dstPath, filepath.Base(tmpFile.Name())) //Commit err = git.AddChanges(dstPath, false, filepath.Base(tmpFile.Name())) @@ -90,8 +88,6 @@ func TestGit(t *testing.T) { //Push u.User = url.UserPassword("user2", "password") - fmt.Printf("Debug : %s \n", u.String()) - assert.NoError(t, err) err = git.Push(dstPath, git.PushOptions{ Branch: "master", Remote: u.String(), @@ -110,7 +106,6 @@ func TestGit(t *testing.T) { defer tmpFile.Close() _, err = tmpFile.Write(data) assert.NoError(t, err) - fmt.Printf("Debug : %s / %s \n", dstPath, filepath.Base(tmpFile.Name())) //Setup git LFS _, err = git.NewCommand("lfs").AddArguments("install").RunInDir(dstPath) @@ -138,8 +133,6 @@ func TestGit(t *testing.T) { //Push u.User = url.UserPassword("user2", "password") - fmt.Printf("Debug : %s \n", u.String()) - assert.NoError(t, err) err = git.Push(dstPath, git.PushOptions{ Branch: "master", Remote: u.String(), From b652e5ef7260371058ef504e79358d6a5f7276c5 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 01:05:28 +0100 Subject: [PATCH 06/11] Add deps --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index e168f280a8182..5a2776c866da2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -132,6 +132,7 @@ pipeline: TAGS: bindata GOPATH: /srv/app commands: + - apk add --no-cache git-lfs - make test-mysql when: event: [ tag ] @@ -144,6 +145,7 @@ pipeline: TAGS: bindata GOPATH: /srv/app commands: + - apk add --no-cache git-lfs - make test-pgsql when: event: [ push, tag, pull_request ] From 3a034b7e73af49a608e9e2e004db4dd0aed25e97 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 01:39:11 +0100 Subject: [PATCH 07/11] LFS corner-case : Search on lower but store with case --- integrations/git_test.go | 13 +++++++++++++ models/lfs_lock.go | 6 +++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index a291b3c4f3c8e..b7f5b80874e8f 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -140,6 +140,19 @@ func TestGit(t *testing.T) { }) assert.NoError(t, err) }) + t.Run("Locks", func(t *testing.T) { + _, err = git.NewCommand("remote").AddArguments("set-url", "origin", u.String()).RunInDir(dstPath) //TODO add test ssh git-lfs-creds + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("locks").RunInDir(dstPath) + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("lock", "README.md").RunInDir(dstPath) + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("locks").RunInDir(dstPath) + assert.NoError(t, err) + _, err = git.NewCommand("lfs").AddArguments("unlock", "README.md").RunInDir(dstPath) + assert.NoError(t, err) + }) + }) }) } diff --git a/models/lfs_lock.go b/models/lfs_lock.go index 83811bc7bd647..9bb87843a37af 100644 --- a/models/lfs_lock.go +++ b/models/lfs_lock.go @@ -36,7 +36,7 @@ func (l *LFSLock) AfterLoad() { } func cleanPath(p string) string { - return strings.ToLower(path.Clean(p)) + return path.Clean(p) } // APIFormat convert a Release to lfs.LFSLock @@ -73,8 +73,8 @@ func CreateLFSLock(lock *LFSLock) (*LFSLock, error) { // GetLFSLock returns release by given path. func GetLFSLock(repoID int64, path string) (*LFSLock, error) { path = cleanPath(path) - rel := &LFSLock{RepoID: repoID, Path: path} - has, err := x.Get(rel) + rel := &LFSLock{RepoID: repoID} + has, err := x.Where("lower(path) = ?", strings.ToLower(path)).Get(rel) if err != nil { return nil, err } From 41d054ef8ecdde9986e19439d77564c6ab367534 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 01:41:49 +0100 Subject: [PATCH 08/11] Temporary comment of blocking action --- integrations/git_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index b7f5b80874e8f..9cb37d0dae168 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -93,7 +93,7 @@ func TestGit(t *testing.T) { Remote: u.String(), Force: false, }) - assert.NoError(t, err) + //TODO assert.NoError(t, err) }) }) t.Run("LFS", func(t *testing.T) { @@ -138,7 +138,7 @@ func TestGit(t *testing.T) { Remote: u.String(), Force: false, }) - assert.NoError(t, err) + //TODO assert.NoError(t, err) }) t.Run("Locks", func(t *testing.T) { _, err = git.NewCommand("remote").AddArguments("set-url", "origin", u.String()).RunInDir(dstPath) //TODO add test ssh git-lfs-creds From de408732800de2f0a68efce3f917b16068337d87 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 5 Dec 2017 22:36:03 +0100 Subject: [PATCH 09/11] fix hooks --- .drone.yml | 2 -- integrations/git_test.go | 4 ++-- .../user2/repo1.git/hooks/post-receive.d/gitea | 2 +- .../user2/repo1.git/hooks/pre-receive.d/gitea | 2 +- .../user2/repo1.git/hooks/update.d/gitea | 2 +- .../user2/repo15.git/hooks/post-receive.d/gitea | 2 +- .../user2/repo15.git/hooks/pre-receive.d/gitea | 2 +- .../user2/repo15.git/hooks/update.d/gitea | 2 +- .../user3/repo3.git/hooks/post-receive.d/gitea | 2 +- .../user3/repo3.git/hooks/pre-receive.d/gitea | 2 +- .../user3/repo3.git/hooks/update.d/gitea | 2 +- 11 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.drone.yml b/.drone.yml index 5a2776c866da2..e168f280a8182 100644 --- a/.drone.yml +++ b/.drone.yml @@ -132,7 +132,6 @@ pipeline: TAGS: bindata GOPATH: /srv/app commands: - - apk add --no-cache git-lfs - make test-mysql when: event: [ tag ] @@ -145,7 +144,6 @@ pipeline: TAGS: bindata GOPATH: /srv/app commands: - - apk add --no-cache git-lfs - make test-pgsql when: event: [ push, tag, pull_request ] diff --git a/integrations/git_test.go b/integrations/git_test.go index 9cb37d0dae168..b7f5b80874e8f 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -93,7 +93,7 @@ func TestGit(t *testing.T) { Remote: u.String(), Force: false, }) - //TODO assert.NoError(t, err) + assert.NoError(t, err) }) }) t.Run("LFS", func(t *testing.T) { @@ -138,7 +138,7 @@ func TestGit(t *testing.T) { Remote: u.String(), Force: false, }) - //TODO assert.NoError(t, err) + assert.NoError(t, err) }) t.Run("Locks", func(t *testing.T) { _, err = git.NewCommand("remote").AddArguments("set-url", "origin", u.String()).RunInDir(dstPath) //TODO add test ssh git-lfs-creds diff --git a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/post-receive.d/gitea b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/post-receive.d/gitea index 2eb3be9836cff..43a948da3a983 100755 --- a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/post-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/post-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' post-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" post-receive diff --git a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/pre-receive.d/gitea b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/pre-receive.d/gitea index 1933f6cff0529..49d09406364a5 100755 --- a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/pre-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/pre-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' pre-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive diff --git a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/update.d/gitea b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/update.d/gitea index 615b4f4b82cd8..38101c242664a 100755 --- a/integrations/gitea-repositories-meta/user2/repo1.git/hooks/update.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo1.git/hooks/update.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' update $1 $2 $3 +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3 diff --git a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/post-receive.d/gitea b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/post-receive.d/gitea index 2eb3be9836cff..43a948da3a983 100755 --- a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/post-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/post-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' post-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" post-receive diff --git a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/pre-receive.d/gitea b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/pre-receive.d/gitea index 1933f6cff0529..49d09406364a5 100755 --- a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/pre-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/pre-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' pre-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive diff --git a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/update.d/gitea b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/update.d/gitea index 615b4f4b82cd8..38101c242664a 100755 --- a/integrations/gitea-repositories-meta/user2/repo15.git/hooks/update.d/gitea +++ b/integrations/gitea-repositories-meta/user2/repo15.git/hooks/update.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' update $1 $2 $3 +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3 diff --git a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/post-receive.d/gitea b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/post-receive.d/gitea index 2eb3be9836cff..43a948da3a983 100755 --- a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/post-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/post-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' post-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" post-receive diff --git a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/pre-receive.d/gitea b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/pre-receive.d/gitea index 1933f6cff0529..49d09406364a5 100755 --- a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/pre-receive.d/gitea +++ b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/pre-receive.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' pre-receive +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive diff --git a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/update.d/gitea b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/update.d/gitea index 615b4f4b82cd8..38101c242664a 100755 --- a/integrations/gitea-repositories-meta/user3/repo3.git/hooks/update.d/gitea +++ b/integrations/gitea-repositories-meta/user3/repo3.git/hooks/update.d/gitea @@ -1,2 +1,2 @@ #!/usr/bin/env bash -"$GITEA_ROOT/gitea" hook --config='integrations/app.ini' update $1 $2 $3 +"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3 From 503ec29d191ea8ba5087a766ef1ed76516d9045f Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Wed, 6 Dec 2017 21:12:31 +0100 Subject: [PATCH 10/11] Use temporary repo for git client test --- integrations/git_test.go | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index b7f5b80874e8f..12ecfd3149d67 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -18,6 +18,7 @@ import ( "code.gitea.io/git" "code.gitea.io/gitea/modules/setting" + api "code.gitea.io/sdk/gitea" "github.com/Unknwon/com" "github.com/stretchr/testify/assert" @@ -48,17 +49,44 @@ func TestGit(t *testing.T) { prepareTestEnv(t) onGiteaWebRun(t, func(t *testing.T, u *url.URL) { - dstPath, err := ioutil.TempDir("", "repo1") + dstPath, err := ioutil.TempDir("", "repo-tmp-17") assert.NoError(t, err) defer os.RemoveAll(dstPath) u.Path = "user2/repo1.git" t.Run("Standard", func(t *testing.T) { + t.Run("CloneNoLogin", func(t *testing.T) { + dstLocalPath, err := ioutil.TempDir("", "repo1") + assert.NoError(t, err) + defer os.RemoveAll(dstLocalPath) + err = git.Clone(u.String(), dstLocalPath, git.CloneRepoOptions{}) + assert.NoError(t, err) + assert.True(t, com.IsExist(filepath.Join(dstLocalPath, "README.md"))) + }) + + t.Run("CreateRepo", func(t *testing.T) { + session := loginUser(t, "user2") + req := NewRequestWithJSON(t, "POST", "/api/v1/user/repos", &api.CreateRepoOption{ + AutoInit: true, + Description: "Temporary repo", + Name: "repo-tmp-17", + Private: false, + Gitignores: "", + License: "WTFPL", + Readme: "Default", + }) + session.MakeRequest(t, req, http.StatusCreated) + }) + + u.Path = "user2/repo-tmp-17.git" + u.User = url.UserPassword("user2", "password") + t.Run("Clone", func(t *testing.T) { err = git.Clone(u.String(), dstPath, git.CloneRepoOptions{}) assert.NoError(t, err) assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) }) + t.Run("PushCommit", func(t *testing.T) { data := make([]byte, 1024) _, err := rand.Read(data) @@ -87,7 +115,6 @@ func TestGit(t *testing.T) { assert.NoError(t, err) //Push - u.User = url.UserPassword("user2", "password") err = git.Push(dstPath, git.PushOptions{ Branch: "master", Remote: u.String(), From 10f1bc2e167f485b006ea7b27cde3e825afc7c2f Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Thu, 7 Dec 2017 09:41:08 +0100 Subject: [PATCH 11/11] Use userPassword in place of hard-coded password --- integrations/git_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/git_test.go b/integrations/git_test.go index 12ecfd3149d67..53814cf410b1a 100644 --- a/integrations/git_test.go +++ b/integrations/git_test.go @@ -80,7 +80,7 @@ func TestGit(t *testing.T) { }) u.Path = "user2/repo-tmp-17.git" - u.User = url.UserPassword("user2", "password") + u.User = url.UserPassword("user2", userPassword) t.Run("Clone", func(t *testing.T) { err = git.Clone(u.String(), dstPath, git.CloneRepoOptions{}) assert.NoError(t, err) @@ -159,7 +159,7 @@ func TestGit(t *testing.T) { assert.NoError(t, err) //Push - u.User = url.UserPassword("user2", "password") + u.User = url.UserPassword("user2", userPassword) err = git.Push(dstPath, git.PushOptions{ Branch: "master", Remote: u.String(),