f98548764e
On IRIX 6.5, the printf utility in /usr/bin does not appear to handle the \ddd notation according to POSIX. This printf appears to halt processing of the string argument and ignore any additional characters in the string. Work around this flaw by replacing the \000's with 'Q' and using the q_to_nul helper function provided by test-lib.sh This problem with printf is not apparent when using the Bash shell since Bash implements a POSIX compatible printf function internally. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
103 lines
1.9 KiB
Bash
Executable File
103 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git grep in binary files'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' "
|
|
echo 'binaryQfile' | q_to_nul >a &&
|
|
git add a &&
|
|
git commit -m.
|
|
"
|
|
|
|
test_expect_success 'git grep ina a' '
|
|
echo Binary file a matches >expect &&
|
|
git grep ina a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -ah ina a' '
|
|
git grep -ah ina a >actual &&
|
|
test_cmp a actual
|
|
'
|
|
|
|
test_expect_success 'git grep -I ina a' '
|
|
: >expect &&
|
|
test_must_fail git grep -I ina a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -c ina a' '
|
|
echo a:1 >expect &&
|
|
git grep -c ina a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -l ina a' '
|
|
echo a >expect &&
|
|
git grep -l ina a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -L bar a' '
|
|
echo a >expect &&
|
|
git grep -L bar a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -q ina a' '
|
|
: >expect &&
|
|
git grep -q ina a >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'git grep -F ile a' '
|
|
git grep -F ile a
|
|
'
|
|
|
|
test_expect_success 'git grep -Fi iLE a' '
|
|
git grep -Fi iLE a
|
|
'
|
|
|
|
# This test actually passes on platforms where regexec() supports the
|
|
# flag REG_STARTEND.
|
|
test_expect_success 'git grep ile a' '
|
|
git grep ile a
|
|
'
|
|
|
|
test_expect_failure 'git grep .fi a' '
|
|
git grep .fi a
|
|
'
|
|
|
|
test_expect_success 'git grep -F y<NUL>f a' "
|
|
printf 'yQf' | q_to_nul >f &&
|
|
git grep -f f -F a
|
|
"
|
|
|
|
test_expect_success 'git grep -F y<NUL>x a' "
|
|
printf 'yQx' | q_to_nul >f &&
|
|
test_must_fail git grep -f f -F a
|
|
"
|
|
|
|
test_expect_success 'git grep -Fi Y<NUL>f a' "
|
|
printf 'YQf' | q_to_nul >f &&
|
|
git grep -f f -Fi a
|
|
"
|
|
|
|
test_expect_failure 'git grep -Fi Y<NUL>x a' "
|
|
printf 'YQx' | q_to_nul >f &&
|
|
test_must_fail git grep -f f -Fi a
|
|
"
|
|
|
|
test_expect_success 'git grep y<NUL>f a' "
|
|
printf 'yQf' | q_to_nul >f &&
|
|
git grep -f f a
|
|
"
|
|
|
|
test_expect_failure 'git grep y<NUL>x a' "
|
|
printf 'yQx' | q_to_nul >f &&
|
|
test_must_fail git grep -f f a
|
|
"
|
|
|
|
test_done
|