git/t/t7811-grep-open.sh
Brandon Casey 6a1b3fc783 t/t7811-grep-open.sh: ensure fake "less" is made executable
The fake "less" script was not being made executable.  This can cause the
tests that follow to fail.  This failure is not apparent on platforms which
have DEFAULT_PAGER set to the string "less", since lib-pager.sh will have
set the $less variable to "less" and the SIMPLEPAGER prerequisite will have
been set, and so the "less" script will have already been created properly
and made executable in test 2 'git grep -O'.  On platforms which set
DEFAULT_PAGER to something like "more", no such script will have been
previously created, and tests 7 and 8 will fail.

So, add a call to chmod to make the fake "less" script executable.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-21 11:11:48 -07:00

158 lines
2.9 KiB
Bash
Executable file

#!/bin/sh
test_description='git grep --open-files-in-pager
'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-pager.sh
unset PAGER GIT_PAGER
test_expect_success 'setup' '
test_commit initial grep.h "
enum grep_pat_token {
GREP_PATTERN,
GREP_PATTERN_HEAD,
GREP_PATTERN_BODY,
GREP_AND,
GREP_OPEN_PAREN,
GREP_CLOSE_PAREN,
GREP_NOT,
GREP_OR,
};" &&
test_commit add-user revision.c "
}
if (seen_dashdash)
read_pathspec_from_stdin(revs, &sb, prune);
strbuf_release(&sb);
}
static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token what)
{
append_grep_pattern(&revs->grep_filter, ptn, \"command line\", 0, what);
" &&
mkdir subdir &&
test_commit subdir subdir/grep.c "enum grep_pat_token" &&
test_commit uninteresting unrelated "hello, world" &&
echo GREP_PATTERN >untracked
'
test_expect_success SIMPLEPAGER 'git grep -O' '
cat >$less <<-\EOF &&
#!/bin/sh
printf "%s\n" "$@" >pager-args
EOF
chmod +x $less &&
cat >expect.less <<-\EOF &&
+/*GREP_PATTERN
grep.h
EOF
echo grep.h >expect.notless &&
>empty &&
PATH=.:$PATH git grep -O GREP_PATTERN >out &&
{
test_cmp expect.less pager-args ||
test_cmp expect.notless pager-args
} &&
test_cmp empty out
'
test_expect_success 'git grep -O --cached' '
test_must_fail git grep --cached -O GREP_PATTERN >out 2>msg &&
grep open-files-in-pager msg
'
test_expect_success 'git grep -O --no-index' '
rm -f expect.less pager-args out &&
cat >expect <<-\EOF &&
grep.h
untracked
EOF
>empty &&
(
GIT_PAGER='\''printf "%s\n" >pager-args'\'' &&
export GIT_PAGER &&
git grep --no-index -O GREP_PATTERN >out
) &&
test_cmp expect pager-args &&
test_cmp empty out
'
test_expect_success 'setup: fake "less"' '
cat >less <<-\EOF &&
#!/bin/sh
printf "%s\n" "$@" >actual
EOF
chmod +x less
'
test_expect_success 'git grep -O jumps to line in less' '
cat >expect <<-\EOF &&
+/*GREP_PATTERN
grep.h
EOF
>empty &&
GIT_PAGER=./less git grep -O GREP_PATTERN >out &&
test_cmp expect actual &&
test_cmp empty out &&
git grep -O./less GREP_PATTERN >out2 &&
test_cmp expect actual &&
test_cmp empty out2
'
test_expect_success 'modified file' '
rm -f actual &&
cat >less <<-\EOF &&
#!/bin/sh
printf "%s\n" "$@" >actual
EOF
chmod +x $less &&
cat >expect <<-\EOF &&
+/*enum grep_pat_token
grep.h
revision.c
subdir/grep.c
unrelated
EOF
>empty &&
echo "enum grep_pat_token" >unrelated &&
test_when_finished "git checkout HEAD unrelated" &&
GIT_PAGER=./less git grep -F -O "enum grep_pat_token" >out &&
test_cmp expect actual &&
test_cmp empty out
'
test_expect_success 'run from subdir' '
rm -f actual &&
echo grep.c >expect &&
>empty &&
(
cd subdir &&
export GIT_PAGER &&
GIT_PAGER='\''printf "%s\n" >../args'\'' &&
git grep -O "enum grep_pat_token" >../out &&
git grep -O"pwd >../dir; :" "enum grep_pat_token" >../out2
) &&
case $(cat dir) in
*subdir)
: good
;;
*)
false
;;
esac &&
test_cmp expect args &&
test_cmp empty out &&
test_cmp empty out2
'
test_done