grep: add tests for grep pattern types being passed to submodules

Add testing for grep pattern types being correctly passed to submodules. The pattern "(.|.)[\d]" matches differently under fixed (not at all), and then matches different lines under basic/extended & perl regular expressions, so this change asserts that the pattern type is passed along correctly. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed May 20, 2017 at 21:42 UTC 5ee6f1a21b60be8a7c7d24ad6aa60939ca5efbda
1 file changed +49
t/t7814-grep-recurse-submodules.sh
+49
@@ -313,4 +313,53 @@ test_incompatible_with_recurse_submodules ()
313 test_incompatible_with_recurse_submodules --untracked
314 test_incompatible_with_recurse_submodules --no-index
315
316 +test_expect_success 'grep --recurse-submodules should pass the pattern type along' '
317 + # Fixed
318 + test_must_fail git grep -F --recurse-submodules -e "(.|.)[\d]" &&
319 + test_must_fail git -c grep.patternType=fixed grep --recurse-submodules -e "(.|.)[\d]" &&
320 +
321 + # Basic
322 + git grep -G --recurse-submodules -e "(.|.)[\d]" >actual &&
323 + cat >expect <<-\EOF &&
324 + a:(1|2)d(3|4)
325 + submodule/a:(1|2)d(3|4)
326 + submodule/sub/a:(1|2)d(3|4)
327 + EOF
328 + test_cmp expect actual &&
329 + git -c grep.patternType=basic grep --recurse-submodules -e "(.|.)[\d]" >actual &&
330 + test_cmp expect actual &&
331 +
332 + # Extended
333 + git grep -E --recurse-submodules -e "(.|.)[\d]" >actual &&
334 + cat >expect <<-\EOF &&
335 + .gitmodules:[submodule "submodule"]
336 + .gitmodules: path = submodule
337 + .gitmodules: url = ./submodule
338 + a:(1|2)d(3|4)
339 + submodule/.gitmodules:[submodule "sub"]
340 + submodule/a:(1|2)d(3|4)
341 + submodule/sub/a:(1|2)d(3|4)
342 + EOF
343 + test_cmp expect actual &&
344 + git -c grep.patternType=extended grep --recurse-submodules -e "(.|.)[\d]" >actual &&
345 + test_cmp expect actual &&
346 + git -c grep.extendedRegexp=true grep --recurse-submodules -e "(.|.)[\d]" >actual &&
347 + test_cmp expect actual &&
348 +
349 + # Perl
350 + if test_have_prereq PCRE
351 + then
352 + git grep -P --recurse-submodules -e "(.|.)[\d]" >actual &&
353 + cat >expect <<-\EOF &&
354 + a:(1|2)d(3|4)
355 + b/b:(3|4)
356 + submodule/a:(1|2)d(3|4)
357 + submodule/sub/a:(1|2)d(3|4)
358 + EOF
359 + test_cmp expect actual &&
360 + git -c grep.patternType=perl grep --recurse-submodules -e "(.|.)[\d]" >actual &&
361 + test_cmp expect actual
362 + fi
363 +'
364 +
365 test_done