mirror of
https://github.com/git/git.git
synced 2026-02-27 10:25:07 +00:00
Merge branch 'ps/tests-wo-iconv-fixes' into jch
Some tests assumed "iconv" is available without honoring ICONV prerequisite, which has been corrected. * ps/tests-wo-iconv-fixes: t6006: don't use iconv(1) without ICONV prereq t5550: add ICONV prereq to tests that use "$HTTPD_URL/error" t4205: improve handling of ICONV prerequisite t40xx: don't use iconv(1) without ICONV prereq t: don't set ICONV prereq when iconv(1) is missing
This commit is contained in:
@@ -37,8 +37,12 @@ add_file () {
|
||||
test_tick &&
|
||||
# "git commit -m" would break MinGW, as Windows refuse to pass
|
||||
# $test_encoding encoded parameter to git.
|
||||
echo "Add $name ($added $name)" | iconv -f utf-8 -t $test_encoding |
|
||||
git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
message="Add $name ($added $name)" &&
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
message=$(echo "$message" | iconv -f utf-8 -t $test_encoding)
|
||||
fi &&
|
||||
echo "$message" | git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
done >/dev/null &&
|
||||
git rev-parse --short --verify HEAD
|
||||
)
|
||||
|
||||
@@ -35,8 +35,12 @@ add_file () {
|
||||
test_tick &&
|
||||
# "git commit -m" would break MinGW, as Windows refuse to pass
|
||||
# $test_encoding encoded parameter to git.
|
||||
echo "Add $name ($added $name)" | iconv -f utf-8 -t $test_encoding |
|
||||
git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
message="Add $name ($added $name)" &&
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
message=$(echo "$message" | iconv -f utf-8 -t $test_encoding)
|
||||
fi &&
|
||||
echo "$message" | git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
done >/dev/null &&
|
||||
git rev-parse --short --verify HEAD
|
||||
)
|
||||
|
||||
@@ -35,8 +35,12 @@ add_file () {
|
||||
test_tick &&
|
||||
# "git commit -m" would break MinGW, as Windows refuse to pass
|
||||
# $test_encoding encoded parameter to git.
|
||||
echo "Add $name ($added $name)" | iconv -f utf-8 -t $test_encoding |
|
||||
git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
message="Add $name ($added $name)" &&
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
message=$(echo "$message" | iconv -f utf-8 -t $test_encoding)
|
||||
fi &&
|
||||
echo "$message" | git -c "i18n.commitEncoding=$test_encoding" commit -F -
|
||||
done >/dev/null &&
|
||||
git rev-parse --short --verify HEAD
|
||||
)
|
||||
|
||||
@@ -9,7 +9,12 @@ test_description='Test pretty formats'
|
||||
. ./test-lib.sh
|
||||
|
||||
# Tested non-UTF-8 encoding
|
||||
test_encoding="ISO8859-1"
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
test_encoding="ISO8859-1"
|
||||
else
|
||||
test_encoding="UTF-8"
|
||||
fi
|
||||
|
||||
sample_utf8_part=$(printf "f\303\244ng")
|
||||
|
||||
@@ -18,7 +23,7 @@ commit_msg () {
|
||||
# (translated with Google Translate),
|
||||
# encoded in UTF-8, used as a commit log message below.
|
||||
msg="initial. an${sample_utf8_part}lich\n"
|
||||
if test -n "$1"
|
||||
if test -n "$1" && test "$1" != "UTF-8"
|
||||
then
|
||||
printf "$msg" | iconv -f utf-8 -t "$1"
|
||||
else
|
||||
@@ -113,19 +118,19 @@ test_expect_success 'alias loop' '
|
||||
test_must_fail git log --pretty=test-foo
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'NUL separation' '
|
||||
test_expect_success 'NUL separation' '
|
||||
printf "add bar\0$(commit_msg)" >expected &&
|
||||
git log -z --pretty="format:%s" >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'NUL termination' '
|
||||
test_expect_success 'NUL termination' '
|
||||
printf "add bar\0$(commit_msg)\0" >expected &&
|
||||
git log -z --pretty="tformat:%s" >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'NUL separation with --stat' '
|
||||
test_expect_success 'NUL separation with --stat' '
|
||||
stat0_part=$(git diff --stat HEAD^ HEAD) &&
|
||||
stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&
|
||||
printf "add bar\n$stat0_part\n\0$(commit_msg)\n$stat1_part\n" >expected &&
|
||||
@@ -180,7 +185,7 @@ test_expect_success 'setup more commits' '
|
||||
head4=$(git rev-parse --verify --short HEAD~3)
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting' '
|
||||
test_expect_success 'left alignment formatting' '
|
||||
git log --pretty="tformat:%<(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
message two Z
|
||||
@@ -202,7 +207,7 @@ test_expect_success ICONV 'left alignment formatting. i18n.logOutputEncoding' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting at the nth column' '
|
||||
test_expect_success 'left alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %<|(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two Z
|
||||
@@ -213,7 +218,7 @@ test_expect_success ICONV 'left alignment formatting at the nth column' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting at the nth column' '
|
||||
test_expect_success 'left alignment formatting at the nth column' '
|
||||
COLUMNS=50 git log --pretty="tformat:%h %<|(-10)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two Z
|
||||
@@ -235,7 +240,7 @@ test_expect_success ICONV 'left alignment formatting at the nth column. i18n.log
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting with no padding' '
|
||||
test_expect_success 'left alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%<(1)%s" >actual &&
|
||||
cat <<-EOF >expected &&
|
||||
message two
|
||||
@@ -246,7 +251,7 @@ test_expect_success ICONV 'left alignment formatting with no padding' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'left alignment formatting with no padding. i18n.logOutputEncoding' '
|
||||
test_expect_success ICONV '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
|
||||
@@ -257,7 +262,7 @@ test_expect_success 'left alignment formatting with no padding. i18n.logOutputEn
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting with trunc' '
|
||||
test_expect_success 'left alignment formatting with trunc' '
|
||||
git log --pretty="tformat:%<(10,trunc)%s" >actual &&
|
||||
qz_to_tab_space <<-\EOF >expected &&
|
||||
message ..
|
||||
@@ -279,7 +284,7 @@ test_expect_success ICONV 'left alignment formatting with trunc. i18n.logOutputE
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting with ltrunc' '
|
||||
test_expect_success 'left alignment formatting with ltrunc' '
|
||||
git log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
..sage two
|
||||
@@ -301,7 +306,7 @@ test_expect_success ICONV 'left alignment formatting with ltrunc. i18n.logOutput
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'left alignment formatting with mtrunc' '
|
||||
test_expect_success 'left alignment formatting with mtrunc' '
|
||||
git log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
|
||||
qz_to_tab_space <<-\EOF >expected &&
|
||||
mess.. two
|
||||
@@ -323,7 +328,7 @@ test_expect_success ICONV 'left alignment formatting with mtrunc. i18n.logOutput
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'right alignment formatting' '
|
||||
test_expect_success 'right alignment formatting' '
|
||||
git log --pretty="tformat:%>(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
Z message two
|
||||
@@ -345,7 +350,7 @@ test_expect_success ICONV 'right alignment formatting. i18n.logOutputEncoding' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'right alignment formatting at the nth column' '
|
||||
test_expect_success 'right alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %>|(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two
|
||||
@@ -356,7 +361,7 @@ test_expect_success ICONV 'right alignment formatting at the nth column' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'right alignment formatting at the nth column' '
|
||||
test_expect_success 'right alignment formatting at the nth column' '
|
||||
COLUMNS=50 git log --pretty="tformat:%h %>|(-10)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two
|
||||
@@ -391,7 +396,7 @@ test_expect_success ICONV 'right alignment formatting at the nth column with --g
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'right alignment formatting with no padding' '
|
||||
test_expect_success 'right alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%>(1)%s" >actual &&
|
||||
cat <<-EOF >expected &&
|
||||
message two
|
||||
@@ -402,7 +407,7 @@ test_expect_success ICONV 'right alignment formatting with no padding' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'right alignment formatting with no padding and with --graph' '
|
||||
test_expect_success 'right alignment formatting with no padding and with --graph' '
|
||||
git log --graph --pretty="tformat:%>(1)%s" >actual &&
|
||||
cat <<-EOF >expected &&
|
||||
* message two
|
||||
@@ -424,7 +429,7 @@ test_expect_success ICONV 'right alignment formatting with no padding. i18n.logO
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'center alignment formatting' '
|
||||
test_expect_success 'center alignment formatting' '
|
||||
git log --pretty="tformat:%><(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
Z message two Z
|
||||
@@ -445,7 +450,8 @@ test_expect_success ICONV 'center alignment formatting. i18n.logOutputEncoding'
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
test_expect_success ICONV 'center alignment formatting at the nth column' '
|
||||
|
||||
test_expect_success 'center alignment formatting at the nth column' '
|
||||
git log --pretty="tformat:%h %><|(40)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two Z
|
||||
@@ -456,7 +462,7 @@ test_expect_success ICONV 'center alignment formatting at the nth column' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'center alignment formatting at the nth column' '
|
||||
test_expect_success 'center alignment formatting at the nth column' '
|
||||
COLUMNS=70 git log --pretty="tformat:%h %><|(-30)%s" >actual &&
|
||||
qz_to_tab_space <<-EOF >expected &&
|
||||
$head1 message two Z
|
||||
@@ -478,7 +484,7 @@ test_expect_success ICONV 'center alignment formatting at the nth column. i18n.l
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'center alignment formatting with no padding' '
|
||||
test_expect_success 'center alignment formatting with no padding' '
|
||||
git log --pretty="tformat:%><(1)%s" >actual &&
|
||||
cat <<-EOF >expected &&
|
||||
message two
|
||||
|
||||
@@ -339,32 +339,32 @@ test_expect_success 'fetch can handle previously-fetched .idx files' '
|
||||
'
|
||||
|
||||
test_expect_success 'did not use upload-pack service' '
|
||||
! grep "/git-upload-pack" "$HTTPD_ROOT_PATH/access.log"
|
||||
test_grep ! "/git-upload-pack" "$HTTPD_ROOT_PATH/access.log"
|
||||
'
|
||||
|
||||
test_expect_success 'git client shows text/plain errors' '
|
||||
test_expect_success ICONV 'git client shows text/plain errors' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/text" 2>stderr &&
|
||||
grep "this is the error message" stderr
|
||||
test_grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'git client does not show html errors' '
|
||||
test_expect_success ICONV 'git client does not show html errors' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/html" 2>stderr &&
|
||||
! grep "this is the error message" stderr
|
||||
test_grep ! "this is the error message" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'git client shows text/plain with a charset' '
|
||||
test_expect_success ICONV 'git client shows text/plain with a charset' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/charset" 2>stderr &&
|
||||
grep "this is the error message" stderr
|
||||
test_grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'http error messages are reencoded' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/utf16" 2>stderr &&
|
||||
grep "this is the error message" stderr
|
||||
test_grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
test_expect_success ICONV 'reencoding is robust to whitespace oddities' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/odd-spacing" 2>stderr &&
|
||||
grep "this is the error message" stderr
|
||||
test_grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
check_language () {
|
||||
@@ -406,7 +406,7 @@ ja;q=0.95, zh;q=0.94, sv;q=0.93, pt;q=0.92, nb;q=0.91, *;q=0.90" \
|
||||
|
||||
test_expect_success 'git client send an empty Accept-Language' '
|
||||
GIT_TRACE_CURL=true LANGUAGE= git ls-remote "$HTTPD_URL/dumb/repo.git" 2>stderr &&
|
||||
! grep "^=> Send header: Accept-Language:" stderr
|
||||
test_grep ! "^=> Send header: Accept-Language:" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'remote-http complains cleanly about malformed urls' '
|
||||
|
||||
@@ -378,15 +378,23 @@ test_expect_success 'rev-list %C(auto,...) respects --color' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
iconv -f utf-8 -t $test_encoding > commit-msg <<EOF
|
||||
Test printing of complex bodies
|
||||
|
||||
This commit message is much longer than the others,
|
||||
and it will be encoded in $test_encoding. We should therefore
|
||||
include an ISO8859 character: ¡bueno!
|
||||
EOF
|
||||
|
||||
test_expect_success 'setup complex body' '
|
||||
message=$(cat <<-EOF
|
||||
Test printing of complex bodies
|
||||
|
||||
This commit message is much longer than the others,
|
||||
and it will be encoded in $test_encoding. We should therefore
|
||||
include an ISO8859 character: ¡bueno!
|
||||
EOF
|
||||
) &&
|
||||
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
echo "$message" | iconv -f utf-8 -t $test_encoding >commit-msg
|
||||
else
|
||||
echo "$message" >commit-msg
|
||||
fi &&
|
||||
|
||||
git config i18n.commitencoding $test_encoding &&
|
||||
echo change2 >foo && git commit -a -F commit-msg &&
|
||||
head3=$(git rev-parse --verify HEAD) &&
|
||||
@@ -448,7 +456,12 @@ test_expect_success 'setup expected messages (for test %b)' '
|
||||
commit $head2
|
||||
commit $head1
|
||||
EOF
|
||||
iconv -f utf-8 -t $test_encoding expected.utf-8 >expected.ISO8859-1
|
||||
if test_have_prereq ICONV
|
||||
then
|
||||
iconv -f utf-8 -t $test_encoding expected.utf-8 >expected.ISO8859-1
|
||||
else
|
||||
cp expected.utf-8 expected.ISO8859-1
|
||||
fi
|
||||
'
|
||||
|
||||
test_format complex-body %b <expected.ISO8859-1
|
||||
|
||||
@@ -1720,7 +1720,6 @@ esac
|
||||
( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1
|
||||
test -z "$NO_CURL" && test_set_prereq LIBCURL
|
||||
test -z "$NO_GITWEB" && test_set_prereq GITWEB
|
||||
test -z "$NO_ICONV" && test_set_prereq ICONV
|
||||
test -z "$NO_PERL" && test_set_prereq PERL
|
||||
test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
|
||||
test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
||||
@@ -1731,6 +1730,17 @@ test -n "$SANITIZE_LEAK" && test_set_prereq SANITIZE_LEAK
|
||||
test -n "$GIT_VALGRIND_ENABLED" && test_set_prereq VALGRIND
|
||||
test -n "$PERL_PATH" && test_set_prereq PERL_TEST_HELPERS
|
||||
|
||||
test_lazy_prereq ICONV '
|
||||
# We require Git to be built with iconv support, and we require the
|
||||
# iconv binary to exist.
|
||||
#
|
||||
# NEEDSWORK: We might eventually want to split this up into two
|
||||
# prerequisites: one for NO_ICONV, and one for the iconv(1) binary, as
|
||||
# some tests only depend on either of these.
|
||||
test -z "$NO_ICONV" &&
|
||||
iconv -f utf8 -t utf8 </dev/null
|
||||
'
|
||||
|
||||
if test -z "$GIT_TEST_CHECK_CACHE_TREE"
|
||||
then
|
||||
GIT_TEST_CHECK_CACHE_TREE=true
|
||||
|
||||
Reference in New Issue
Block a user