@@ -165,71 +165,275 @@ def test_strip_comments__spaced():
165
165
assert result .strip () == "feat(scope): message"
166
166
167
167
168
- def test_r_verbose_diff__has_diff ():
169
- regex = re .compile (format .r_verbose_diff (), re .MULTILINE )
170
- input = """# ----------- >8 -----------
171
- # Some comment
172
- # Some comment
173
- diff --git a/file b/file
168
+ def test_r_verbose_commit_ignored__does_not_match_no_verbose ():
169
+ regex = re .compile (format .r_verbose_commit_ignored (), re .DOTALL | re .MULTILINE )
170
+ input = """feat: some commit message
171
+ # Please enter the commit message for your changes. Lines starting
172
+ # with '#' will be ignored, and an empty message aborts the commit.
173
+ #
174
+ # On branch main
175
+ # Your branch is up to date with 'origin/main'.
176
+ #
177
+ # Changes to be committed:
178
+ # modified: README.md
179
+ #
180
+ # Changes not staged for commit:
181
+ # modified: README.md
182
+ #
174
183
"""
175
184
176
- assert regex .match (input )
177
-
178
-
179
- def test_r_verbose_diff__no_diff ():
180
- regex = re .compile (format .r_verbose_diff (), re .MULTILINE )
181
- input = """# ----------- >8 -----------
182
- # Some comment
183
- # Some comment
185
+ assert not regex .search (input )
186
+
187
+
188
+ def test_r_verbose_commit_ignored__matches_single_verbose_ignored ():
189
+ regex = re .compile (format .r_verbose_commit_ignored (), re .DOTALL | re .MULTILINE )
190
+ input = (
191
+ """feat: some commit message
192
+ # Please enter the commit message for your changes. Lines starting
193
+ # with '#' will be ignored, and an empty message aborts the commit.
194
+ #
195
+ # On branch main
196
+ # Your branch is up to date with 'origin/main'.
197
+ #
198
+ # Changes to be committed:
199
+ # modified: README.md
200
+ #
201
+ # Changes not staged for commit:
202
+ # modified: README.md
203
+ #
204
+ # ------------------------ >8 ------------------------
205
+ # Do not modify or remove the line above.
206
+ # Everything below it will be ignored.
207
+ diff --git c/README.md i/README.md
208
+ index ea80a93..fe8a527 100644
209
+ --- c/README.md
210
+ +++ i/README.md
211
+ @@ -20,3 +20,4 @@ Some hunk header
212
+ Context 1
184
213
"""
185
-
186
- assert not regex .match (input )
187
-
188
-
189
- def test_r_verbose_diff__no_extra_comments ():
190
- regex = re .compile (format .r_verbose_diff (), re .MULTILINE )
191
- input = """# ----------- >8 -----------
192
- diff --git a/file b/file
214
+ + " " # This is on purpose to preserve the space from overly eager stripping.
215
+ + """
216
+ Context 2
217
+ +Added line
193
218
"""
219
+ )
194
220
195
- assert not regex .match (input )
196
-
197
-
198
- def test_strip_verbose_diff__has_diff ():
199
- input = """feat(scope): message
200
- # Please enter the commit message for your changes.
221
+ assert regex .search (input )
222
+
223
+
224
+ def test_r_verbose_commit_ignored__matches_double_verbose_ignored ():
225
+ regex = re .compile (format .r_verbose_commit_ignored (), re .DOTALL | re .MULTILINE )
226
+ input = (
227
+ """feat: some commit message
228
+ # Please enter the commit message for your changes. Lines starting
229
+ # with '#' will be ignored, and an empty message aborts the commit.
230
+ #
231
+ # On branch main
232
+ # Your branch is up to date with 'origin/main'.
233
+ #
234
+ # Changes to be committed:
235
+ # modified: README.md
236
+ #
237
+ # Changes not staged for commit:
238
+ # modified: README.md
239
+ #
240
+ # ------------------------ >8 ------------------------
241
+ # Do not modify or remove the line above.
242
+ # Everything below it will be ignored.
243
+ #
244
+ # Changes to be committed:
245
+ diff --git c/README.md i/README.md
246
+ index ea80a93..fe8a527 100644
247
+ --- c/README.md
248
+ +++ i/README.md
249
+ @@ -20,3 +20,4 @@ Some staged hunk header
250
+ Staged Context 1
251
+ """
252
+ + " " # This is on purpose to preserve the space from overly eager stripping.
253
+ + """
254
+ Staged Context 2
255
+ +Staged added line
256
+ # --------------------------------------------------
257
+ # Changes not staged for commit:
258
+ diff --git i/README.md w/README.md
259
+ index fe8a527..1c00c14 100644
260
+ --- i/README.md
261
+ +++ w/README.md
262
+ @@ -10,6 +10,7 @@ Some unstaged hunk header
263
+ Context 1
264
+ Context 2
265
+ Context 3
266
+ -Removed line
267
+ +Added line
268
+ """
269
+ + " " # This is on purpose to preserve the space from overly eager stripping.
270
+ + """
271
+ Context 4
272
+ """
273
+ + " " # This is on purpose to preserve the space from overly eager stripping.
274
+ + """
275
+ """
276
+ )
201
277
202
- # These are comments usually added by editors, f.ex. with export EDITOR=vim
203
- # ----------- >8 -----------
204
- # Some comment
205
- # Some comment
206
- diff --git a/file b/file
278
+ assert regex .search (input )
279
+
280
+
281
+ def test_strip_verbose_commit_ignored__does_not_strip_no_verbose ():
282
+ input = """feat: some commit message
283
+ # Please enter the commit message for your changes. Lines starting
284
+ # with '#' will be ignored, and an empty message aborts the commit.
285
+ #
286
+ # On branch main
287
+ # Your branch is up to date with 'origin/main'.
288
+ #
289
+ # Changes to be committed:
290
+ # modified: README.md
291
+ #
292
+ # Changes not staged for commit:
293
+ # modified: README.md
294
+ #
207
295
"""
208
296
209
- result = format .strip_verbose_diff (input )
210
- assert result .count ("\n " ) == 4
211
- assert (
212
- result
213
- == """feat(scope): message
214
- # Please enter the commit message for your changes.
297
+ expected = """feat: some commit message
298
+ # Please enter the commit message for your changes. Lines starting
299
+ # with '#' will be ignored, and an empty message aborts the commit.
300
+ #
301
+ # On branch main
302
+ # Your branch is up to date with 'origin/main'.
303
+ #
304
+ # Changes to be committed:
305
+ # modified: README.md
306
+ #
307
+ # Changes not staged for commit:
308
+ # modified: README.md
309
+ #
310
+ """
215
311
216
- # These are comments usually added by editors, f.ex. with export EDITOR=vim
312
+ result = format .strip_verbose_commit_ignored (input )
313
+ assert result == expected
314
+
315
+
316
+ def test_strip_verbose_commit_ignored__strips_single_verbose_ignored ():
317
+ input = (
318
+ """feat: some commit message
319
+ # Please enter the commit message for your changes. Lines starting
320
+ # with '#' will be ignored, and an empty message aborts the commit.
321
+ #
322
+ # On branch main
323
+ # Your branch is up to date with 'origin/main'.
324
+ #
325
+ # Changes to be committed:
326
+ # modified: README.md
327
+ #
328
+ # Changes not staged for commit:
329
+ # modified: README.md
330
+ #
331
+ # ------------------------ >8 ------------------------
332
+ # Do not modify or remove the line above.
333
+ # Everything below it will be ignored.
334
+ diff --git c/README.md i/README.md
335
+ index ea80a93..fe8a527 100644
336
+ --- c/README.md
337
+ +++ i/README.md
338
+ @@ -20,3 +20,4 @@ Some hunk header
339
+ Context 1
340
+ """
341
+ + " " # This is on purpose to preserve the space from overly eager stripping.
342
+ + """
343
+ Context 2
344
+ +Added line
217
345
"""
218
346
)
219
347
348
+ expected = """feat: some commit message
349
+ # Please enter the commit message for your changes. Lines starting
350
+ # with '#' will be ignored, and an empty message aborts the commit.
351
+ #
352
+ # On branch main
353
+ # Your branch is up to date with 'origin/main'.
354
+ #
355
+ # Changes to be committed:
356
+ # modified: README.md
357
+ #
358
+ # Changes not staged for commit:
359
+ # modified: README.md
360
+ #
361
+ """
220
362
221
- def test_strip_verbose_diff__no_diff ():
222
- input = """feat(scope): message
223
- # Please enter the commit message for your changes.
363
+ result = format .strip_verbose_commit_ignored (input )
364
+ assert result == expected
365
+
366
+
367
+ def test_strip_verbose_commit_ignored__strips_double_verbose_ignored ():
368
+ input = (
369
+ """feat: some commit message
370
+ # Please enter the commit message for your changes. Lines starting
371
+ # with '#' will be ignored, and an empty message aborts the commit.
372
+ #
373
+ # On branch main
374
+ # Your branch is up to date with 'origin/main'.
375
+ #
376
+ # Changes to be committed:
377
+ # modified: README.md
378
+ #
379
+ # Changes not staged for commit:
380
+ # modified: README.md
381
+ #
382
+ # ------------------------ >8 ------------------------
383
+ # Do not modify or remove the line above.
384
+ # Everything below it will be ignored.
385
+ #
386
+ # Changes to be committed:
387
+ diff --git c/README.md i/README.md
388
+ index ea80a93..fe8a527 100644
389
+ --- c/README.md
390
+ +++ i/README.md
391
+ @@ -20,3 +20,4 @@ Some staged hunk header
392
+ Staged Context 1
393
+ """
394
+ + " " # This is on purpose to preserve the space from overly eager stripping.
395
+ + """
396
+ Staged Context 2
397
+ +Staged added line
398
+ # --------------------------------------------------
399
+ # Changes not staged for commit:
400
+ diff --git i/README.md w/README.md
401
+ index fe8a527..1c00c14 100644
402
+ --- i/README.md
403
+ +++ w/README.md
404
+ @@ -10,6 +10,7 @@ Some unstaged hunk header
405
+ Context 1
406
+ Context 2
407
+ Context 3
408
+ -Removed line
409
+ +Added line
410
+ """
411
+ + " " # This is on purpose to preserve the space from overly eager stripping.
412
+ + """
413
+ Context 4
414
+ """
415
+ + " " # This is on purpose to preserve the space from overly eager stripping.
416
+ + """
417
+ """
418
+ )
224
419
225
- # These are comments usually added by editors, f.ex. with export EDITOR=vim
226
- # ----------- >8 -----------
227
- # Some comment
228
- # Some comment
420
+ expected = """feat: some commit message
421
+ # Please enter the commit message for your changes. Lines starting
422
+ # with '#' will be ignored, and an empty message aborts the commit.
423
+ #
424
+ # On branch main
425
+ # Your branch is up to date with 'origin/main'.
426
+ #
427
+ # Changes to be committed:
428
+ # modified: README.md
429
+ #
430
+ # Changes not staged for commit:
431
+ # modified: README.md
432
+ #
229
433
"""
230
434
231
- result = format .strip_verbose_diff (input )
232
- assert result == input
435
+ result = format .strip_verbose_commit_ignored (input )
436
+ assert result == expected
233
437
234
438
235
439
@pytest .mark .parametrize ("type" , format .DEFAULT_TYPES )
0 commit comments