Signed-off-by: Chris Packham <judge.packham@xxxxxxxxx> --- t/t7820-grep-recursive.sh | 101 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 101 insertions(+), 0 deletions(-) create mode 100644 t/t7820-grep-recursive.sh diff --git a/t/t7820-grep-recursive.sh b/t/t7820-grep-recursive.sh new file mode 100644 index 0000000..4bbd109 --- /dev/null +++ b/t/t7820-grep-recursive.sh @@ -0,0 +1,101 @@ +#!/bin/sh +# +# Copyright (c) 2010 Chris Packham +# + +test_description='git grep --recursive test + +This test checks the ability of git grep to search within submodules when told +to do so with the --recursive option' + +. ./test-lib.sh + +test_expect_success 'setup - initial commit' ' + printf "one two three\nfour five six\n" >t && + git add t && + git commit -m "initial commit" +' +submodurl=$TRASH_DIRECTORY + +test_expect_success 'setup submodules for test' ' + for mod in $(seq 1 5 | sed "s/.*/submodule&/"); do + git submodule add "$submodurl" $mod && + git submodule init $mod + done +' + +test_expect_success 'update data in each submodule' ' + for n in $(seq 1 5); do + (cd submodule$n && + sed -i "s/^four.*/& #$n/" t && + git commit -a -m"update") + done +' + +cat >expected <<EOF +t:four five six +EOF +test_expect_success 'non-recursive grep in base' ' + git grep "five" >actual && + test_cmp expected actual +' + +cat >expected <<EOF +foo/t:four five six +EOF +test_expect_success 'submodule-prefix option' ' + git grep --submodule-prefix=foo/ "five" >actual && + test_cmp expected actual +' + +cat >submodule1/expected <<EOF +t:four five six #1 +EOF +test_expect_success 'non-recursive grep in submodule' ' + ( + cd submodule1 && + git grep "five" >actual && + test_cmp expected actual + ) +' + +cat >expected <<EOF +t:four five six #1 +t:four five six #2 +t:four five six #3 +t:four five six #4 +t:four five six #5 +t:four five six +EOF +test_expect_success 'recursive grep' ' + git grep --recurse-submodules "five" >actual && + test_cmp expected actual +' + +cat >expected <<EOF +t:2:four five six #1 +t:2:four five six #2 +t:2:four five six #3 +t:2:four five six #4 +t:2:four five six #5 +t:2:four five six +EOF +test_expect_success 'recursive grep (with -n)' ' + git grep --recurse-submodules -n "five" >actual && + test_cmp expected actual +' + +cat >expected <<EOF +t +t +t +t +t +t +EOF +test_expect_success 'recursive grep (with -l)' ' + git grep --recurse-submodules -l "five" >actual && + test_cmp expected actual +' + +test_done -- 1.7.3.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html