Imported Upstream version 2.24.1
[platform/upstream/git.git] / t / t4210-log-i18n.sh
index 9110404..6e61f57 100755 (executable)
@@ -1,12 +1,15 @@
 #!/bin/sh
 
 test_description='test log with i18n features'
-. ./test-lib.sh
+. ./lib-gettext.sh
 
 # two forms of é
 utf8_e=$(printf '\303\251')
 latin1_e=$(printf '\351')
 
+# invalid UTF-8
+invalid_e=$(printf '\303\50)') # ")" at end to close opening "("
+
 test_expect_success 'create commits in different encodings' '
        test_tick &&
        cat >msg <<-EOF &&
@@ -34,7 +37,7 @@ test_expect_success 'log --grep searches in log output encoding (utf8)' '
        test_cmp expect actual
 '
 
-test_expect_success NOT_MINGW 'log --grep searches in log output encoding (latin1)' '
+test_expect_success !MINGW 'log --grep searches in log output encoding (latin1)' '
        cat >expect <<-\EOF &&
        latin1
        utf8
@@ -43,16 +46,48 @@ test_expect_success NOT_MINGW 'log --grep searches in log output encoding (latin
        test_cmp expect actual
 '
 
-test_expect_success NOT_MINGW 'log --grep does not find non-reencoded values (utf8)' '
-       >expect &&
+test_expect_success !MINGW 'log --grep does not find non-reencoded values (utf8)' '
        git log --encoding=utf8 --format=%s --grep=$latin1_e >actual &&
-       test_cmp expect actual
+       test_must_be_empty actual
 '
 
-test_expect_success 'log --grep does not find non-reencoded values (latin1)' '
-       >expect &&
+test_expect_success !MINGW 'log --grep does not find non-reencoded values (latin1)' '
        git log --encoding=ISO-8859-1 --format=%s --grep=$utf8_e >actual &&
-       test_cmp expect actual
+       test_must_be_empty actual
 '
 
+for engine in fixed basic extended perl
+do
+       prereq=
+       if test $engine = "perl"
+       then
+               prereq="PCRE"
+       else
+               prereq=""
+       fi
+       force_regex=
+       if test $engine != "fixed"
+       then
+           force_regex=.*
+       fi
+       test_expect_success !MINGW,GETTEXT_LOCALE,$prereq "-c grep.patternType=$engine log --grep does not find non-reencoded values (latin1 + locale)" "
+               cat >expect <<-\EOF &&
+               latin1
+               utf8
+               EOF
+               LC_ALL=\"$is_IS_locale\" git -c grep.patternType=$engine log --encoding=ISO-8859-1 --format=%s --grep=\"$force_regex$latin1_e\" >actual &&
+               test_cmp expect actual
+       "
+
+       test_expect_success !MINGW,GETTEXT_LOCALE,$prereq "-c grep.patternType=$engine log --grep does not find non-reencoded values (latin1 + locale)" "
+               LC_ALL=\"$is_IS_locale\" git -c grep.patternType=$engine log --encoding=ISO-8859-1 --format=%s --grep=\"$force_regex$utf8_e\" >actual &&
+               test_must_be_empty actual
+       "
+
+       test_expect_success !MINGW,GETTEXT_LOCALE,$prereq "-c grep.patternType=$engine log --grep does not die on invalid UTF-8 value (latin1 + locale + invalid needle)" "
+               LC_ALL=\"$is_IS_locale\" git -c grep.patternType=$engine log --encoding=ISO-8859-1 --format=%s --grep=\"$force_regex$invalid_e\" >actual &&
+               test_must_be_empty actual
+       "
+done
+
 test_done