]> Kevux Git Server - rit/commit
t: don't set ICONV prereq when iconv(1) is missing
authorPatrick Steinhardt <ps@pks.im>
Fri, 20 Feb 2026 08:25:59 +0000 (09:25 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Feb 2026 15:52:26 +0000 (07:52 -0800)
commit68ac70b6c9ea7b564217a994c3dcd56cba629fdf
tree55640df816bd78502fc56b2016e0c770b6db50fc
parent9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed
t: don't set ICONV prereq when iconv(1) is missing

We've got a couple of tests that exercise Git with different encodings,
typically around commit messages. All of these tests depend on the ICONV
prerequisite, which is set when Git was built with support for iconv.

Many of those tests also end up using the iconv(1) executable to
reencode text. But while tests can rely on the fact that Git does have
support for iconv, they cannot assume that the iconv(1) executable
exists. The consequence is thus that tests will break in case Git is
built with iconv, but the executable doesn't exist. In fact, some of the
tests even use the iconv(1) executable unconditionally, regardless of
whether or not the ICONV prerequisite is set.

Git for Windows has recently (unintentionally) shipped a change where
the iconv(1) binary is not getting installed anymore [1]. And as we use
Git for Windows directly in MSVC+Meson jobs in GitLab CI this has caused
such tests to break. The missing iconv(1) binary is considered a bug
that will be fixed in Git for Windows. But regardless of that it makes
sense to not assume the binary to always exist so that our test suite
passes on platforms that don't have iconv at all.

Extend the ICONV prerequisite so that we know to skip tests in case the
iconv(1) binary doesn't exist. We'll adapt tests that are currently
broken in subsequent commits.

[1]: https://github.com/git-for-windows/git/issues/6083

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/test-lib.sh