7f5329f46d
The fake "less" script was already created in a previous test titled 'setup: fake "less"', so it is redundant. Additionally, it is broken since the redirection of 'cat' is to a file named 'less', but the chmod operates on the file named by the $less variable which may not contain the value 'less'. So, just remove this code, and rely on the creation of the fake "less" script performed earlier within the test script. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
154 lines
2.9 KiB
Bash
Executable File
154 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 >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
|