summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2023-02-06 09:43:51 +0100
committerJohn Villalovos <john@sodarock.com>2023-02-06 07:40:10 -0800
commitd8fd1a83b588f4e5e61ca46a28f4935220c5b8c4 (patch)
tree05ec7b0fa45fccea1ce45c5a4230eb29b04decc9
parent33a04e74fc42d720c7be32172133a614f7268ec1 (diff)
downloadgitlab-d8fd1a83b588f4e5e61ca46a28f4935220c5b8c4.tar.gz
test(functional): clarify MR fixture factory name
-rw-r--r--tests/functional/api/test_merge_requests.py70
-rw-r--r--tests/functional/cli/test_cli_repository.py11
-rw-r--r--tests/functional/conftest.py20
3 files changed, 52 insertions, 49 deletions
diff --git a/tests/functional/api/test_merge_requests.py b/tests/functional/api/test_merge_requests.py
index cf975af..7557c6a 100644
--- a/tests/functional/api/test_merge_requests.py
+++ b/tests/functional/api/test_merge_requests.py
@@ -33,12 +33,11 @@ def test_merge_requests(project):
def test_merge_requests_get(project, merge_request):
- new_mr = merge_request(source_branch="test_get")
- mr_iid = new_mr.iid
- mr = project.mergerequests.get(mr_iid)
- assert mr.iid == mr_iid
- mr = project.mergerequests.get(str(mr_iid))
- assert mr.iid == mr_iid
+ mr = project.mergerequests.get(merge_request.iid)
+ assert mr.iid == merge_request.iid
+
+ mr = project.mergerequests.get(str(merge_request.iid))
+ assert mr.iid == merge_request.iid
@pytest.mark.gitlab_premium
@@ -54,10 +53,8 @@ def test_merge_requests_list_approver_ids(project):
def test_merge_requests_get_lazy(project, merge_request):
- new_mr = merge_request(source_branch="test_get")
- mr_iid = new_mr.iid
- mr = project.mergerequests.get(mr_iid, lazy=True)
- assert mr.iid == mr_iid
+ mr = project.mergerequests.get(merge_request.iid, lazy=True)
+ assert mr.iid == merge_request.iid
def test_merge_request_discussion(project):
@@ -181,14 +178,15 @@ def test_merge_request_reset_approvals(gitlab_url, project, wait_for_sidekiq):
assert mr.reset_approvals()
-def test_cancel_merge_when_pipeline_succeeds(project, merge_request, wait_for_sidekiq):
- mr = merge_request(source_branch="test_merge_request_merge", create_pipeline=True)
+def test_cancel_merge_when_pipeline_succeeds(
+ project, merge_request_with_pipeline, wait_for_sidekiq
+):
wait_for_sidekiq(timeout=60)
# Set to merge when the pipeline succeeds, which should never happen
- mr.merge(merge_when_pipeline_succeeds=True)
+ merge_request_with_pipeline.merge(merge_when_pipeline_succeeds=True)
wait_for_sidekiq(timeout=60)
- mr = project.mergerequests.get(mr.iid)
+ mr = project.mergerequests.get(merge_request_with_pipeline.iid)
assert mr.merged_at is None
assert mr.merge_when_pipeline_succeeds is True
cancel = mr.cancel_merge_when_pipeline_succeeds()
@@ -196,11 +194,10 @@ def test_cancel_merge_when_pipeline_succeeds(project, merge_request, wait_for_si
def test_merge_request_merge(project, merge_request, wait_for_sidekiq):
- mr = merge_request(source_branch="test_merge_request_merge")
- mr.merge()
+ merge_request.merge()
wait_for_sidekiq(timeout=60)
- mr = project.mergerequests.get(mr.iid)
+ mr = project.mergerequests.get(merge_request.iid)
assert mr.merged_at is not None
assert mr.merge_when_pipeline_succeeds is False
with pytest.raises(gitlab.GitlabMRClosedError):
@@ -215,28 +212,26 @@ def test_merge_request_should_remove_source_branch(
https://github.com/python-gitlab/python-gitlab/issues/1120 is fixed.
Bug reported that they could not use 'should_remove_source_branch' in
mr.merge() call"""
-
- source_branch = "remove_source_branch"
- mr = merge_request(source_branch=source_branch)
-
- mr.merge(should_remove_source_branch=True)
-
+ merge_request.merge(should_remove_source_branch=True)
wait_for_sidekiq(timeout=60)
# Wait until it is merged
- mr_iid = mr.iid
+ mr = None
+ mr_iid = merge_request.iid
for _ in range(60):
mr = project.mergerequests.get(mr_iid)
if mr.merged_at is not None:
break
time.sleep(0.5)
+
+ assert mr is not None
assert mr.merged_at is not None
time.sleep(0.5)
wait_for_sidekiq(timeout=60)
# Ensure we can NOT get the MR branch
with pytest.raises(gitlab.exceptions.GitlabGetError):
- result = project.branches.get(source_branch)
+ result = project.branches.get(merge_request.source_branch)
# Help to debug in case the expected exception doesn't happen.
import pprint
@@ -253,51 +248,44 @@ def test_merge_request_large_commit_message(
Bug reported that very long 'merge_commit_message' in mr.merge() would
cause an error: 414 Request too large
"""
-
- source_branch = "large_commit_message"
- mr = merge_request(source_branch=source_branch)
-
merge_commit_message = "large_message\r\n" * 1_000
assert len(merge_commit_message) > 10_000
- mr.merge(
+ merge_request.merge(
merge_commit_message=merge_commit_message, should_remove_source_branch=False
)
wait_for_sidekiq(timeout=60)
# Wait until it is merged
- mr_iid = mr.iid
+ mr = None
+ mr_iid = merge_request.iid
for _ in range(60):
mr = project.mergerequests.get(mr_iid)
if mr.merged_at is not None:
break
time.sleep(0.5)
+
+ assert mr is not None
assert mr.merged_at is not None
time.sleep(0.5)
# Ensure we can get the MR branch
- project.branches.get(source_branch)
+ project.branches.get(merge_request.source_branch)
def test_merge_request_merge_ref(merge_request) -> None:
- source_branch = "merge_ref_test"
- mr = merge_request(source_branch=source_branch)
-
- response = mr.merge_ref()
+ response = merge_request.merge_ref()
assert response and "commit_id" in response
def test_merge_request_merge_ref_should_fail(
project, merge_request, wait_for_sidekiq
) -> None:
- source_branch = "merge_ref_test2"
- mr = merge_request(source_branch=source_branch)
-
# Create conflict
project.files.create(
{
- "file_path": f"README.{source_branch}",
+ "file_path": f"README.{merge_request.source_branch}",
"branch": project.default_branch,
"content": "Different initial content",
"commit_message": "Another commit in main branch",
@@ -307,5 +295,5 @@ def test_merge_request_merge_ref_should_fail(
# Check for non-existing merge_ref for MR with conflicts
with pytest.raises(gitlab.exceptions.GitlabGetError):
- response = mr.merge_ref()
+ response = merge_request.merge_ref()
assert "commit_id" not in response
diff --git a/tests/functional/cli/test_cli_repository.py b/tests/functional/cli/test_cli_repository.py
index 8f46777..c8d1b7d 100644
--- a/tests/functional/cli/test_cli_repository.py
+++ b/tests/functional/cli/test_cli_repository.py
@@ -67,17 +67,20 @@ def test_list_merge_request_commits(gitlab_cli, merge_request, project):
def test_commit_merge_requests(gitlab_cli, project, merge_request, wait_for_sidekiq):
"""This tests the `project-commit merge-requests` command and also tests
that we can print the result using the `json` formatter"""
- # create and then merge a merge-request
- mr = merge_request(source_branch="test_commit_merge_requests")
- merge_result = mr.merge(should_remove_source_branch=True)
+ # Merge the MR first
+ merge_result = merge_request.merge(should_remove_source_branch=True)
wait_for_sidekiq(timeout=60)
+
# Wait until it is merged
- mr_iid = mr.iid
+ mr = None
+ mr_iid = merge_request.iid
for _ in range(60):
mr = project.mergerequests.get(mr_iid)
if mr.merged_at is not None:
break
time.sleep(0.5)
+
+ assert mr is not None
assert mr.merged_at is not None
time.sleep(0.5)
wait_for_sidekiq(timeout=60)
diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py
index 6560d91..34b286b 100644
--- a/tests/functional/conftest.py
+++ b/tests/functional/conftest.py
@@ -376,8 +376,8 @@ def project(gl):
@pytest.fixture(scope="function")
-def merge_request(project, wait_for_sidekiq):
- """Fixture used to create a merge_request.
+def make_merge_request(project, wait_for_sidekiq):
+ """Fixture factory used to create a merge_request.
It will create a branch, add a commit to the branch, and then create a
merge request against project.default_branch. The MR will be returned.
@@ -391,7 +391,7 @@ def merge_request(project, wait_for_sidekiq):
to_delete = []
- def _merge_request(*, source_branch: str, create_pipeline: bool = False):
+ def _make_merge_request(*, source_branch: str, create_pipeline: bool = False):
# Wait for processes to be done before we start...
# NOTE(jlvillal): Sometimes the CI would give a "500 Internal Server
# Error". Hoping that waiting until all other processes are done will
@@ -450,12 +450,24 @@ test:
to_delete.extend([mr, mr_branch])
return mr
- yield _merge_request
+ yield _make_merge_request
for object in to_delete:
helpers.safe_delete(object)
+@pytest.fixture(scope="function")
+def merge_request(make_merge_request, project):
+ _id = uuid.uuid4().hex
+ return make_merge_request(source_branch=f"branch-{_id}")
+
+
+@pytest.fixture(scope="function")
+def merge_request_with_pipeline(make_merge_request, project):
+ _id = uuid.uuid4().hex
+ return make_merge_request(source_branch=f"branch-{_id}", create_pipeline=True)
+
+
@pytest.fixture(scope="module")
def project_file(project):
"""File fixture for tests requiring a project with files and branches."""