Merge branch 'ab/grep-preparatory-cleanup'
[gitweb.git] / t / t7814-grep-recurse-submodules.sh
index 1472855e1d0e98f702f11eaed791519cf37e0a62..3a58197f472f38c320de33fa82896c0a77d125ae 100755 (executable)
@@ -313,4 +313,53 @@ test_incompatible_with_recurse_submodules ()
 test_incompatible_with_recurse_submodules --untracked
 test_incompatible_with_recurse_submodules --no-index
 
+test_expect_success 'grep --recurse-submodules should pass the pattern type along' '
+       # Fixed
+       test_must_fail git grep -F --recurse-submodules -e "(.|.)[\d]" &&
+       test_must_fail git -c grep.patternType=fixed grep --recurse-submodules -e "(.|.)[\d]" &&
+
+       # Basic
+       git grep -G --recurse-submodules -e "(.|.)[\d]" >actual &&
+       cat >expect <<-\EOF &&
+       a:(1|2)d(3|4)
+       submodule/a:(1|2)d(3|4)
+       submodule/sub/a:(1|2)d(3|4)
+       EOF
+       test_cmp expect actual &&
+       git -c grep.patternType=basic grep --recurse-submodules -e "(.|.)[\d]" >actual &&
+       test_cmp expect actual &&
+
+       # Extended
+       git grep -E --recurse-submodules -e "(.|.)[\d]" >actual &&
+       cat >expect <<-\EOF &&
+       .gitmodules:[submodule "submodule"]
+       .gitmodules:    path = submodule
+       .gitmodules:    url = ./submodule
+       a:(1|2)d(3|4)
+       submodule/.gitmodules:[submodule "sub"]
+       submodule/a:(1|2)d(3|4)
+       submodule/sub/a:(1|2)d(3|4)
+       EOF
+       test_cmp expect actual &&
+       git -c grep.patternType=extended grep --recurse-submodules -e "(.|.)[\d]" >actual &&
+       test_cmp expect actual &&
+       git -c grep.extendedRegexp=true grep --recurse-submodules -e "(.|.)[\d]" >actual &&
+       test_cmp expect actual &&
+
+       # Perl
+       if test_have_prereq PCRE
+       then
+               git grep -P --recurse-submodules -e "(.|.)[\d]" >actual &&
+               cat >expect <<-\EOF &&
+               a:(1|2)d(3|4)
+               b/b:(3|4)
+               submodule/a:(1|2)d(3|4)
+               submodule/sub/a:(1|2)d(3|4)
+               EOF
+               test_cmp expect actual &&
+               git -c grep.patternType=perl grep --recurse-submodules -e "(.|.)[\d]" >actual &&
+               test_cmp expect actual
+       fi
+'
+
 test_done