Merge branch 'jk/grep-e-could-be-extended-beyond-posix' into maint
authorJunio C Hamano <gitster@pobox.com>
Tue, 31 Jan 2017 21:32:09 +0000 (13:32 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 31 Jan 2017 21:32:09 +0000 (13:32 -0800)
Tighten a test to avoid mistaking an extended ERE regexp engine as
a PRE regexp engine.

* jk/grep-e-could-be-extended-beyond-posix:
t7810: avoid assumption about invalid regex syntax

1  2 
t/t7810-grep.sh
diff --combined t/t7810-grep.sh
index de2405ccba29016d2b83e16482bcfcbe70429e46,d69f76bf906e7b302f4f430adfd8c55589ef1260..19f0108f8a2c67c518a92d996be7a335dbb69af2
@@@ -9,9 -9,7 +9,9 @@@ test_description='git grep various
  . ./test-lib.sh
  
  cat >hello.c <<EOF
 +#include <assert.h>
  #include <stdio.h>
 +
  int main(int argc, const char **argv)
  {
        printf("Hello world.\n");
@@@ -39,6 -37,10 +39,10 @@@ test_expect_success setup 
                echo "a+bc"
                echo "abc"
        } >ab &&
+       {
+               echo d &&
+               echo 0
+       } >d0 &&
        echo vvv >v &&
        echo ww w >w &&
        echo x x xx x >x &&
@@@ -177,7 -179,7 +181,7 @@@ d
  
        test_expect_success "grep -c $L (no /dev/null)" '
                ! git grep -c test $H | grep /dev/null
 -        '
 +      '
  
        test_expect_success "grep --max-depth -1 $L" '
                {
@@@ -355,7 -357,7 +359,7 @@@ test_expect_success 'grep -l -C' 
  cat >expected <<EOF
  file:5
  EOF
 -test_expect_success 'grep -l -C' '
 +test_expect_success 'grep -c -C' '
        git grep -c -C1 foo >actual &&
        test_cmp expected actual
  '
@@@ -581,7 -583,7 +585,7 @@@ test_expect_success 'log grep (9)' 
  '
  
  test_expect_success 'log grep (9)' '
 -      git log -g --grep-reflog="commit: third" --author="non-existant" --pretty=tformat:%s >actual &&
 +      git log -g --grep-reflog="commit: third" --author="non-existent" --pretty=tformat:%s >actual &&
        : >expect &&
        test_cmp expect actual
  '
@@@ -717,7 -719,6 +721,7 @@@ test_expect_success 'grep -p' 
  
  cat >expected <<EOF
  hello.c-#include <stdio.h>
 +hello.c-
  hello.c=int main(int argc, const char **argv)
  hello.c-{
  hello.c-      printf("Hello world.\n");
@@@ -743,16 -744,6 +747,16 @@@ test_expect_success 'grep -W' 
        test_cmp expected actual
  '
  
 +cat >expected <<EOF
 +hello.c-#include <assert.h>
 +hello.c:#include <stdio.h>
 +EOF
 +
 +test_expect_success 'grep -W shows no trailing empty lines' '
 +      git grep -W stdio >actual &&
 +      test_cmp expected actual
 +'
 +
  cat >expected <<EOF
  hello.c=      printf("Hello world.\n");
  hello.c:      return 0;
@@@ -1105,36 -1096,36 +1109,36 @@@ test_expect_success 'grep pattern with 
  '
  
  test_expect_success 'grep -G -F -P -E pattern' '
-       >empty &&
-       test_must_fail git grep -G -F -P -E "a\x{2b}b\x{2a}c" ab >actual &&
-       test_cmp empty actual
+       echo "d0:d" >expected &&
+       git grep -G -F -P -E "[\d]" d0 >actual &&
+       test_cmp expected actual
  '
  
  test_expect_success 'grep pattern with grep.patternType=fixed, =basic, =perl, =extended' '
-       >empty &&
-       test_must_fail git \
+       echo "d0:d" >expected &&
+       git \
                -c grep.patterntype=fixed \
                -c grep.patterntype=basic \
                -c grep.patterntype=perl \
                -c grep.patterntype=extended \
-               grep "a\x{2b}b\x{2a}c" ab >actual &&
-       test_cmp empty actual
+               grep "[\d]" d0 >actual &&
+       test_cmp expected actual
  '
  
  test_expect_success LIBPCRE 'grep -G -F -E -P pattern' '
-       echo "ab:a+b*c" >expected &&
-       git grep -G -F -E -P "a\x{2b}b\x{2a}c" ab >actual &&
+       echo "d0:0" >expected &&
+       git grep -G -F -E -P "[\d]" d0 >actual &&
        test_cmp expected actual
  '
  
  test_expect_success LIBPCRE 'grep pattern with grep.patternType=fixed, =basic, =extended, =perl' '
-       echo "ab:a+b*c" >expected &&
+       echo "d0:0" >expected &&
        git \
                -c grep.patterntype=fixed \
                -c grep.patterntype=basic \
                -c grep.patterntype=extended \
                -c grep.patterntype=perl \
-               grep "a\x{2b}b\x{2a}c" ab >actual &&
+               grep "[\d]" d0 >actual &&
        test_cmp expected actual
  '
  
@@@ -1245,8 -1236,8 +1249,8 @@@ test_expect_success 'grep --heading' 
  
  cat >expected <<EOF
  <BOLD;GREEN>hello.c<RESET>
 -2:int main(int argc, const <BLACK;BYELLOW>char<RESET> **argv)
 -6:    /* <BLACK;BYELLOW>char<RESET> ?? */
 +4:int main(int argc, const <BLACK;BYELLOW>char<RESET> **argv)
 +8:    /* <BLACK;BYELLOW>char<RESET> ?? */
  
  <BOLD;GREEN>hello_world<RESET>
  3:Hel<BLACK;BYELLOW>lo_w<RESET>orld
@@@ -1353,7 -1344,7 +1357,7 @@@ test_expect_success 'grep --color -e A 
  '
  
  cat >expected <<EOF
 -hello.c-#include <stdio.h>
 +hello.c-
  hello.c=int main(int argc, const char **argv)
  hello.c-{
  hello.c:      pr<RED>int<RESET>f("<RED>Hello<RESET> world.\n");
@@@ -1377,62 -1368,4 +1381,62 @@@ test_expect_success 'grep --color -e A 
        test_cmp expected actual
  '
  
 +test_expect_success 'grep can find things only in the work tree' '
 +      : >work-tree-only &&
 +      git add work-tree-only &&
 +      test_when_finished "git rm -f work-tree-only" &&
 +      echo "find in work tree" >work-tree-only &&
 +      git grep --quiet "find in work tree" &&
 +      test_must_fail git grep --quiet --cached "find in work tree" &&
 +      test_must_fail git grep --quiet "find in work tree" HEAD
 +'
 +
 +test_expect_success 'grep can find things only in the work tree (i-t-a)' '
 +      echo "intend to add this" >intend-to-add &&
 +      git add -N intend-to-add &&
 +      test_when_finished "git rm -f intend-to-add" &&
 +      git grep --quiet "intend to add this" &&
 +      test_must_fail git grep --quiet --cached "intend to add this" &&
 +      test_must_fail git grep --quiet "intend to add this" HEAD
 +'
 +
 +test_expect_success 'grep does not search work tree with assume unchanged' '
 +      echo "intend to add this" >intend-to-add &&
 +      git add -N intend-to-add &&
 +      git update-index --assume-unchanged intend-to-add &&
 +      test_when_finished "git rm -f intend-to-add" &&
 +      test_must_fail git grep --quiet "intend to add this" &&
 +      test_must_fail git grep --quiet --cached "intend to add this" &&
 +      test_must_fail git grep --quiet "intend to add this" HEAD
 +'
 +
 +test_expect_success 'grep can find things only in the index' '
 +      echo "only in the index" >cache-this &&
 +      git add cache-this &&
 +      rm cache-this &&
 +      test_when_finished "git rm --cached cache-this" &&
 +      test_must_fail git grep --quiet "only in the index" &&
 +      git grep --quiet --cached "only in the index" &&
 +      test_must_fail git grep --quiet "only in the index" HEAD
 +'
 +
 +test_expect_success 'grep does not report i-t-a with -L --cached' '
 +      echo "intend to add this" >intend-to-add &&
 +      git add -N intend-to-add &&
 +      test_when_finished "git rm -f intend-to-add" &&
 +      git ls-files | grep -v "^intend-to-add\$" >expected &&
 +      git grep -L --cached "nonexistent_string" >actual &&
 +      test_cmp expected actual
 +'
 +
 +test_expect_success 'grep does not report i-t-a and assume unchanged with -L' '
 +      echo "intend to add this" >intend-to-add-assume-unchanged &&
 +      git add -N intend-to-add-assume-unchanged &&
 +      test_when_finished "git rm -f intend-to-add-assume-unchanged" &&
 +      git update-index --assume-unchanged intend-to-add-assume-unchanged &&
 +      git ls-files | grep -v "^intend-to-add-assume-unchanged\$" >expected &&
 +      git grep -L "nonexistent_string" >actual &&
 +      test_cmp expected actual
 +'
 +
  test_done