t4205, t6006: add tests that fail with i18n.logOutputEncoding set
Pretty format string %<(N,[ml]trunc)>%s truncates subject to a given length with an appropriate padding. This works for non-ASCII texts when i18n.logOutputEncoding is UTF-8 only (independently of a printed commit message encoding) but does not work when i18n.logOutputEncoding is NOT UTF-8. There were no breakages as far as were no tests for the case when both a commit message and logOutputEncoding are not UTF-8. Add failing tests for that which will be fixed in the next patch. Signed-off-by: Alexey Shumkin <Alex.Crezoff@gmail.com> Helped-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Helped-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c82134a9f3
commit
d928d81051
@ -154,6 +154,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
message two Z
|
||||
message one Z
|
||||
add bar Z
|
||||
$(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %<|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -165,6 +176,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %<|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
$head1 message two Z
|
||||
$head2 message one Z
|
||||
$head3 add bar Z
|
||||
$head4 $(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%<(1)%s" >actual &&
|
||||
cat <<EOF >expected &&
|
||||
@ -176,6 +198,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with no padding. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(1)%s" >actual &&
|
||||
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
message two
|
||||
message one
|
||||
add bar
|
||||
$(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with trunc' '
|
||||
git log --pretty="tformat:%<(10,trunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -187,6 +220,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_failure 'left alignment formatting with trunc. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
message ..
|
||||
message ..
|
||||
add bar Z
|
||||
initial...
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with ltrunc' '
|
||||
git log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -198,6 +242,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_failure 'left alignment formatting with ltrunc. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
..sage two
|
||||
..sage one
|
||||
add bar Z
|
||||
..${sample_utf8_part}lich
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with mtrunc' '
|
||||
git log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -209,6 +264,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_failure 'left alignment formatting with mtrunc. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
mess.. two
|
||||
mess.. one
|
||||
add bar Z
|
||||
init..lich
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting' '
|
||||
git log --pretty="tformat:%>(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -220,6 +286,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
Z message two
|
||||
Z message one
|
||||
Z add bar
|
||||
Z $(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %>|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -231,6 +308,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %>|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
$head1 message two
|
||||
$head2 message one
|
||||
$head3 add bar
|
||||
$head4 $(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%>(1)%s" >actual &&
|
||||
cat <<EOF >expected &&
|
||||
@ -242,6 +330,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'right alignment formatting with no padding. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
|
||||
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
message two
|
||||
message one
|
||||
add bar
|
||||
$(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting' '
|
||||
git log --pretty="tformat:%><(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -253,6 +352,16 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
Z message two Z
|
||||
Z message one Z
|
||||
Z add bar Z
|
||||
Z $(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
test_expect_success 'center alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %><|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF >expected &&
|
||||
@ -264,6 +373,17 @@ EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting at the nth column. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %><|(40)%s" >actual &&
|
||||
qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
$head1 message two Z
|
||||
$head2 message one Z
|
||||
$head3 add bar Z
|
||||
$head4 $(commit_msg) Z
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'center alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%><(1)%s" >actual &&
|
||||
cat <<EOF >expected &&
|
||||
@ -278,6 +398,16 @@ EOF
|
||||
# save HEAD's SHA-1 digest (with no abbreviations) to use it below
|
||||
# as far as the next test amends HEAD
|
||||
old_head1=$(git rev-parse --verify HEAD~0)
|
||||
test_expect_success 'center alignment formatting with no padding. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(1)%s" >actual &&
|
||||
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
message two
|
||||
message one
|
||||
add bar
|
||||
$(commit_msg)
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left/right alignment formatting with stealing' '
|
||||
git commit --amend -m short --author "long long long <long@me.com>" &&
|
||||
@ -290,6 +420,16 @@ initial... A U Thor
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
test_expect_failure 'left/right alignment formatting with stealing. i18n.logOutputEncoding' '
|
||||
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
|
||||
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
|
||||
short long long long
|
||||
message .. A U Thor
|
||||
add bar A U Thor
|
||||
initial... A U Thor
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
# get new digests (with no abbreviations)
|
||||
head1=$(git rev-parse --verify HEAD~0) &&
|
||||
|
@ -15,12 +15,22 @@ test_encoding="ISO8859-1"
|
||||
# String "added" in German
|
||||
# (translated with Google Translate),
|
||||
# encoded in UTF-8, used as a commit log message below.
|
||||
added=$(printf "added (hinzugef\303\274gt) foo")
|
||||
added_utf8_part=$(printf "\303\274")
|
||||
added_utf8_part_iso88591=$(echo "$added_utf8_part" | iconv -f utf-8 -t $test_encoding)
|
||||
added=$(printf "added (hinzugef${added_utf8_part}gt) foo")
|
||||
added_iso88591=$(echo "$added" | iconv -f utf-8 -t $test_encoding)
|
||||
# same but "changed"
|
||||
changed=$(printf "changed (ge\303\244ndert) foo")
|
||||
changed_utf8_part=$(printf "\303\244")
|
||||
changed_utf8_part_iso88591=$(echo "$changed_utf8_part" | iconv -f utf-8 -t $test_encoding)
|
||||
changed=$(printf "changed (ge${changed_utf8_part}ndert) foo")
|
||||
changed_iso88591=$(echo "$changed" | iconv -f utf-8 -t $test_encoding)
|
||||
|
||||
# Count of char to truncate
|
||||
# Number is chosen so, that non-ACSII characters
|
||||
# (see $added_utf8_part and $changed_utf8_part)
|
||||
# fall into truncated parts of appropriate words both from left and right
|
||||
truncate_count=20
|
||||
|
||||
test_expect_success 'setup' '
|
||||
: >foo &&
|
||||
git add foo &&
|
||||
@ -139,6 +149,13 @@ commit $head1
|
||||
$added
|
||||
EOF
|
||||
|
||||
test_format subject-truncated "%<($truncate_count,trunc)%s" <<EOF
|
||||
commit $head2
|
||||
changed (ge${changed_utf8_part}ndert)..
|
||||
commit $head1
|
||||
added (hinzugef${added_utf8_part}gt..
|
||||
EOF
|
||||
|
||||
test_format body %b <<EOF
|
||||
commit $head2
|
||||
commit $head1
|
||||
@ -239,6 +256,33 @@ commit $head1
|
||||
$added_iso88591
|
||||
EOF
|
||||
|
||||
test_format complex-subject-trunc "%<($truncate_count,trunc)%s" failure <<EOF
|
||||
commit $head3
|
||||
Test printing of c..
|
||||
commit $head2
|
||||
changed (ge${changed_utf8_part_iso88591}ndert)..
|
||||
commit $head1
|
||||
added (hinzugef${added_utf8_part_iso88591}gt..
|
||||
EOF
|
||||
|
||||
test_format complex-subject-mtrunc "%<($truncate_count,mtrunc)%s" failure <<EOF
|
||||
commit $head3
|
||||
Test prin..ex bodies
|
||||
commit $head2
|
||||
changed (..dert) foo
|
||||
commit $head1
|
||||
added (hi..f${added_utf8_part_iso88591}gt) foo
|
||||
EOF
|
||||
|
||||
test_format complex-subject-ltrunc "%<($truncate_count,ltrunc)%s" failure <<EOF
|
||||
commit $head3
|
||||
.. of complex bodies
|
||||
commit $head2
|
||||
..ged (ge${changed_utf8_part_iso88591}ndert) foo
|
||||
commit $head1
|
||||
.. (hinzugef${added_utf8_part_iso88591}gt) foo
|
||||
EOF
|
||||
|
||||
test_expect_success 'prepare expected messages (for test %b)' '
|
||||
cat <<-EOF >expected.utf-8 &&
|
||||
commit $head3
|
||||
@ -267,6 +311,33 @@ commit $head1
|
||||
$added
|
||||
EOF
|
||||
|
||||
test_format complex-subject-commitencoding-unset-trunc "%<($truncate_count,trunc)%s" <<EOF
|
||||
commit $head3
|
||||
Test printing of c..
|
||||
commit $head2
|
||||
changed (ge${changed_utf8_part}ndert)..
|
||||
commit $head1
|
||||
added (hinzugef${added_utf8_part}gt..
|
||||
EOF
|
||||
|
||||
test_format complex-subject-commitencoding-unset-mtrunc "%<($truncate_count,mtrunc)%s" <<EOF
|
||||
commit $head3
|
||||
Test prin..ex bodies
|
||||
commit $head2
|
||||
changed (..dert) foo
|
||||
commit $head1
|
||||
added (hi..f${added_utf8_part}gt) foo
|
||||
EOF
|
||||
|
||||
test_format complex-subject-commitencoding-unset-ltrunc "%<($truncate_count,ltrunc)%s" <<EOF
|
||||
commit $head3
|
||||
.. of complex bodies
|
||||
commit $head2
|
||||
..ged (ge${changed_utf8_part}ndert) foo
|
||||
commit $head1
|
||||
.. (hinzugef${added_utf8_part}gt) foo
|
||||
EOF
|
||||
|
||||
test_format complex-body-commitencoding-unset %b <expected.utf-8
|
||||
|
||||
test_expect_success '%x00 shows NUL' '
|
||||
|
Loading…
Reference in New Issue
Block a user