mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
df383b5842
The iconv library is used by Git to reencode files, commit messages and other things. As such it is a rather integral part, but given that many platforms nowadays use UTF-8 everywhere you can live without support for reencoding in many situations. It is thus optional to build Git with iconv, and some of our platforms wired up in "config.mak.uname" disable it. But while we support building without it, running our test suite with "NO_ICONV=Yes" causes many test failures. Wire up a new test prerequisite ICONV that gets populated via our GIT-BUILD-OPTIONS. Annotate failing tests accordingly. Note that this commit does not do a deep dive into every single test to assess whether the failure is expected or not. Most of the tests do smell like the expected kind of failure though. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Taylor Blau <me@ttaylorr.com>
103 lines
2.2 KiB
Bash
Executable File
103 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git blame encoding conversion'
|
|
. ./test-lib.sh
|
|
|
|
if ! test_have_prereq ICONV
|
|
then
|
|
skip_all='skipping blame i18n tests; iconv not available'
|
|
test_done
|
|
fi
|
|
|
|
. "$TEST_DIRECTORY"/t8005/utf8.txt
|
|
. "$TEST_DIRECTORY"/t8005/euc-japan.txt
|
|
. "$TEST_DIRECTORY"/t8005/sjis.txt
|
|
|
|
test_expect_success 'setup the repository' '
|
|
# Create the file
|
|
echo "UTF-8 LINE" > file &&
|
|
git add file &&
|
|
git commit --author "$UTF8_NAME <utf8@localhost>" -m "$UTF8_MSG" &&
|
|
|
|
echo "EUC-JAPAN LINE" >> file &&
|
|
git add file &&
|
|
git config i18n.commitencoding eucJP &&
|
|
git commit --author "$EUC_JAPAN_NAME <euc-japan@localhost>" -m "$EUC_JAPAN_MSG" &&
|
|
|
|
echo "SJIS LINE" >> file &&
|
|
git add file &&
|
|
git config i18n.commitencoding SJIS &&
|
|
git commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG"
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
author $SJIS_NAME
|
|
summary $SJIS_MSG
|
|
author $SJIS_NAME
|
|
summary $SJIS_MSG
|
|
author $SJIS_NAME
|
|
summary $SJIS_MSG
|
|
EOF
|
|
|
|
filter_author_summary () {
|
|
sed -n -e '/^author /p' -e '/^summary /p' "$@"
|
|
}
|
|
|
|
test_expect_success !MINGW \
|
|
'blame respects i18n.commitencoding' '
|
|
git blame --incremental file >output &&
|
|
filter_author_summary output >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
author $EUC_JAPAN_NAME
|
|
summary $EUC_JAPAN_MSG
|
|
author $EUC_JAPAN_NAME
|
|
summary $EUC_JAPAN_MSG
|
|
author $EUC_JAPAN_NAME
|
|
summary $EUC_JAPAN_MSG
|
|
EOF
|
|
|
|
test_expect_success !MINGW \
|
|
'blame respects i18n.logoutputencoding' '
|
|
git config i18n.logoutputencoding eucJP &&
|
|
git blame --incremental file >output &&
|
|
filter_author_summary output >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
author $UTF8_NAME
|
|
summary $UTF8_MSG
|
|
author $UTF8_NAME
|
|
summary $UTF8_MSG
|
|
author $UTF8_NAME
|
|
summary $UTF8_MSG
|
|
EOF
|
|
|
|
test_expect_success !MINGW \
|
|
'blame respects --encoding=UTF-8' '
|
|
git blame --incremental --encoding=UTF-8 file >output &&
|
|
filter_author_summary output >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
author $SJIS_NAME
|
|
summary $SJIS_MSG
|
|
author $EUC_JAPAN_NAME
|
|
summary $EUC_JAPAN_MSG
|
|
author $UTF8_NAME
|
|
summary $UTF8_MSG
|
|
EOF
|
|
|
|
test_expect_success !MINGW \
|
|
'blame respects --encoding=none' '
|
|
git blame --incremental --encoding=none file >output &&
|
|
filter_author_summary output >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_done
|