diff --git a/routers/web/repo/pull_merge_form.go b/routers/web/repo/pull_merge_form.go index fe12aa6105b..6e57fc04dd5 100644 --- a/routers/web/repo/pull_merge_form.go +++ b/routers/web/repo/pull_merge_form.go @@ -112,7 +112,7 @@ func (prInfo *pullRequestViewInfo) prepareMergeBoxFormProps(ctx *context.Context // if this pr can be merged now, then hide the auto merge generalHideAutoMerge := prInfo.MergeBoxData.canMergeNow && allOverridableChecksOk var mergeStyles []any - if pull.IsStatusMergeable() { + if pull.IsStatusMergeable() || pull.IsEmpty() { mergeStyles = []any{ map[string]any{ "name": "merge", @@ -176,7 +176,7 @@ func (prInfo *pullRequestViewInfo) prepareMergeBoxFormProps(ctx *context.Context if len(mergeStyles) > 0 { mergeFormProps["mergeStyles"] = mergeStyles prInfo.MergeBoxData.MergeFormProps = mergeFormProps - } else if pull.IsStatusMergeable() { + } else if pull.IsStatusMergeable() || pull.IsEmpty() { // no merge style was set in repo setting prInfo.MergeBoxData.infoCommitBlockers.AddInfoItem( svg.RenderHTML("octicon-x", 16, "tw-text-red"), diff --git a/tests/integration/pull_status_test.go b/tests/integration/pull_status_test.go index b13eb7f2c23..7828b6b31bd 100644 --- a/tests/integration/pull_status_test.go +++ b/tests/integration/pull_status_test.go @@ -17,12 +17,14 @@ import ( repo_model "gitea.dev/models/repo" "gitea.dev/models/unittest" "gitea.dev/modules/commitstatus" + "gitea.dev/modules/json" "gitea.dev/modules/setting" api "gitea.dev/modules/structs" "gitea.dev/modules/test" "gitea.dev/services/pull" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPullCreate_CommitStatus(t *testing.T) { @@ -134,6 +136,23 @@ func TestPullCreate_EmptyChangesWithDifferentCommits(t *testing.T) { text := strings.TrimSpace(doc.doc.Find(".merge-section").Text()) assert.Contains(t, text, "The changes on this branch are already on the target branch. This will be an empty commit.") assert.Contains(t, text, "This pull request can be merged automatically.") + mergeFormProps, exists := doc.doc.Find("#pull-request-merge-form").Attr("data-merge-form-props") + require.True(t, exists) + var mergeForm struct { + EmptyCommit bool `json:"emptyCommit"` + CanMergeNow bool `json:"canMergeNow"` + MergeStyles []struct { + Name string `json:"name"` + Allowed bool `json:"allowed"` + } `json:"mergeStyles"` + } + require.NoError(t, json.Unmarshal([]byte(mergeFormProps), &mergeForm)) + assert.True(t, mergeForm.EmptyCommit) + assert.True(t, mergeForm.CanMergeNow) + assert.Contains(t, mergeForm.MergeStyles, struct { + Name string `json:"name"` + Allowed bool `json:"allowed"` + }{Name: "merge", Allowed: true}) }) }