fix(pr_merge): send Gitea's merge_title_field (gitea-mcp#77) (#82)
Co-authored-by: Mathias <mthbqv@gmail.com>
This commit was merged in pull request #82.
This commit is contained in:
@@ -166,6 +166,22 @@ func TestPRMergeDefaultsToMergeStyleAndPassesStyleThrough(t *testing.T) {
|
||||
assert.Equal(t, "squash", payload["Do"])
|
||||
}
|
||||
|
||||
// Gitea 1.27's MergePullRequestOption has merge_title_field and merge_message_field. A field it does not know is
|
||||
// ignored without an error, so a custom merge title silently did nothing while this tool sent merge_message_title
|
||||
// (gitea-mcp#77). The tool's own argument keeps its name; the wire field must be Gitea's.
|
||||
func TestPRMerge_ACustomMergeTitleTravelsAsGiteasMergeTitleField(t *testing.T) {
|
||||
f := newPRMergeFake(t, prMergeFakeOpts{})
|
||||
|
||||
_, err := callMerge(t, f, `{"owner":"owner","repo":"repo","number":7,"issue":42,"merge_message_title":"feat: one line","merge_message_field":"body text"}`)
|
||||
|
||||
require.NoError(t, err)
|
||||
var payload map[string]any
|
||||
require.NoError(t, json.Unmarshal(f.mergeBody, &payload))
|
||||
assert.Equal(t, "feat: one line", payload["merge_title_field"])
|
||||
assert.Equal(t, "body text", payload["merge_message_field"])
|
||||
assert.NotContains(t, payload, "merge_message_title", "not a Gitea field: it is ignored without an error")
|
||||
}
|
||||
|
||||
// TOCTOU: the gate read CI for ONE head commit. The merge must be bound to that commit, so a push to the PR branch
|
||||
// after the check makes Gitea refuse the merge instead of merging code nobody checked.
|
||||
func TestPRMerge_TheMergeIsBoundToTheCommitTheGateChecked(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user