From 596308f21328c2b9849e9192bce7b060f3c68fbf Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Thu, 7 Dec 2017 21:22:02 -0800 Subject: [PATCH] Fix missing branch in release bug (#3108) --- modules/test/context_tests.go | 10 ++++++ routers/repo/release.go | 1 + routers/repo/release_test.go | 61 +++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 routers/repo/release_test.go diff --git a/modules/test/context_tests.go b/modules/test/context_tests.go index 887446d716..aa109aa0d0 100644 --- a/modules/test/context_tests.go +++ b/modules/test/context_tests.go @@ -9,6 +9,7 @@ import ( "net/url" "testing" + "code.gitea.io/git" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" @@ -51,6 +52,15 @@ func LoadUser(t *testing.T, ctx *context.Context, userID int64) { ctx.User = models.AssertExistsAndLoadBean(t, &models.User{ID: userID}).(*models.User) } +// LoadGitRepo load a git repo into a test context. Requires that ctx.Repo has +// already been populated. +func LoadGitRepo(t *testing.T, ctx *context.Context) { + assert.NoError(t, ctx.Repo.Repository.GetOwner()) + var err error + ctx.Repo.GitRepo, err = git.OpenRepository(ctx.Repo.Repository.RepoPath()) + assert.NoError(t, err) +} + type mockLocale struct{} func (l mockLocale) Language() string { diff --git a/routers/repo/release.go b/routers/repo/release.go index da99dd7713..a1babbc295 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -191,6 +191,7 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) { rel.Title = form.Title rel.Note = form.Content + rel.Target = form.Target rel.IsDraft = len(form.Draft) > 0 rel.IsPrerelease = form.Prerelease rel.PublisherID = ctx.User.ID diff --git a/routers/repo/release_test.go b/routers/repo/release_test.go new file mode 100644 index 0000000000..524c1c7346 --- /dev/null +++ b/routers/repo/release_test.go @@ -0,0 +1,61 @@ +// 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 repo + +import ( + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/test" +) + +func TestNewReleasePost(t *testing.T) { + for _, testCase := range []struct { + RepoID int64 + UserID int64 + TagName string + Form auth.NewReleaseForm + }{ + { + RepoID: 1, + UserID: 2, + TagName: "v1.1", // pre-existing tag + Form: auth.NewReleaseForm{ + TagName: "newtag", + Target: "master", + Title: "title", + Content: "content", + }, + }, + { + RepoID: 1, + UserID: 2, + TagName: "newtag", + Form: auth.NewReleaseForm{ + TagName: "newtag", + Target: "master", + Title: "title", + Content: "content", + }, + }, + } { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/releases/new") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + test.LoadGitRepo(t, ctx) + NewReleasePost(ctx, testCase.Form) + models.AssertExistsAndLoadBean(t, &models.Release{ + RepoID: 1, + PublisherID: 2, + TagName: testCase.Form.TagName, + Target: testCase.Form.Target, + Title: testCase.Form.Title, + Note: testCase.Form.Content, + }, models.Cond("is_draft=?", len(testCase.Form.Draft) > 0)) + } +}