7
7
test_description=' Test pretty formats'
8
8
. ./test-lib.sh
9
9
10
+ # Tested non-UTF-8 encoding
11
+ test_encoding=" ISO8859-1"
12
+
10
13
sample_utf8_part=$( printf " f\303\244ng" )
11
14
12
15
commit_msg () {
@@ -27,8 +30,8 @@ test_expect_success 'set up basic repos' '
27
30
>bar &&
28
31
git add foo &&
29
32
test_tick &&
30
- git config i18n.commitEncoding iso8859-1 &&
31
- git commit -m "$(commit_msg iso8859-1 )" &&
33
+ git config i18n.commitEncoding $test_encoding &&
34
+ git commit -m "$(commit_msg $test_encoding )" &&
32
35
git add bar &&
33
36
test_tick &&
34
37
git commit -m "add bar" &&
@@ -56,8 +59,8 @@ test_expect_success 'alias user-defined format' '
56
59
test_cmp expected actual
57
60
'
58
61
59
- test_expect_success ' alias user-defined tformat with %s (iso8859 -1 encoding)' '
60
- git config i18n.logOutputEncoding iso8859-1 &&
62
+ test_expect_success ' alias user-defined tformat with %s (ISO8859 -1 encoding)' '
63
+ git config i18n.logOutputEncoding $test_encoding &&
61
64
git log --oneline >expected-s &&
62
65
git log --pretty="tformat:%h %s" >actual-s &&
63
66
git config --unset i18n.logOutputEncoding &&
@@ -141,9 +144,7 @@ test_expect_success 'setup more commits' '
141
144
'
142
145
143
146
test_expect_success ' left alignment formatting' '
144
- git log --pretty="format:%<(40)%s" >actual &&
145
- # complete the incomplete line at the end
146
- echo >>actual &&
147
+ git log --pretty="tformat:%<(40)%s" >actual &&
147
148
qz_to_tab_space <<EOF >expected &&
148
149
message two Z
149
150
message one Z
@@ -153,10 +154,19 @@ EOF
153
154
test_cmp expected actual
154
155
'
155
156
157
+ test_expect_success ' left alignment formatting. i18n.logOutputEncoding' '
158
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(40)%s" >actual &&
159
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
160
+ message two Z
161
+ message one Z
162
+ add bar Z
163
+ $(commit_msg) Z
164
+ EOF
165
+ test_cmp expected actual
166
+ '
167
+
156
168
test_expect_success ' left alignment formatting at the nth column' '
157
- git log --pretty="format:%h %<|(40)%s" >actual &&
158
- # complete the incomplete line at the end
159
- echo >>actual &&
169
+ git log --pretty="tformat:%h %<|(40)%s" >actual &&
160
170
qz_to_tab_space <<EOF >expected &&
161
171
$head1 message two Z
162
172
$head2 message one Z
@@ -166,10 +176,19 @@ EOF
166
176
test_cmp expected actual
167
177
'
168
178
179
+ test_expect_success ' left alignment formatting at the nth column. i18n.logOutputEncoding' '
180
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %<|(40)%s" >actual &&
181
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
182
+ $head1 message two Z
183
+ $head2 message one Z
184
+ $head3 add bar Z
185
+ $head4 $(commit_msg) Z
186
+ EOF
187
+ test_cmp expected actual
188
+ '
189
+
169
190
test_expect_success ' left alignment formatting with no padding' '
170
- git log --pretty="format:%<(1)%s" >actual &&
171
- # complete the incomplete line at the end
172
- echo >>actual &&
191
+ git log --pretty="tformat:%<(1)%s" >actual &&
173
192
cat <<EOF >expected &&
174
193
message two
175
194
message one
@@ -179,10 +198,19 @@ EOF
179
198
test_cmp expected actual
180
199
'
181
200
201
+ test_expect_success ' left alignment formatting with no padding. i18n.logOutputEncoding' '
202
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(1)%s" >actual &&
203
+ cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
204
+ message two
205
+ message one
206
+ add bar
207
+ $(commit_msg)
208
+ EOF
209
+ test_cmp expected actual
210
+ '
211
+
182
212
test_expect_success ' left alignment formatting with trunc' '
183
- git log --pretty="format:%<(10,trunc)%s" >actual &&
184
- # complete the incomplete line at the end
185
- echo >>actual &&
213
+ git log --pretty="tformat:%<(10,trunc)%s" >actual &&
186
214
qz_to_tab_space <<EOF >expected &&
187
215
message ..
188
216
message ..
@@ -192,10 +220,19 @@ EOF
192
220
test_cmp expected actual
193
221
'
194
222
223
+ test_expect_success ' left alignment formatting with trunc. i18n.logOutputEncoding' '
224
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s" >actual &&
225
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
226
+ message ..
227
+ message ..
228
+ add bar Z
229
+ initial...
230
+ EOF
231
+ test_cmp expected actual
232
+ '
233
+
195
234
test_expect_success ' left alignment formatting with ltrunc' '
196
- git log --pretty="format:%<(10,ltrunc)%s" >actual &&
197
- # complete the incomplete line at the end
198
- echo >>actual &&
235
+ git log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
199
236
qz_to_tab_space <<EOF >expected &&
200
237
..sage two
201
238
..sage one
@@ -205,10 +242,19 @@ EOF
205
242
test_cmp expected actual
206
243
'
207
244
245
+ test_expect_success ' left alignment formatting with ltrunc. i18n.logOutputEncoding' '
246
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
247
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
248
+ ..sage two
249
+ ..sage one
250
+ add bar Z
251
+ ..${sample_utf8_part}lich
252
+ EOF
253
+ test_cmp expected actual
254
+ '
255
+
208
256
test_expect_success ' left alignment formatting with mtrunc' '
209
- git log --pretty="format:%<(10,mtrunc)%s" >actual &&
210
- # complete the incomplete line at the end
211
- echo >>actual &&
257
+ git log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
212
258
qz_to_tab_space <<EOF >expected &&
213
259
mess.. two
214
260
mess.. one
@@ -218,10 +264,19 @@ EOF
218
264
test_cmp expected actual
219
265
'
220
266
267
+ test_expect_success ' left alignment formatting with mtrunc. i18n.logOutputEncoding' '
268
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
269
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
270
+ mess.. two
271
+ mess.. one
272
+ add bar Z
273
+ init..lich
274
+ EOF
275
+ test_cmp expected actual
276
+ '
277
+
221
278
test_expect_success ' right alignment formatting' '
222
- git log --pretty="format:%>(40)%s" >actual &&
223
- # complete the incomplete line at the end
224
- echo >>actual &&
279
+ git log --pretty="tformat:%>(40)%s" >actual &&
225
280
qz_to_tab_space <<EOF >expected &&
226
281
Z message two
227
282
Z message one
@@ -231,10 +286,19 @@ EOF
231
286
test_cmp expected actual
232
287
'
233
288
289
+ test_expect_success ' right alignment formatting. i18n.logOutputEncoding' '
290
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(40)%s" >actual &&
291
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
292
+ Z message two
293
+ Z message one
294
+ Z add bar
295
+ Z $(commit_msg)
296
+ EOF
297
+ test_cmp expected actual
298
+ '
299
+
234
300
test_expect_success ' right alignment formatting at the nth column' '
235
- git log --pretty="format:%h %>|(40)%s" >actual &&
236
- # complete the incomplete line at the end
237
- echo >>actual &&
301
+ git log --pretty="tformat:%h %>|(40)%s" >actual &&
238
302
qz_to_tab_space <<EOF >expected &&
239
303
$head1 message two
240
304
$head2 message one
@@ -244,10 +308,19 @@ EOF
244
308
test_cmp expected actual
245
309
'
246
310
311
+ test_expect_success ' right alignment formatting at the nth column. i18n.logOutputEncoding' '
312
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %>|(40)%s" >actual &&
313
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
314
+ $head1 message two
315
+ $head2 message one
316
+ $head3 add bar
317
+ $head4 $(commit_msg)
318
+ EOF
319
+ test_cmp expected actual
320
+ '
321
+
247
322
test_expect_success ' right alignment formatting with no padding' '
248
- git log --pretty="format:%>(1)%s" >actual &&
249
- # complete the incomplete line at the end
250
- echo >>actual &&
323
+ git log --pretty="tformat:%>(1)%s" >actual &&
251
324
cat <<EOF >expected &&
252
325
message two
253
326
message one
@@ -257,10 +330,19 @@ EOF
257
330
test_cmp expected actual
258
331
'
259
332
333
+ test_expect_success ' right alignment formatting with no padding. i18n.logOutputEncoding' '
334
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
335
+ cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
336
+ message two
337
+ message one
338
+ add bar
339
+ $(commit_msg)
340
+ EOF
341
+ test_cmp expected actual
342
+ '
343
+
260
344
test_expect_success ' center alignment formatting' '
261
- git log --pretty="format:%><(40)%s" >actual &&
262
- # complete the incomplete line at the end
263
- echo >>actual &&
345
+ git log --pretty="tformat:%><(40)%s" >actual &&
264
346
qz_to_tab_space <<EOF >expected &&
265
347
Z message two Z
266
348
Z message one Z
@@ -270,10 +352,18 @@ EOF
270
352
test_cmp expected actual
271
353
'
272
354
355
+ test_expect_success ' center alignment formatting. i18n.logOutputEncoding' '
356
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(40)%s" >actual &&
357
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
358
+ Z message two Z
359
+ Z message one Z
360
+ Z add bar Z
361
+ Z $(commit_msg) Z
362
+ EOF
363
+ test_cmp expected actual
364
+ '
273
365
test_expect_success ' center alignment formatting at the nth column' '
274
- git log --pretty="format:%h %><|(40)%s" >actual &&
275
- # complete the incomplete line at the end
276
- echo >>actual &&
366
+ git log --pretty="tformat:%h %><|(40)%s" >actual &&
277
367
qz_to_tab_space <<EOF >expected &&
278
368
$head1 message two Z
279
369
$head2 message one Z
@@ -283,10 +373,19 @@ EOF
283
373
test_cmp expected actual
284
374
'
285
375
376
+ test_expect_success ' center alignment formatting at the nth column. i18n.logOutputEncoding' '
377
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %><|(40)%s" >actual &&
378
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
379
+ $head1 message two Z
380
+ $head2 message one Z
381
+ $head3 add bar Z
382
+ $head4 $(commit_msg) Z
383
+ EOF
384
+ test_cmp expected actual
385
+ '
386
+
286
387
test_expect_success ' center alignment formatting with no padding' '
287
- git log --pretty="format:%><(1)%s" >actual &&
288
- # complete the incomplete line at the end
289
- echo >>actual &&
388
+ git log --pretty="tformat:%><(1)%s" >actual &&
290
389
cat <<EOF >expected &&
291
390
message two
292
391
message one
@@ -296,11 +395,23 @@ EOF
296
395
test_cmp expected actual
297
396
'
298
397
398
+ # save HEAD's SHA-1 digest (with no abbreviations) to use it below
399
+ # as far as the next test amends HEAD
400
+ old_head1=$( git rev-parse --verify HEAD~0)
401
+ test_expect_success ' center alignment formatting with no padding. i18n.logOutputEncoding' '
402
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(1)%s" >actual &&
403
+ cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
404
+ message two
405
+ message one
406
+ add bar
407
+ $(commit_msg)
408
+ EOF
409
+ test_cmp expected actual
410
+ '
411
+
299
412
test_expect_success ' left/right alignment formatting with stealing' '
300
413
git commit --amend -m short --author "long long long <[email protected] >" &&
301
- git log --pretty="format:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
302
- # complete the incomplete line at the end
303
- echo >>actual &&
414
+ git log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
304
415
cat <<EOF >expected &&
305
416
short long long long
306
417
message .. A U Thor
@@ -309,6 +420,20 @@ initial... A U Thor
309
420
EOF
310
421
test_cmp expected actual
311
422
'
423
+ test_expect_success ' left/right alignment formatting with stealing. i18n.logOutputEncoding' '
424
+ git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
425
+ cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
426
+ short long long long
427
+ message .. A U Thor
428
+ add bar A U Thor
429
+ initial... A U Thor
430
+ EOF
431
+ test_cmp expected actual
432
+ '
433
+
434
+ # get new digests (with no abbreviations)
435
+ head1=$( git rev-parse --verify HEAD~0) &&
436
+ head2=$( git rev-parse --verify HEAD~1) &&
312
437
313
438
test_expect_success ' log decoration properly follows tag chain' '
314
439
git tag -a tag1 -m tag1 &&
@@ -317,9 +442,9 @@ test_expect_success 'log decoration properly follows tag chain' '
317
442
git commit --amend -m shorter &&
318
443
git log --no-walk --tags --pretty="%H %d" --decorate=full >actual &&
319
444
cat <<EOF >expected &&
320
- 6a908c10688b2503073c39c9ba26322c73902bb5 (tag: refs/tags/tag2)
321
- 9f716384d92283fb915a4eee5073f030638e05f9 (tag: refs/tags/message-one)
322
- b87e4cccdb77336ea79d89224737be7ea8e95367 (tag: refs/tags/message-two)
445
+ $head1 (tag: refs/tags/tag2)
446
+ $head2 (tag: refs/tags/message-one)
447
+ $old_head1 (tag: refs/tags/message-two)
323
448
EOF
324
449
sort actual >actual1 &&
325
450
test_cmp expected actual1
0 commit comments