f4609b896f
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
158 lines
3.1 KiB
Bash
Executable file
158 lines
3.1 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 &&
|
|
|
|
PATH=.:$PATH git grep -O GREP_PATTERN >out &&
|
|
{
|
|
test_cmp expect.less pager-args ||
|
|
test_cmp expect.notless pager-args
|
|
} &&
|
|
test_must_be_empty out
|
|
'
|
|
|
|
test_expect_success 'git grep -O --cached' '
|
|
test_must_fail git grep --cached -O GREP_PATTERN >out 2>msg &&
|
|
test_i18ngrep 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
|
|
|
|
(
|
|
GIT_PAGER='\''printf "%s\n" >pager-args'\'' &&
|
|
export GIT_PAGER &&
|
|
git grep --no-index -O GREP_PATTERN >out
|
|
) &&
|
|
test_cmp expect pager-args &&
|
|
test_must_be_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
|
|
|
|
GIT_PAGER=./less git grep -O GREP_PATTERN >out &&
|
|
test_cmp expect actual &&
|
|
test_must_be_empty out &&
|
|
|
|
git grep -O./less GREP_PATTERN >out2 &&
|
|
test_cmp expect actual &&
|
|
test_must_be_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
|
|
|
|
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_must_be_empty out
|
|
'
|
|
|
|
test_expect_success 'copes with color settings' '
|
|
rm -f actual &&
|
|
echo grep.h >expect &&
|
|
test_config color.grep always &&
|
|
test_config color.grep.filename yellow &&
|
|
test_config color.grep.separator green &&
|
|
git grep -O'\''printf "%s\n" >actual'\'' GREP_AND &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'run from subdir' '
|
|
rm -f actual &&
|
|
echo grep.c >expect &&
|
|
|
|
(
|
|
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_must_be_empty out &&
|
|
test_must_be_empty out2
|
|
'
|
|
|
|
test_done
|