git/t/t3900-i18n-commit.sh
Junio C Hamano d2c11a38c4 UTF-8: introduce i18n.logoutputencoding.
It is plausible for somebody to want to view the commit log in a
different encoding from i18n.commitencoding -- the project's
policy may be UTF-8 and the user may be using a commit message
hook to run iconv to conform to that policy (and either not have
i18n.commitencoding to default to UTF-8 or have it explicitly
set to UTF-8).  Even then, Latin-1 may be more convenient for
the usual pager and the terminal the user uses.

The new variable i18n.logoutputencoding is used in preference to
i18n.commitencoding to decide what encoding to recode the log
output in when git-log and friends formats the commit log message.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-12-27 16:41:33 -08:00

104 lines
2.2 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/^ //' -e '$d' >current &&
diff -u current "$2"
}
test_expect_success setup '
: >F &&
git-add F &&
T=$(git-write-tree) &&
C=$(git-commit-tree $T <../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 ISO-8859-1 EUCJP ISO2022JP
do
test_expect_success "$H setup" '
git-repo-config i18n.commitencoding $H &&
git-checkout -b $H C0 &&
echo $H >F &&
git-commit -a -F ../t3900/$H.txt
'
done
for H in ISO-8859-1 EUCJP ISO2022JP
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 'repo-config to remove customization' '
git-repo-config --unset-all i18n.commitencoding &&
if Z=$(git-repo-config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi &&
git-repo-config i18n.commitencoding utf-8
'
test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
compare_with ISO-8859-1 ../t3900/1-UTF-8.txt
'
for H in EUCJP ISO2022JP
do
test_expect_success "$H should be shown in UTF-8 now" '
compare_with '$H' ../t3900/2-UTF-8.txt
'
done
test_expect_success 'repo-config to add customization' '
git-repo-config --unset-all i18n.commitencoding &&
if Z=$(git-repo-config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi
'
for H in ISO-8859-1 EUCJP ISO2022JP
do
test_expect_success "$H should be shown in itself now" '
git-repo-config i18n.commitencoding '$H' &&
compare_with '$H' ../t3900/'$H'.txt
'
done
test_expect_success 'repo-config to tweak customization' '
git-repo-config i18n.logoutputencoding utf-8
'
test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
compare_with ISO-8859-1 ../t3900/1-UTF-8.txt
'
for H in EUCJP ISO2022JP
do
test_expect_success "$H should be shown in UTF-8 now" '
compare_with '$H' ../t3900/2-UTF-8.txt
'
done
test_done