git-commit-vandalism/t/t3900-i18n-commit.sh
Brandon Casey 5ae93dfdcc t3900: use ancient iconv names for backward compatibility
Some old iconv implementations do not have many alternate names and/or
do not match character encoding names case insensitively.  These
implementations can not tell that utf-8 and UTF-8 are the same encoding
and fail when trying to do the conversion.  So use the old names, which
modern implementations still support.

The following conversions were performed:

         utf-8 --> UTF-8
    ISO-8859-1 --> ISO8859-1
         EUCJP --> eucJP

Also update t9129 and t9500 which make use of the test files in t/t3900.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-18 20:53:11 -07:00

137 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2006 Junio C Hamano
#
test_description='commit and log output encodings'
. ./test-lib.sh
compare_with () {
git show -s $1 | sed -e '1,/^$/d' -e 's/^ //' >current &&
case "$3" in
'')
test_cmp "$2" current ;;
?*)
iconv -f "$3" -t UTF-8 >current.utf8 <current &&
iconv -f "$3" -t UTF-8 >expect.utf8 <"$2" &&
test_cmp expect.utf8 current.utf8
;;
esac
}
test_expect_success setup '
: >F &&
git add F &&
T=$(git write-tree) &&
C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) &&
git update-ref HEAD $C &&
git tag C0
'
test_expect_success 'no encoding header for base case' '
E=$(git cat-file commit C0 | sed -ne "s/^encoding //p") &&
test z = "z$E"
'
for H in ISO8859-1 eucJP ISO-2022-JP
do
test_expect_success "$H setup" '
git config i18n.commitencoding $H &&
git checkout -b $H C0 &&
echo $H >F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
'
done
for H in ISO8859-1 eucJP ISO-2022-JP
do
test_expect_success "check encoding header for $H" '
E=$(git cat-file commit '$H' | sed -ne "s/^encoding //p") &&
test "z$E" = "z'$H'"
'
done
test_expect_success 'config to remove customization' '
git config --unset-all i18n.commitencoding &&
if Z=$(git config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi &&
git config i18n.commitencoding UTF-8
'
test_expect_success 'ISO8859-1 should be shown in UTF-8 now' '
compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
'
for H in eucJP ISO-2022-JP
do
test_expect_success "$H should be shown in UTF-8 now" '
compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
'
done
test_expect_success 'config to add customization' '
git config --unset-all i18n.commitencoding &&
if Z=$(git config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi
'
for H in ISO8859-1 eucJP ISO-2022-JP
do
test_expect_success "$H should be shown in itself now" '
git config i18n.commitencoding '$H' &&
compare_with '$H' "$TEST_DIRECTORY"/t3900/'$H'.txt
'
done
test_expect_success 'config to tweak customization' '
git config i18n.logoutputencoding UTF-8
'
test_expect_success 'ISO8859-1 should be shown in UTF-8 now' '
compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
'
for H in eucJP ISO-2022-JP
do
test_expect_success "$H should be shown in UTF-8 now" '
compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
'
done
for J in eucJP ISO-2022-JP
do
if test "$J" = ISO-2022-JP
then
ICONV=$J
else
ICONV=
fi
git config i18n.logoutputencoding $J
for H in eucJP ISO-2022-JP
do
test_expect_success "$H should be shown in $J now" '
compare_with '$H' "$TEST_DIRECTORY"/t3900/'$J'.txt $ICONV
'
done
done
for H in ISO8859-1 eucJP ISO-2022-JP
do
test_expect_success "No conversion with $H" '
compare_with "--encoding=none '$H'" "$TEST_DIRECTORY"/t3900/'$H'.txt
'
done
test_done