@@ -163,3 +163,35 @@ def test_merge_request_large_commit_message(
163163
164164 # Ensure we can get the MR branch
165165 project .branches .get (source_branch )
166+
167+
168+ def test_merge_request_merge_ref (merge_request ) -> None :
169+ source_branch = "merge_ref_test"
170+ mr = merge_request (source_branch = source_branch )
171+
172+ response = mr .merge_ref ()
173+ assert response and "commit_id" in response
174+
175+
176+ def test_merge_request_merge_ref_should_fail (
177+ project , merge_request , wait_for_sidekiq
178+ ) -> None :
179+ source_branch = "merge_ref_test2"
180+ mr = merge_request (source_branch = source_branch )
181+
182+ # Create conflict
183+ project .files .create (
184+ {
185+ "file_path" : f"README.{ source_branch } " ,
186+ "branch" : project .default_branch ,
187+ "content" : "Different initial content" ,
188+ "commit_message" : "Another commit in main branch" ,
189+ }
190+ )
191+ result = wait_for_sidekiq (timeout = 60 )
192+ assert result is True , "sidekiq process should have terminated but did not"
193+
194+ # Check for non-existing merge_ref for MR with conflicts
195+ with pytest .raises (gitlab .exceptions .GitlabGetError ):
196+ response = mr .merge_ref ()
197+ assert "commit_id" not in response
0 commit comments