Skip to content

Commit df9b5f9

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

File tree

1 file changed

+57
-59
lines changed

1 file changed

+57
-59
lines changed

tools/functional/api/test_merge_requests.py

Lines changed: 57 additions & 59 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy