Merge branch 'rs/grep-h-c'
authorJunio C Hamano <gitster@pobox.com>
Tue, 18 Mar 2014 20:51:20 +0000 (13:51 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 18 Mar 2014 20:51:20 +0000 (13:51 -0700)
"git grep" learns to handle combination of "-h (no header)" and "-c
(counts)".

* rs/grep-h-c:
grep: support -h (no header) with --count
t7810: add missing variables to tests in loop

grep.c
t/t7810-grep.sh
diff --git a/grep.c b/grep.c
index f5101f7218962f026aff7dd2d891cf7bc010a9ea..4aef0a69d084deee61486e43bc62ae2da6b6b440 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -1562,8 +1562,11 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle
         */
        if (opt->count && count) {
                char buf[32];
-               output_color(opt, gs->name, strlen(gs->name), opt->color_filename);
-               output_sep(opt, ':');
+               if (opt->pathname) {
+                       output_color(opt, gs->name, strlen(gs->name),
+                                    opt->color_filename);
+                       output_sep(opt, ':');
+               }
                snprintf(buf, sizeof(buf), "%u\n", count);
                opt->output(opt, buf, strlen(buf));
                return 1;
index f698001c996ea20847c574f04dad9a65684f324f..63b303924307ad3a1d0658ec3b69a3ebf9e5670e 100755 (executable)
@@ -105,7 +105,7 @@ do
 
        test_expect_success "grep -w $L (w)" '
                : >expected &&
-               test_must_fail git grep -n -w -e "^w" >actual &&
+               test_must_fail git grep -n -w -e "^w" $H >actual &&
                test_cmp expected actual
        '
 
@@ -240,92 +240,104 @@ do
                test_cmp expected actual
        '
        test_expect_success "grep $L with grep.extendedRegexp=false" '
-               echo "ab:a+bc" >expected &&
-               git -c grep.extendedRegexp=false grep "a+b*c" ab >actual &&
+               echo "${HC}ab:a+bc" >expected &&
+               git -c grep.extendedRegexp=false grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.extendedRegexp=true" '
-               echo "ab:abc" >expected &&
-               git -c grep.extendedRegexp=true grep "a+b*c" ab >actual &&
+               echo "${HC}ab:abc" >expected &&
+               git -c grep.extendedRegexp=true grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.patterntype=basic" '
-               echo "ab:a+bc" >expected &&
-               git -c grep.patterntype=basic grep "a+b*c" ab >actual &&
+               echo "${HC}ab:a+bc" >expected &&
+               git -c grep.patterntype=basic grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.patterntype=extended" '
-               echo "ab:abc" >expected &&
-               git -c grep.patterntype=extended grep "a+b*c" ab >actual &&
+               echo "${HC}ab:abc" >expected &&
+               git -c grep.patterntype=extended grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.patterntype=fixed" '
-               echo "ab:a+b*c" >expected &&
-               git -c grep.patterntype=fixed grep "a+b*c" ab >actual &&
+               echo "${HC}ab:a+b*c" >expected &&
+               git -c grep.patterntype=fixed grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success LIBPCRE "grep $L with grep.patterntype=perl" '
-               echo "ab:a+b*c" >expected &&
-               git -c grep.patterntype=perl grep "a\x{2b}b\x{2a}c" ab >actual &&
+               echo "${HC}ab:a+b*c" >expected &&
+               git -c grep.patterntype=perl grep "a\x{2b}b\x{2a}c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.patternType=default and grep.extendedRegexp=true" '
-               echo "ab:abc" >expected &&
+               echo "${HC}ab:abc" >expected &&
                git \
                        -c grep.patternType=default \
                        -c grep.extendedRegexp=true \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
        test_expect_success "grep $L with grep.extendedRegexp=true and grep.patternType=default" '
-               echo "ab:abc" >expected &&
+               echo "${HC}ab:abc" >expected &&
                git \
                        -c grep.extendedRegexp=true \
                        -c grep.patternType=default \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
-       test_expect_success 'grep $L with grep.patternType=extended and grep.extendedRegexp=false' '
-               echo "ab:abc" >expected &&
+       test_expect_success "grep $L with grep.patternType=extended and grep.extendedRegexp=false" '
+               echo "${HC}ab:abc" >expected &&
                git \
                        -c grep.patternType=extended \
                        -c grep.extendedRegexp=false \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
-       test_expect_success 'grep $L with grep.patternType=basic and grep.extendedRegexp=true' '
-               echo "ab:a+bc" >expected &&
+       test_expect_success "grep $L with grep.patternType=basic and grep.extendedRegexp=true" '
+               echo "${HC}ab:a+bc" >expected &&
                git \
                        -c grep.patternType=basic \
                        -c grep.extendedRegexp=true \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
-       test_expect_success 'grep $L with grep.extendedRegexp=false and grep.patternType=extended' '
-               echo "ab:abc" >expected &&
+       test_expect_success "grep $L with grep.extendedRegexp=false and grep.patternType=extended" '
+               echo "${HC}ab:abc" >expected &&
                git \
                        -c grep.extendedRegexp=false \
                        -c grep.patternType=extended \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
                test_cmp expected actual
        '
 
-       test_expect_success 'grep $L with grep.extendedRegexp=true and grep.patternType=basic' '
-               echo "ab:a+bc" >expected &&
+       test_expect_success "grep $L with grep.extendedRegexp=true and grep.patternType=basic" '
+               echo "${HC}ab:a+bc" >expected &&
                git \
                        -c grep.extendedRegexp=true \
                        -c grep.patternType=basic \
-                       grep "a+b*c" ab >actual &&
+                       grep "a+b*c" $H ab >actual &&
+               test_cmp expected actual
+       '
+
+       test_expect_success "grep --count $L" '
+               echo ${HC}ab:3 >expected &&
+               git grep --count -e b $H -- ab >actual &&
+               test_cmp expected actual
+       '
+
+       test_expect_success "grep --count -h $L" '
+               echo 3 >expected &&
+               git grep --count -h -e b $H -- ab >actual &&
                test_cmp expected actual
        '
 done