Re: [PATCH v3 5/5] t6006: don't use iconv(1) without ICONV prereq
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 18, 2026, 17:46 UTC
- Message-ID
- <xmqqfr6y7xnn.fsf@gitster.g>
- In-Reply-To
- <20260218-b4-pks-ci-msvc-iconv-fixes-v3-5-08c1ff3ffc9a@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 5 quoted lines
> Two tests in t6006 depend on the iconv(1) prerequisite to reencode a > commit message. This executable may not even exist though in case the > prereq is not set, which will cause the tests to fail. > > Fix this by using UTF-8 instead when the prereq is not set.
The above makes perfect sense, but would the rest of the test involving this data need to be adjusted to expect utf-8 instead of $test_encoding when iconv is not available?
Show 15 quoted lines
> -iconv -f utf-8 -t $test_encoding > commit-msg <<EOF > -Test printing of complex bodies > +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 > + 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 > + ) &&
Creative use of "cat" only to strip leading. Otherwise,
message="Test printing of ... ... include an ISO8859 character: ¡bueno!"
would have sufficed ;-).
Show 6 quoted lines
> + if test_have_prereq ICONV > + then > + echo "$message" | iconv -f utf-8 -t $test_encoding >commit-msg > + else > + echo "$message" >commit-msg > + fi &&
So we have the message in the file encoded in either utf-8 or the target encoding.
> -test_expect_success 'setup complex body' ' > git config i18n.commitencoding $test_encoding &&
But we claim unconditionally $test_encoding is used in the commit object. This is OK because test_encoding is also set to UTF-8 in the IONV challenged environment. Cute.
Show 14 quoted lines
> @@ -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
And this is the same idea. It is confiusing that the data has nothing to do with Latin-1 when iconv is not in use, but things will even out. Nice.