@@ -154,3 +154,62 @@ def test_merge_request_should_remove_source_branch(
154154
155155 mr = project .mergerequests .get (mr .iid )
156156 assert mr .merged_at is not None # Now is merged
157+
158+
159+ def test_merge_request_large_commit_message (
160+ project : gitlab .v4 .objects .Project , wait_for_sidekiq
161+ ):
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" })
166+
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+ )
177+
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+ )
186+
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"
197+
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"
209+
210+ # Ensure we can NOT get the MR branch
211+ with pytest .raises (gitlab .exceptions .GitlabGetError ):
212+ project .branches .get (source_branch )
213+
214+ mr = project .mergerequests .get (mr .iid )
215+ assert mr .merged_at is not None # Now is merged
0 commit comments