@@ -154,3 +154,62 @@ def test_merge_request_should_remove_source_branch(
154
154
155
155
mr = project .mergerequests .get (mr .iid )
156
156
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