]> git.ipfire.org Git - thirdparty/git.git/commit
log tests: test regex backends in "--encode=<enc>" tests
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 27 Jun 2019 23:39:04 +0000 (01:39 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 28 Jun 2019 16:11:09 +0000 (09:11 -0700)
commit4e2443b1813dded87c9cc1138f22af73748022b8
tree6b3939c932a90bb10bee05f7c1f8e3f7867b7b53
parent8dca754b1e874719a732bc9ab7b0e14b21b1bc10
log tests: test regex backends in "--encode=<enc>" tests

Improve the tests added in 04deccda11 ("log: re-encode commit messages
before grepping", 2013-02-11) to test the regex backends. Those tests
never worked as advertised, due to the is_fixed() optimization in
grep.c (which was in place at the time), and the needle in the tests
being a fixed string.

We'd thus always use the "fixed" backend during the tests, which would
use the kwset() backend. This backend liberally accepts any garbage
input, so invalid encodings would be silently accepted.

In a follow-up commit we'll fix this bug, this test just demonstrates
the existing issue.

In practice this issue happened on Windows, see [1], but due to the
structure of the existing tests & how liberal the kwset code is about
garbage we missed this.

Cover this blind spot by testing all our regex engines. The PCRE
backend will spot these invalid encodings. It's possible that this
test breaks the "basic" and "extended" backends on some systems that
are more anal than glibc about the encoding of locale issues with
POSIX functions that I can remember, but PCRE is more careful about
the validation.

1. https://public-inbox.org/git/nycvar.QRO.7.76.6.1906271113090.44@tvgsbejvaqbjf.bet/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4210-log-i18n.sh