Commit 9119eb0e authored by Heidi Berry's avatar Heidi Berry Committed by Patrick Rice
Browse files

feat(merge-requests): add auto_merge, deprecate old field, for merging a request

Changelog: Improvements
parent 6381a343
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ func createMergeRequestAndSetAutoMerge() {
	// Set auto-merge to created Merge Request
	// c.f. https://docs.gitlab.com/user/project/merge_requests/auto_merge/
	_, _, err = git.MergeRequests.AcceptMergeRequest(
		projectName, mr.IID, &gitlab.AcceptMergeRequestOptions{MergeWhenPipelineSucceeds: gitlab.Ptr(true)},
		projectName, mr.IID, &gitlab.AcceptMergeRequestOptions{AutoMerge: gitlab.Ptr(true)},

		// client-go provides retries on rate limit (429) and server (>= 500) errors by default.
		//
+9 −6
Original line number Diff line number Diff line
@@ -930,12 +930,15 @@ func (s *MergeRequestsService) DeleteMergeRequest(pid any, mergeRequest int, opt
// GitLab API docs:
// https://docs.gitlab.com/api/merge_requests/#merge-a-merge-request
type AcceptMergeRequestOptions struct {
	AutoMerge                *bool   `url:"auto_merge,omitempty" json:"auto_merge,omitempty"`
	MergeCommitMessage       *string `url:"merge_commit_message,omitempty" json:"merge_commit_message,omitempty"`
	SquashCommitMessage      *string `url:"squash_commit_message,omitempty" json:"squash_commit_message,omitempty"`
	Squash                   *bool   `url:"squash,omitempty" json:"squash,omitempty"`
	ShouldRemoveSourceBranch *bool   `url:"should_remove_source_branch,omitempty" json:"should_remove_source_branch,omitempty"`
	MergeWhenPipelineSucceeds *bool   `url:"merge_when_pipeline_succeeds,omitempty" json:"merge_when_pipeline_succeeds,omitempty"`
	SHA                      *string `url:"sha,omitempty" json:"sha,omitempty"`

	// Deprecated: use AutoMerge instead
	MergeWhenPipelineSucceeds *bool `url:"merge_when_pipeline_succeeds,omitempty" json:"merge_when_pipeline_succeeds,omitempty"`
}

// AcceptMergeRequest merges changes submitted with MR using this API. If merge
+35 −0
Original line number Diff line number Diff line
@@ -646,3 +646,38 @@ func TestDeleteMergeRequestDependency(t *testing.T) {
		}
	}
}

func TestAcceptMergeRequest(t *testing.T) {
	t.Parallel()
	mux, client := setup(t)
	const project = "12345"
	const mergeRequest = 1

	path := fmt.Sprintf("/%sprojects/%s/merge_requests/%d/merge", apiVersionPath, project, mergeRequest)
	mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
		testMethod(t, r, http.MethodPut)
		fmt.Fprint(w, `{"id":1,"iid":1,"state":"merged","title":"Test MR","merge_commit_sha":"abc123"}`)
	})

	opts := &AcceptMergeRequestOptions{
		MergeCommitMessage: Ptr("Custom merge message"),
		Squash:             Ptr(true),
		AutoMerge:          Ptr(true),
	}

	mr, resp, err := client.MergeRequests.AcceptMergeRequest(project, mergeRequest, opts)
	assert.NoError(t, err)
	assert.NotNil(t, resp)

	want := &MergeRequest{
		BasicMergeRequest: BasicMergeRequest{
			ID:             1,
			IID:            1,
			State:          "merged",
			Title:          "Test MR",
			MergeCommitSHA: "abc123",
		},
	}

	assert.Equal(t, want, mr)
}