[PORT] Add warning message in merge instructions when AutodetectManualMerge was not enabled (gitea#31805)

---

Conflict resolution: trivial
Things done differently: Improve localization message, use the paragraph
element instead of the div element, fix passing this variable to the
template and add a integration test

(cherry picked from commit 9633f336c87947dc7d2a5e76077a10699ba5e50d)
This commit is contained in:
a1012112796 2024-08-10 09:09:34 +08:00 committed by Gusted
parent 44002a6399
commit e5f8d144f2
No known key found for this signature in database
GPG key ID: FD821B732837125F
5 changed files with 53 additions and 2 deletions

View file

@ -1952,6 +1952,7 @@ pulls.cmd_instruction_checkout_title = Checkout
pulls.cmd_instruction_checkout_desc = From your project repository, check out a new branch and test the changes. pulls.cmd_instruction_checkout_desc = From your project repository, check out a new branch and test the changes.
pulls.cmd_instruction_merge_title = Merge pulls.cmd_instruction_merge_title = Merge
pulls.cmd_instruction_merge_desc = Merge the changes and update on Forgejo. pulls.cmd_instruction_merge_desc = Merge the changes and update on Forgejo.
pulls.cmd_instruction_merge_warning = <b>Warning:</b> The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.
pulls.clear_merge_message = Clear merge message pulls.clear_merge_message = Clear merge message
pulls.clear_merge_message_hint = Clearing the merge message will only remove the commit message content and keep generated git trailers such as "Co-Authored-By …". pulls.clear_merge_message_hint = Clearing the merge message will only remove the commit message content and keep generated git trailers such as "Co-Authored-By …".
pulls.reopen_failed.head_branch = The pull request cannot be reopened, because the head branch doesn't exist anymore. pulls.reopen_failed.head_branch = The pull request cannot be reopened, because the head branch doesn't exist anymore.

View file

@ -1881,6 +1881,8 @@ func ViewIssue(ctx *context.Context) {
} }
prConfig := prUnit.PullRequestsConfig() prConfig := prUnit.PullRequestsConfig()
ctx.Data["AutodetectManualMerge"] = prConfig.AutodetectManualMerge
var mergeStyle repo_model.MergeStyle var mergeStyle repo_model.MergeStyle
// Check correct values and select default // Check correct values and select default
if ms, ok := ctx.Data["MergeStyle"].(repo_model.MergeStyle); !ok || if ms, ok := ctx.Data["MergeStyle"].(repo_model.MergeStyle); !ok ||

View file

@ -388,7 +388,7 @@
{{end}} {{end}}
{{if and .Issue.PullRequest.HeadRepo (not .Issue.PullRequest.HasMerged) (not .Issue.IsClosed)}} {{if and .Issue.PullRequest.HeadRepo (not .Issue.PullRequest.HasMerged) (not .Issue.IsClosed)}}
{{template "repo/issue/view_content/pull_merge_instruction" dict "PullRequest" .Issue.PullRequest "ShowMergeInstructions" .ShowMergeInstructions}} {{template "repo/issue/view_content/pull_merge_instruction" dict "PullRequest" .Issue.PullRequest "ShowMergeInstructions" .ShowMergeInstructions "AutodetectManualMerge" .AutodetectManualMerge}}
{{end}} {{end}}
</div> </div>
</div> </div>

View file

@ -15,7 +15,13 @@
<div>git checkout {{$localBranch}}</div> <div>git checkout {{$localBranch}}</div>
</div> </div>
{{if .ShowMergeInstructions}} {{if .ShowMergeInstructions}}
<div><h3>{{ctx.Locale.Tr "repo.pulls.cmd_instruction_merge_title"}}</h3>{{ctx.Locale.Tr "repo.pulls.cmd_instruction_merge_desc"}}</div> <div id="merge-instructions">
<h3>{{ctx.Locale.Tr "repo.pulls.cmd_instruction_merge_title"}}</h3>
{{ctx.Locale.Tr "repo.pulls.cmd_instruction_merge_desc"}}
{{if not .AutodetectManualMerge}}
<p>{{ctx.Locale.Tr "repo.pulls.cmd_instruction_merge_warning"}}</p>
{{end}}
</div>
<div class="ui secondary segment"> <div class="ui secondary segment">
<div data-pull-merge-style="merge"> <div data-pull-merge-style="merge">
<div>git checkout {{.PullRequest.BaseBranch}}</div> <div>git checkout {{.PullRequest.BaseBranch}}</div>

View file

@ -7,9 +7,15 @@ import (
"net/http" "net/http"
"testing" "testing"
"code.gitea.io/gitea/models/db"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/tests" "code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestViewPulls(t *testing.T) { func TestViewPulls(t *testing.T) {
@ -23,3 +29,39 @@ func TestViewPulls(t *testing.T) {
placeholder, _ := search.Attr("placeholder") placeholder, _ := search.Attr("placeholder")
assert.Equal(t, "Search pulls...", placeholder) assert.Equal(t, "Search pulls...", placeholder)
} }
func TestPullManuallyMergeWarning(t *testing.T) {
defer tests.PrepareTestEnv(t)()
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
session := loginUser(t, user2.Name)
warningMessage := `Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.`
t.Run("Autodetect disabled", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "GET", "/user2/repo1/pulls/3")
resp := session.MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
mergeInstructions := htmlDoc.Find("#merge-instructions").Text()
assert.Contains(t, mergeInstructions, warningMessage)
})
pullRequestUnit := unittest.AssertExistsAndLoadBean(t, &repo_model.RepoUnit{RepoID: 1, Type: unit.TypePullRequests})
config := pullRequestUnit.PullRequestsConfig()
config.AutodetectManualMerge = true
_, err := db.GetEngine(db.DefaultContext).ID(pullRequestUnit.ID).Cols("config").Update(pullRequestUnit)
require.NoError(t, err)
t.Run("Autodetect enabled", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "GET", "/user2/repo1/pulls/3")
resp := session.MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
mergeInstructions := htmlDoc.Find("#merge-instructions").Text()
assert.NotContains(t, mergeInstructions, warningMessage)
})
}