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