Skip to content

Commit d8fd1a8

Browse files
nejchJohnVillalovos
authored andcommitted
test(functional): clarify MR fixture factory name
1 parent 33a04e7 commit d8fd1a8

File tree

3 files changed

+52
-49
lines changed

3 files changed

+52
-49
lines changed

tests/functional/api/test_merge_requests.py

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,11 @@ def test_merge_requests(project):
3333

3434

3535
def test_merge_requests_get(project, merge_request):
36-
new_mr = merge_request(source_branch="test_get")
37-
mr_iid = new_mr.iid
38-
mr = project.mergerequests.get(mr_iid)
39-
assert mr.iid == mr_iid
40-
mr = project.mergerequests.get(str(mr_iid))
41-
assert mr.iid == mr_iid
36+
mr = project.mergerequests.get(merge_request.iid)
37+
assert mr.iid == merge_request.iid
38+
39+
mr = project.mergerequests.get(str(merge_request.iid))
40+
assert mr.iid == merge_request.iid
4241

4342

4443
@pytest.mark.gitlab_premium
@@ -54,10 +53,8 @@ def test_merge_requests_list_approver_ids(project):
5453

5554

5655
def test_merge_requests_get_lazy(project, merge_request):
57-
new_mr = merge_request(source_branch="test_get")
58-
mr_iid = new_mr.iid
59-
mr = project.mergerequests.get(mr_iid, lazy=True)
60-
assert mr.iid == mr_iid
56+
mr = project.mergerequests.get(merge_request.iid, lazy=True)
57+
assert mr.iid == merge_request.iid
6158

6259

6360
def test_merge_request_discussion(project):
@@ -181,26 +178,26 @@ def test_merge_request_reset_approvals(gitlab_url, project, wait_for_sidekiq):
181178
assert mr.reset_approvals()
182179

183180

184-
def test_cancel_merge_when_pipeline_succeeds(project, merge_request, wait_for_sidekiq):
185-
mr = merge_request(source_branch="test_merge_request_merge", create_pipeline=True)
181+
def test_cancel_merge_when_pipeline_succeeds(
182+
project, merge_request_with_pipeline, wait_for_sidekiq
183+
):
186184
wait_for_sidekiq(timeout=60)
187185
# Set to merge when the pipeline succeeds, which should never happen
188-
mr.merge(merge_when_pipeline_succeeds=True)
186+
merge_request_with_pipeline.merge(merge_when_pipeline_succeeds=True)
189187
wait_for_sidekiq(timeout=60)
190188

191-
mr = project.mergerequests.get(mr.iid)
189+
mr = project.mergerequests.get(merge_request_with_pipeline.iid)
192190
assert mr.merged_at is None
193191
assert mr.merge_when_pipeline_succeeds is True
194192
cancel = mr.cancel_merge_when_pipeline_succeeds()
195193
assert cancel == {"status": "success"}
196194

197195

198196
def test_merge_request_merge(project, merge_request, wait_for_sidekiq):
199-
mr = merge_request(source_branch="test_merge_request_merge")
200-
mr.merge()
197+
merge_request.merge()
201198
wait_for_sidekiq(timeout=60)
202199

203-
mr = project.mergerequests.get(mr.iid)
200+
mr = project.mergerequests.get(merge_request.iid)
204201
assert mr.merged_at is not None
205202
assert mr.merge_when_pipeline_succeeds is False
206203
with pytest.raises(gitlab.GitlabMRClosedError):
@@ -215,28 +212,26 @@ def test_merge_request_should_remove_source_branch(
215212
https://github.com/python-gitlab/python-gitlab/issues/1120 is fixed.
216213
Bug reported that they could not use 'should_remove_source_branch' in
217214
mr.merge() call"""
218-
219-
source_branch = "remove_source_branch"
220-
mr = merge_request(source_branch=source_branch)
221-
222-
mr.merge(should_remove_source_branch=True)
223-
215+
merge_request.merge(should_remove_source_branch=True)
224216
wait_for_sidekiq(timeout=60)
225217

226218
# Wait until it is merged
227-
mr_iid = mr.iid
219+
mr = None
220+
mr_iid = merge_request.iid
228221
for _ in range(60):
229222
mr = project.mergerequests.get(mr_iid)
230223
if mr.merged_at is not None:
231224
break
232225
time.sleep(0.5)
226+
227+
assert mr is not None
233228
assert mr.merged_at is not None
234229
time.sleep(0.5)
235230
wait_for_sidekiq(timeout=60)
236231

237232
# Ensure we can NOT get the MR branch
238233
with pytest.raises(gitlab.exceptions.GitlabGetError):
239-
result = project.branches.get(source_branch)
234+
result = project.branches.get(merge_request.source_branch)
240235
# Help to debug in case the expected exception doesn't happen.
241236
import pprint
242237

@@ -253,51 +248,44 @@ def test_merge_request_large_commit_message(
253248
Bug reported that very long 'merge_commit_message' in mr.merge() would
254249
cause an error: 414 Request too large
255250
"""
256-
257-
source_branch = "large_commit_message"
258-
mr = merge_request(source_branch=source_branch)
259-
260251
merge_commit_message = "large_message\r\n" * 1_000
261252
assert len(merge_commit_message) > 10_000
262253

263-
mr.merge(
254+
merge_request.merge(
264255
merge_commit_message=merge_commit_message, should_remove_source_branch=False
265256
)
266257

267258
wait_for_sidekiq(timeout=60)
268259

269260
# Wait until it is merged
270-
mr_iid = mr.iid
261+
mr = None
262+
mr_iid = merge_request.iid
271263
for _ in range(60):
272264
mr = project.mergerequests.get(mr_iid)
273265
if mr.merged_at is not None:
274266
break
275267
time.sleep(0.5)
268+
269+
assert mr is not None
276270
assert mr.merged_at is not None
277271
time.sleep(0.5)
278272

279273
# Ensure we can get the MR branch
280-
project.branches.get(source_branch)
274+
project.branches.get(merge_request.source_branch)
281275

282276

283277
def test_merge_request_merge_ref(merge_request) -> None:
284-
source_branch = "merge_ref_test"
285-
mr = merge_request(source_branch=source_branch)
286-
287-
response = mr.merge_ref()
278+
response = merge_request.merge_ref()
288279
assert response and "commit_id" in response
289280

290281

291282
def test_merge_request_merge_ref_should_fail(
292283
project, merge_request, wait_for_sidekiq
293284
) -> None:
294-
source_branch = "merge_ref_test2"
295-
mr = merge_request(source_branch=source_branch)
296-
297285
# Create conflict
298286
project.files.create(
299287
{
300-
"file_path": f"README.{source_branch}",
288+
"file_path": f"README.{merge_request.source_branch}",
301289
"branch": project.default_branch,
302290
"content": "Different initial content",
303291
"commit_message": "Another commit in main branch",
@@ -307,5 +295,5 @@ def test_merge_request_merge_ref_should_fail(
307295

308296
# Check for non-existing merge_ref for MR with conflicts
309297
with pytest.raises(gitlab.exceptions.GitlabGetError):
310-
response = mr.merge_ref()
298+
response = merge_request.merge_ref()
311299
assert "commit_id" not in response

tests/functional/cli/test_cli_repository.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,20 @@ def test_list_merge_request_commits(gitlab_cli, merge_request, project):
6767
def test_commit_merge_requests(gitlab_cli, project, merge_request, wait_for_sidekiq):
6868
"""This tests the `project-commit merge-requests` command and also tests
6969
that we can print the result using the `json` formatter"""
70-
# create and then merge a merge-request
71-
mr = merge_request(source_branch="test_commit_merge_requests")
72-
merge_result = mr.merge(should_remove_source_branch=True)
70+
# Merge the MR first
71+
merge_result = merge_request.merge(should_remove_source_branch=True)
7372
wait_for_sidekiq(timeout=60)
73+
7474
# Wait until it is merged
75-
mr_iid = mr.iid
75+
mr = None
76+
mr_iid = merge_request.iid
7677
for _ in range(60):
7778
mr = project.mergerequests.get(mr_iid)
7879
if mr.merged_at is not None:
7980
break
8081
time.sleep(0.5)
82+
83+
assert mr is not None
8184
assert mr.merged_at is not None
8285
time.sleep(0.5)
8386
wait_for_sidekiq(timeout=60)

tests/functional/conftest.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,8 +376,8 @@ def project(gl):
376376

377377

378378
@pytest.fixture(scope="function")
379-
def merge_request(project, wait_for_sidekiq):
380-
"""Fixture used to create a merge_request.
379+
def make_merge_request(project, wait_for_sidekiq):
380+
"""Fixture factory used to create a merge_request.
381381
382382
It will create a branch, add a commit to the branch, and then create a
383383
merge request against project.default_branch. The MR will be returned.
@@ -391,7 +391,7 @@ def merge_request(project, wait_for_sidekiq):
391391

392392
to_delete = []
393393

394-
def _merge_request(*, source_branch: str, create_pipeline: bool = False):
394+
def _make_merge_request(*, source_branch: str, create_pipeline: bool = False):
395395
# Wait for processes to be done before we start...
396396
# NOTE(jlvillal): Sometimes the CI would give a "500 Internal Server
397397
# Error". Hoping that waiting until all other processes are done will
@@ -450,12 +450,24 @@ def _merge_request(*, source_branch: str, create_pipeline: bool = False):
450450
to_delete.extend([mr, mr_branch])
451451
return mr
452452

453-
yield _merge_request
453+
yield _make_merge_request
454454

455455
for object in to_delete:
456456
helpers.safe_delete(object)
457457

458458

459+
@pytest.fixture(scope="function")
460+
def merge_request(make_merge_request, project):
461+
_id = uuid.uuid4().hex
462+
return make_merge_request(source_branch=f"branch-{_id}")
463+
464+
465+
@pytest.fixture(scope="function")
466+
def merge_request_with_pipeline(make_merge_request, project):
467+
_id = uuid.uuid4().hex
468+
return make_merge_request(source_branch=f"branch-{_id}", create_pipeline=True)
469+
470+
459471
@pytest.fixture(scope="module")
460472
def project_file(project):
461473
"""File fixture for tests requiring a project with files and branches."""

0 commit comments

Comments
 (0)