grep: Add basic tests

This modest patch adds simple tests for git grep -P/--perl-regexp and
its interoperation with -i and -w.

Tests are only enabled when prerequisite LIBPCRE is defined (it's
automatically set based on USE_LIBPCRE in test-lib.sh).

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michał Kiedrowicz 2011-05-09 23:52:07 +02:00 committed by Junio C Hamano
parent a119f91e57
commit 8f852ce613
3 changed files with 44 additions and 0 deletions

View File

@ -587,6 +587,11 @@ use these, and "test_set_prereq" for how to define your own.
Test is not run by root user, and an attempt to write to an Test is not run by root user, and an attempt to write to an
unwritable file is expected to fail correctly. unwritable file is expected to fail correctly.
- LIBPCRE
Git was compiled with USE_LIBPCRE=YesPlease. Wrap any tests
that use git-grep --perl-regexp or git-grep -P in these.
Tips for Writing Tests Tips for Writing Tests
---------------------- ----------------------

View File

@ -26,6 +26,12 @@ test_expect_success setup '
echo foo mmap bar_mmap echo foo mmap bar_mmap
echo foo_mmap bar mmap baz echo foo_mmap bar mmap baz
} >file && } >file &&
{
echo Hello world
echo HeLLo world
echo Hello_world
echo HeLLo_world
} >hello_world &&
echo vvv >v && echo vvv >v &&
echo ww w >w && echo ww w >w &&
echo x x xx x >x && echo x x xx x >x &&
@ -599,4 +605,36 @@ test_expect_success 'grep -e -- -- path' '
test_cmp expected actual test_cmp expected actual
' '
cat >expected <<EOF
hello.c:int main(int argc, const char **argv)
hello.c: printf("Hello world.\n");
EOF
test_expect_success LIBPCRE 'grep --perl-regexp pattern' '
git grep --perl-regexp "\p{Ps}.*?\p{Pe}" hello.c >actual &&
test_cmp expected actual
'
test_expect_success LIBPCRE 'grep -P pattern' '
git grep -P "\p{Ps}.*?\p{Pe}" hello.c >actual &&
test_cmp expected actual
'
test_expect_success LIBPCRE 'grep -P -i pattern' '
{
echo "hello.c: printf(\"Hello world.\n\");"
} >expected &&
git grep -P -i "PRINTF\([^\d]+\)" hello.c >actual &&
test_cmp expected actual
'
test_expect_success LIBPCRE 'grep -P -w pattern' '
{
echo "hello_world:Hello world"
echo "hello_world:HeLLo world"
} >expected &&
git grep -P -w "He((?i)ll)o" hello_world >actual &&
test_cmp expected actual
'
test_done test_done

View File

@ -1067,6 +1067,7 @@ esac
test -z "$NO_PERL" && test_set_prereq PERL test -z "$NO_PERL" && test_set_prereq PERL
test -z "$NO_PYTHON" && test_set_prereq PYTHON test -z "$NO_PYTHON" && test_set_prereq PYTHON
test -n "$USE_LIBPCRE" && test_set_prereq LIBPCRE
# Can we rely on git's output in the C locale? # Can we rely on git's output in the C locale?
if test -n "$GETTEXT_POISON" if test -n "$GETTEXT_POISON"