summaryrefslogtreecommitdiff
path: root/tools/functional/api
diff options
context:
space:
mode:
Diffstat (limited to 'tools/functional/api')
-rw-r--r--tools/functional/api/test_merge_requests.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/tools/functional/api/test_merge_requests.py b/tools/functional/api/test_merge_requests.py
index c5de5eb..e768234 100644
--- a/tools/functional/api/test_merge_requests.py
+++ b/tools/functional/api/test_merge_requests.py
@@ -1,6 +1,9 @@
+import time
+
import pytest
import gitlab
+import gitlab.v4.objects
def test_merge_requests(project):
@@ -95,3 +98,68 @@ def test_merge_request_merge(project):
with pytest.raises(gitlab.GitlabMRClosedError):
# Two merge attempts should raise GitlabMRClosedError
mr.merge()
+
+
+def test_merge_request_should_remove_source_branch(
+ project, merge_request, wait_for_sidekiq
+) -> None:
+ """Test to ensure
+ 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)
+
+ result = wait_for_sidekiq(timeout=60)
+ assert result is True, "sidekiq process should have terminated but did not"
+
+ # Wait until it is merged
+ mr_iid = mr.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.merged_at is not None
+ time.sleep(0.5)
+
+ # Ensure we can NOT get the MR branch
+ with pytest.raises(gitlab.exceptions.GitlabGetError):
+ project.branches.get(source_branch)
+
+
+def test_merge_request_large_commit_message(
+ project, merge_request, wait_for_sidekiq
+) -> None:
+ """Test to ensure https://github.com/python-gitlab/python-gitlab/issues/1452
+ is fixed.
+ 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_commit_message=merge_commit_message)
+
+ result = wait_for_sidekiq(timeout=60)
+ assert result is True, "sidekiq process should have terminated but did not"
+
+ # Wait until it is merged
+ mr_iid = mr.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.merged_at is not None
+ time.sleep(0.5)
+
+ # Ensure we can get the MR branch
+ project.branches.get(source_branch)