]> source.dussan.org Git - gitea.git/commitdiff
fix release creation via API (#5076)
authorLunny Xiao <xiaolunwen@gmail.com>
Mon, 15 Oct 2018 03:52:52 +0000 (11:52 +0800)
committerLauris BH <lauris@nix.lv>
Mon, 15 Oct 2018 03:52:52 +0000 (06:52 +0300)
* fix release creation via API

* fix release create tests

models/release.go
models/release_test.go [new file with mode: 0644]

index 1f03ed782d3c3bd13f96390eefec648df7ff0e64..44d028a26f3b5db2b719dca5d63504f4bc15e22c 100644 (file)
@@ -115,9 +115,9 @@ func createTag(gitRepo *git.Repository, rel *Release) error {
        // Only actual create when publish.
        if !rel.IsDraft {
                if !gitRepo.IsTagExist(rel.TagName) {
-                       commit, err := gitRepo.GetBranchCommit(rel.Target)
+                       commit, err := gitRepo.GetCommit(rel.Target)
                        if err != nil {
-                               return fmt.Errorf("GetBranchCommit: %v", err)
+                               return fmt.Errorf("GetCommit: %v", err)
                        }
 
                        // Trim '--' prefix to prevent command line argument vulnerability.
diff --git a/models/release_test.go b/models/release_test.go
new file mode 100644 (file)
index 0000000..de3155f
--- /dev/null
@@ -0,0 +1,96 @@
+// Copyright 2018 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 models
+
+import (
+       "testing"
+
+       "code.gitea.io/git"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestRelease_Create(t *testing.T) {
+       assert.NoError(t, PrepareTestDatabase())
+
+       user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
+       repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
+       repoPath := RepoPath(user.Name, repo.Name)
+
+       gitRepo, err := git.OpenRepository(repoPath)
+       assert.NoError(t, err)
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1",
+               Target:       "master",
+               Title:        "v0.1 is released",
+               Note:         "v0.1 is released",
+               IsDraft:      false,
+               IsPrerelease: false,
+               IsTag:        false,
+       }, nil))
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1.1",
+               Target:       "65f1bf27bc3bf70f64657658635e66094edbcb4d",
+               Title:        "v0.1.1 is released",
+               Note:         "v0.1.1 is released",
+               IsDraft:      false,
+               IsPrerelease: false,
+               IsTag:        false,
+       }, nil))
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1.2",
+               Target:       "65f1bf2",
+               Title:        "v0.1.2 is released",
+               Note:         "v0.1.2 is released",
+               IsDraft:      false,
+               IsPrerelease: false,
+               IsTag:        false,
+       }, nil))
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1.3",
+               Target:       "65f1bf2",
+               Title:        "v0.1.3 is released",
+               Note:         "v0.1.3 is released",
+               IsDraft:      true,
+               IsPrerelease: false,
+               IsTag:        false,
+       }, nil))
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1.4",
+               Target:       "65f1bf2",
+               Title:        "v0.1.4 is released",
+               Note:         "v0.1.4 is released",
+               IsDraft:      false,
+               IsPrerelease: true,
+               IsTag:        false,
+       }, nil))
+
+       assert.NoError(t, CreateRelease(gitRepo, &Release{
+               RepoID:       repo.ID,
+               PublisherID:  user.ID,
+               TagName:      "v0.1.5",
+               Target:       "65f1bf2",
+               Title:        "v0.1.5 is released",
+               Note:         "v0.1.5 is released",
+               IsDraft:      false,
+               IsPrerelease: false,
+               IsTag:        true,
+       }, nil))
+}