Skip to content

Commit 2aaf395

Browse files
chore: simplify functional tests
Add a helper function to have less code duplication in the functional testing.
1 parent 3134897 commit 2aaf395

File tree

1 file changed

+57
-59
lines changed

1 file changed

+57
-59
lines changed

tools/functional/api/test_merge_requests.py

+57-59
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,21 @@ def test_merge_request_merge(project):
100100
mr.merge()
101101

102102

103-
def test_merge_request_should_remove_source_branch(
104-
project: gitlab.v4.objects.Project, wait_for_sidekiq
103+
def merge_request_create_helper(
104+
*,
105+
project: gitlab.v4.objects.Project,
106+
source_branch: str,
107+
wait_for_sidekiq,
108+
branch_will_be_deleted: bool,
109+
**kwargs,
105110
):
106-
"""Test to ensure https://github.com/python-gitlab/python-gitlab/issues/1120
107-
is fixed"""
111+
# Wait for processes to be done before we start...
112+
# NOTE(jlvillal): Sometimes the CI would give a "500 Internal Server
113+
# Error". Hoping that waiting until all other processes are done will help
114+
# with that.
115+
result = wait_for_sidekiq(timeout=60)
116+
assert result is True, "sidekiq process should have terminated but did not"
108117

109-
source_branch = "remove_source_branch"
110118
project.branches.create({"branch": source_branch, "ref": "master"})
111119

112120
# NOTE(jlvillal): Must create a commit in the new branch before we can
@@ -143,73 +151,63 @@ def test_merge_request_should_remove_source_branch(
143151
# Ensure we can get the MR branch
144152
project.branches.get(source_branch)
145153

146-
mr.merge(should_remove_source_branch=True)
154+
mr.merge(**kwargs)
147155

148156
result = wait_for_sidekiq(timeout=60)
149157
assert result is True, "sidekiq process should have terminated but did not"
150158

151-
# Ensure we can NOT get the MR branch
152-
with pytest.raises(gitlab.exceptions.GitlabGetError):
153-
project.branches.get(source_branch)
159+
# Wait until it is merged
160+
mr_iid = mr.iid
161+
for _ in range(60):
162+
mr = project.mergerequests.get(mr_iid)
163+
if mr.merged_at is not None:
164+
break
165+
time.sleep(0.5)
166+
assert mr.merged_at is not None
167+
time.sleep(0.5)
154168

155-
mr = project.mergerequests.get(mr.iid)
156-
assert mr.merged_at is not None # Now is merged
169+
if branch_will_be_deleted:
170+
# Ensure we can NOT get the MR branch
171+
with pytest.raises(gitlab.exceptions.GitlabGetError):
172+
project.branches.get(source_branch)
157173

158174

159-
def test_merge_request_large_commit_message(
175+
def test_merge_request_should_remove_source_branch(
160176
project: gitlab.v4.objects.Project, wait_for_sidekiq
161177
):
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"})
178+
"""Test to ensure
179+
https://github.com/python-gitlab/python-gitlab/issues/1120 is fixed.
180+
Bug reported that they could not use 'should_remove_source_branch' in
181+
mr.merge() call"""
166182

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-
)
183+
source_branch = "remove_source_branch"
177184

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+
merge_request_create_helper(
186+
project=project,
187+
source_branch=source_branch,
188+
wait_for_sidekiq=wait_for_sidekiq,
189+
branch_will_be_deleted=True,
190+
should_remove_source_branch=True,
185191
)
186192

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"
197193

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"
194+
def test_merge_request_large_commit_message(
195+
project: gitlab.v4.objects.Project, wait_for_sidekiq
196+
):
197+
"""Test to ensure https://github.com/python-gitlab/python-gitlab/issues/1452
198+
is fixed.
199+
Bug reported that very long 'merge_commit_message' in mr.merge() would
200+
cause an error: 414 Request too large
201+
"""
202+
source_branch = "large_commit_message"
209203

210-
# Ensure we can NOT get the MR branch
211-
with pytest.raises(gitlab.exceptions.GitlabGetError):
212-
project.branches.get(source_branch)
204+
merge_commit_message = "large_message\r\n" * 1_000
205+
assert len(merge_commit_message) > 10_000
213206

214-
mr = project.mergerequests.get(mr.iid)
215-
assert mr.merged_at is not None # Now is merged
207+
merge_request_create_helper(
208+
project=project,
209+
source_branch=source_branch,
210+
wait_for_sidekiq=wait_for_sidekiq,
211+
branch_will_be_deleted=False,
212+
merge_commit_message=merge_commit_message,
213+
)

0 commit comments

Comments
 (0)