]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t7812: expect failure for grep -i with invalid UTF-8 data
authorTodd Zullinger <tmz@pobox.com>
Sat, 30 Nov 2019 00:46:53 +0000 (19:46 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 2 Dec 2019 06:09:07 +0000 (22:09 -0800)
When the 'grep with invalid UTF-8 data' tests were added/adjusted in
8a5999838e (grep: stess test PCRE v2 on invalid UTF-8 data, 2019-07-26)
and 870eea8166 (grep: do not enter PCRE2_UTF mode on fixed matching,
2019-07-26) they lacked a redirect which caused them to falsely succeed
on most systems.  The 'grep -i' test failed on systems where JIT was
disabled as it never reached the portion which was missing the redirect.

A recent patch added the missing redirect and exposed the fact that the
'PCRE v2: grep non-ASCII from invalid UTF-8 data with -i' test fails
regardless of whether JIT is enabled.

Based on the final paragraph in in 870eea8166:

    When grepping a non-ASCII fixed string. This is a more general problem
    that's hard to fix, but we can at least fix the most common case of
    grepping for a fixed string without "-i". I can't think of a reason
    for why we'd turn on PCRE2_UTF when matching byte-for-byte like that.

it seems that we don't expect that the case-insensitive grep will
succeed.  Adjust the test to reflect that expectation.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7812-grep-icase-non-ascii.sh

index c4528432e507018db30d8c8432483c2a4147a899..03dba6685ab7a0fc3d19a48196e5987d714ba62e 100755 (executable)
@@ -76,9 +76,12 @@ test_expect_success GETTEXT_LOCALE,LIBPCRE2 'PCRE v2: grep non-ASCII from invali
 
 test_expect_success GETTEXT_LOCALE,LIBPCRE2 'PCRE v2: grep non-ASCII from invalid UTF-8 data with -i' '
        test_might_fail git grep -hi "Æ" invalid-0x80 >actual &&
-       test_cmp expected actual &&
+       if test -s actual
+       then
+           test_cmp expected actual
+       fi &&
        test_must_fail git grep -hi "(*NO_JIT)Æ" invalid-0x80 >actual &&
-       test_cmp expected actual
+       test_cmp expected actual
 '
 
 test_done