@@ -4,6 +4,15 @@ test_description='git commit porcelain-ish'
4
4
5
5
. ./test-lib.sh
6
6
7
+ commit_msg_is () {
8
+ expect=commit_msg_is.expect
9
+ actual=commit_msg_is.actual
10
+
11
+ printf " %s" " $( git log --pretty=format:%s%b -1) " > $actual &&
12
+ printf " %s" " $1 " > $expect &&
13
+ test_i18ncmp $expect $actual
14
+ }
15
+
7
16
# Arguments: [<prefix] [<commit message>] [<commit options>]
8
17
check_summary_oneline () {
9
18
test_tick &&
@@ -168,7 +177,7 @@ test_expect_success 'verbose respects diff config' '
168
177
git config --unset color.diff
169
178
'
170
179
171
- test_expect_success ' cleanup commit messages (verbatim,-t)' '
180
+ test_expect_success ' cleanup commit messages (verbatim option ,-t)' '
172
181
173
182
echo >>negative &&
174
183
{ echo;echo "# text";echo; } >expect &&
@@ -178,7 +187,7 @@ test_expect_success 'cleanup commit messages (verbatim,-t)' '
178
187
179
188
'
180
189
181
- test_expect_success ' cleanup commit messages (verbatim,-F)' '
190
+ test_expect_success ' cleanup commit messages (verbatim option ,-F)' '
182
191
183
192
echo >>negative &&
184
193
git commit --cleanup=verbatim -F expect -a &&
@@ -187,7 +196,7 @@ test_expect_success 'cleanup commit messages (verbatim,-F)' '
187
196
188
197
'
189
198
190
- test_expect_success ' cleanup commit messages (verbatim,-m)' '
199
+ test_expect_success ' cleanup commit messages (verbatim option ,-m)' '
191
200
192
201
echo >>negative &&
193
202
git commit --cleanup=verbatim -m "$(cat expect)" -a &&
@@ -196,7 +205,7 @@ test_expect_success 'cleanup commit messages (verbatim,-m)' '
196
205
197
206
'
198
207
199
- test_expect_success ' cleanup commit messages (whitespace,-F)' '
208
+ test_expect_success ' cleanup commit messages (whitespace option ,-F)' '
200
209
201
210
echo >>negative &&
202
211
{ echo;echo "# text";echo; } >text &&
@@ -207,7 +216,7 @@ test_expect_success 'cleanup commit messages (whitespace,-F)' '
207
216
208
217
'
209
218
210
- test_expect_success ' cleanup commit messages (strip,-F)' '
219
+ test_expect_success ' cleanup commit messages (strip option ,-F)' '
211
220
212
221
echo >>negative &&
213
222
{ echo;echo "# text";echo sample;echo; } >text &&
@@ -218,7 +227,7 @@ test_expect_success 'cleanup commit messages (strip,-F)' '
218
227
219
228
'
220
229
221
- test_expect_success ' cleanup commit messages (strip,-F,-e)' '
230
+ test_expect_success ' cleanup commit messages (strip option ,-F,-e)' '
222
231
223
232
echo >>negative &&
224
233
{ echo;echo sample;echo; } >text &&
@@ -231,10 +240,71 @@ echo "sample
231
240
# Please enter the commit message for your changes. Lines starting
232
241
# with '#' will be ignored, and an empty message aborts the commit." > expect
233
242
234
- test_expect_success ' cleanup commit messages (strip,-F,-e): output' '
243
+ test_expect_success ' cleanup commit messages (strip option ,-F,-e): output' '
235
244
test_i18ncmp expect actual
236
245
'
237
246
247
+ test_expect_success ' cleanup commit message (fail on invalid cleanup mode option)' '
248
+ test_must_fail git commit --cleanup=non-existent
249
+ '
250
+
251
+ test_expect_success ' cleanup commit message (fail on invalid cleanup mode configuration)' '
252
+ test_must_fail git -c commit.cleanup=non-existent commit
253
+ '
254
+
255
+ test_expect_success ' cleanup commit message (no config and no option uses default)' '
256
+ echo content >>file &&
257
+ git add file &&
258
+ test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment &&
259
+ git commit --no-status &&
260
+ commit_msg_is "commit message"
261
+ '
262
+
263
+ test_expect_success ' cleanup commit message (option overrides default)' '
264
+ echo content >>file &&
265
+ git add file &&
266
+ test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment &&
267
+ git commit --cleanup=whitespace --no-status &&
268
+ commit_msg_is "commit message # comment"
269
+ '
270
+
271
+ test_expect_success ' cleanup commit message (config overrides default)' '
272
+ echo content >>file &&
273
+ git add file &&
274
+ test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment &&
275
+ git -c commit.cleanup=whitespace commit --no-status &&
276
+ commit_msg_is "commit message # comment"
277
+ '
278
+
279
+ test_expect_success ' cleanup commit message (option overrides config)' '
280
+ echo content >>file &&
281
+ git add file &&
282
+ test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment &&
283
+ git -c commit.cleanup=whitespace commit --cleanup=default &&
284
+ commit_msg_is "commit message"
285
+ '
286
+
287
+ test_expect_success ' cleanup commit message (default, -m)' '
288
+ echo content >>file &&
289
+ git add file &&
290
+ git commit -m "message #comment " &&
291
+ commit_msg_is "message #comment"
292
+ '
293
+
294
+ test_expect_success ' cleanup commit message (whitespace option, -m)' '
295
+ echo content >>file &&
296
+ git add file &&
297
+ git commit --cleanup=whitespace --no-status -m "message #comment " &&
298
+ commit_msg_is "message #comment"
299
+ '
300
+
301
+ test_expect_success ' cleanup commit message (whitespace config, -m)' '
302
+ echo content >>file &&
303
+ git add file &&
304
+ git -c commit.cleanup=whitespace commit --no-status -m "message #comment " &&
305
+ commit_msg_is "message #comment"
306
+ '
307
+
238
308
test_expect_success ' message shows author when it is not equal to committer' '
239
309
echo >>negative &&
240
310
git commit -e -m "sample" -a &&
0 commit comments