]>
Commit | Line | Data |
---|---|---|
d2c11a38 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='commit and log output encodings' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | compare_with () { | |
304b5af6 | 11 | git show -s $1 | sed -e '1,/^$/d' -e 's/^ //' >current && |
eb127887 JH |
12 | case "$3" in |
13 | '') | |
14 | test_cmp "$2" current ;; | |
15 | ?*) | |
39d404d1 AR |
16 | iconv -f "$3" -t UTF-8 >current.utf8 <current && |
17 | iconv -f "$3" -t UTF-8 >expect.utf8 <"$2" && | |
eb127887 JH |
18 | test_cmp expect.utf8 current.utf8 |
19 | ;; | |
20 | esac | |
d2c11a38 JH |
21 | } |
22 | ||
23 | test_expect_success setup ' | |
24 | : >F && | |
5be60078 JH |
25 | git add F && |
26 | T=$(git write-tree) && | |
bfdbee98 | 27 | C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) && |
5be60078 | 28 | git update-ref HEAD $C && |
0cb0e143 | 29 | git tag C0 |
d2c11a38 JH |
30 | ' |
31 | ||
32 | test_expect_success 'no encoding header for base case' ' | |
5be60078 | 33 | E=$(git cat-file commit C0 | sed -ne "s/^encoding //p") && |
d2c11a38 JH |
34 | test z = "z$E" |
35 | ' | |
36 | ||
5ae93dfd | 37 | for H in ISO8859-1 eucJP ISO-2022-JP |
d2c11a38 JH |
38 | do |
39 | test_expect_success "$H setup" ' | |
5be60078 | 40 | git config i18n.commitencoding $H && |
0cb0e143 | 41 | git checkout -b $H C0 && |
d2c11a38 | 42 | echo $H >F && |
9b8ae93a | 43 | git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt |
d2c11a38 JH |
44 | ' |
45 | done | |
46 | ||
5ae93dfd | 47 | for H in ISO8859-1 eucJP ISO-2022-JP |
d2c11a38 JH |
48 | do |
49 | test_expect_success "check encoding header for $H" ' | |
5be60078 | 50 | E=$(git cat-file commit '$H' | sed -ne "s/^encoding //p") && |
d2c11a38 JH |
51 | test "z$E" = "z'$H'" |
52 | ' | |
53 | done | |
54 | ||
e0d10e1c | 55 | test_expect_success 'config to remove customization' ' |
5be60078 JH |
56 | git config --unset-all i18n.commitencoding && |
57 | if Z=$(git config --get-all i18n.commitencoding) | |
d2c11a38 JH |
58 | then |
59 | echo Oops, should have failed. | |
60 | false | |
61 | else | |
62 | test z = "z$Z" | |
63 | fi && | |
5ae93dfd | 64 | git config i18n.commitencoding UTF-8 |
d2c11a38 JH |
65 | ' |
66 | ||
5ae93dfd BC |
67 | test_expect_success 'ISO8859-1 should be shown in UTF-8 now' ' |
68 | compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt | |
d2c11a38 JH |
69 | ' |
70 | ||
5ae93dfd | 71 | for H in eucJP ISO-2022-JP |
d2c11a38 JH |
72 | do |
73 | test_expect_success "$H should be shown in UTF-8 now" ' | |
bfdbee98 | 74 | compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt |
d2c11a38 JH |
75 | ' |
76 | done | |
77 | ||
e0d10e1c | 78 | test_expect_success 'config to add customization' ' |
5be60078 JH |
79 | git config --unset-all i18n.commitencoding && |
80 | if Z=$(git config --get-all i18n.commitencoding) | |
d2c11a38 JH |
81 | then |
82 | echo Oops, should have failed. | |
83 | false | |
84 | else | |
85 | test z = "z$Z" | |
86 | fi | |
87 | ' | |
88 | ||
5ae93dfd | 89 | for H in ISO8859-1 eucJP ISO-2022-JP |
d2c11a38 JH |
90 | do |
91 | test_expect_success "$H should be shown in itself now" ' | |
5be60078 | 92 | git config i18n.commitencoding '$H' && |
bfdbee98 | 93 | compare_with '$H' "$TEST_DIRECTORY"/t3900/'$H'.txt |
d2c11a38 JH |
94 | ' |
95 | done | |
96 | ||
e0d10e1c | 97 | test_expect_success 'config to tweak customization' ' |
5ae93dfd | 98 | git config i18n.logoutputencoding UTF-8 |
d2c11a38 JH |
99 | ' |
100 | ||
5ae93dfd BC |
101 | test_expect_success 'ISO8859-1 should be shown in UTF-8 now' ' |
102 | compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt | |
d2c11a38 JH |
103 | ' |
104 | ||
5ae93dfd | 105 | for H in eucJP ISO-2022-JP |
d2c11a38 JH |
106 | do |
107 | test_expect_success "$H should be shown in UTF-8 now" ' | |
bfdbee98 | 108 | compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt |
d2c11a38 JH |
109 | ' |
110 | done | |
111 | ||
5ae93dfd | 112 | for J in eucJP ISO-2022-JP |
7255ff04 | 113 | do |
eb127887 JH |
114 | if test "$J" = ISO-2022-JP |
115 | then | |
116 | ICONV=$J | |
117 | else | |
118 | ICONV= | |
119 | fi | |
5be60078 | 120 | git config i18n.logoutputencoding $J |
5ae93dfd | 121 | for H in eucJP ISO-2022-JP |
7255ff04 JH |
122 | do |
123 | test_expect_success "$H should be shown in $J now" ' | |
eb127887 | 124 | compare_with '$H' "$TEST_DIRECTORY"/t3900/'$J'.txt $ICONV |
7255ff04 JH |
125 | ' |
126 | done | |
127 | done | |
128 | ||
5ae93dfd | 129 | for H in ISO8859-1 eucJP ISO-2022-JP |
00079283 JH |
130 | do |
131 | test_expect_success "No conversion with $H" ' | |
bfdbee98 | 132 | compare_with "--encoding=none '$H'" "$TEST_DIRECTORY"/t3900/'$H'.txt |
00079283 JH |
133 | ' |
134 | done | |
135 | ||
d2c11a38 | 136 | test_done |