Skip to content

Commit cd5993c

Browse files
chore: add functional test mr.merge() with long commit message
Functional test to show that #1452 is fixed. Added a functional test to ensure that we can use large commit message (10_000+ bytes) in mr.merge() Related to: #1452
1 parent 7d66115 commit cd5993c

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

tools/functional/api/test_merge_requests.py

+59
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,62 @@ def test_merge_request_should_remove_source_branch(
154154

155155
mr = project.mergerequests.get(mr.iid)
156156
assert mr.merged_at is not None # Now is merged
157+
158+
159+
def test_merge_request_large_commit_message(
160+
project: gitlab.v4.objects.Project, wait_for_sidekiq
161+
):
162+
"""Test to ensure https://github.com/python-gitlab/python-gitlab/issues/1452
163+
is fixed"""
164+
source_branch = "large_commit_message"
165+
project.branches.create({"branch": source_branch, "ref": "master"})
166+
167+
# NOTE(jlvillal): Must create a commit in the new branch before we can
168+
# create an MR that will work.
169+
project.files.create(
170+
{
171+
"file_path": f"README.{source_branch}",
172+
"branch": source_branch,
173+
"content": "Initial content",
174+
"commit_message": "New commit in new branch",
175+
}
176+
)
177+
178+
mr = project.mergerequests.create(
179+
{
180+
"source_branch": source_branch,
181+
"target_branch": "master",
182+
"title": "Large Commit Message",
183+
"remove_source_branch": True,
184+
}
185+
)
186+
187+
result = wait_for_sidekiq(timeout=60)
188+
assert result is True, "sidekiq process should have terminated but did not"
189+
190+
mr_iid = mr.iid
191+
for _ in range(60):
192+
mr = project.mergerequests.get(mr_iid)
193+
if mr.merge_status != "checking":
194+
break
195+
time.sleep(0.5)
196+
assert mr.merge_status != "checking"
197+
198+
# Ensure we can get the MR branch
199+
project.branches.get(source_branch)
200+
201+
commit_message = "large_message\r\n" * 1_000
202+
assert len(commit_message) > 10_000
203+
assert mr.merged_at is None # Not yet merged
204+
205+
mr.merge(merge_commit_message=commit_message, should_remove_source_branch=True)
206+
207+
result = wait_for_sidekiq(timeout=60)
208+
assert result is True, "sidekiq process should have terminated but did not"
209+
210+
# Ensure we can NOT get the MR branch
211+
with pytest.raises(gitlab.exceptions.GitlabGetError):
212+
project.branches.get(source_branch)
213+
214+
mr = project.mergerequests.get(mr.iid)
215+
assert mr.merged_at is not None # Now is merged

0 commit comments

Comments
 (0)