# 2: expected completion
test_completion ()
{
- test $# -gt 1 && echo "$2" > expected
+ if test $# -gt 1
+ then
+ printf '%s\n' "$2" >expected
+ else
+ sed -e 's/Z$//' >expected
+ fi &&
run_completion "$1" &&
test_cmp expected out
}
-# Like test_completion, but reads expectation from stdin,
-# which is convenient when it is multiline.
-test_completion_long ()
-{
- sed -e 's/Z$//' >expected &&
- test_completion "$1"
-}
-
newline=$'\n'
test_expect_success '__gitcomp - trailing space - options' '
'
test_expect_success 'double dash "git" itself' '
- test_completion_long "git --" <<-\EOF
+ test_completion "git --" <<-\EOF
--paginate Z
--no-pager Z
--git-dir=
'
test_expect_success 'double dash "git checkout"' '
- test_completion_long "git checkout --" <<-\EOF
+ test_completion "git checkout --" <<-\EOF
--quiet Z
--ours Z
--theirs Z
test_expect_success 'general options' '
test_completion "git --ver" "--version " &&
test_completion "git --hel" "--help " &&
- test_completion_long "git --exe" <<-\EOF &&
+ test_completion "git --exe" <<-\EOF &&
--exec-path Z
--exec-path=
EOF
'
test_expect_success 'checkout completes ref names' '
- test_completion_long "git checkout m" <<-\EOF
+ test_completion "git checkout m" <<-\EOF
master Z
mybranch Z
mytag Z
'
test_expect_success 'show completes all refs' '
- test_completion_long "git show m" <<-\EOF
+ test_completion "git show m" <<-\EOF
master Z
mybranch Z
mytag Z
'
test_expect_success '<ref>: completes paths' '
- test_completion_long "git show mytag:f" <<-\EOF
+ test_completion "git show mytag:f" <<-\EOF
file1 Z
file2 Z
EOF
echo content >"name with spaces" &&
git add . &&
git commit -m spaces &&
- test_completion_long "git show HEAD:nam" <<-\EOF
+ test_completion "git show HEAD:nam" <<-\EOF
name with spaces Z
EOF
'
echo content >"name with \${meta}" &&
git add . &&
git commit -m meta &&
- test_completion_long "git show HEAD:nam" <<-\EOF
+ test_completion "git show HEAD:nam" <<-\EOF
name with ${meta} Z
name with spaces Z
EOF