exclude: fix a bug in prefix compare optimization
[gitweb.git] / t / t9902-completion.sh
index a6eaa15c1cf558c616e3ce9c5f97a9c438c26f5e..256e6a0b3f3d001482cf0a21605f6a860d935d58 100755 (executable)
@@ -63,7 +63,7 @@ run_completion ()
        local _cword
        _words=( $1 )
        (( _cword = ${#_words[@]} - 1 ))
-       _git && print_comp
+       __git_wrap__git_main && print_comp
 }
 
 test_completion ()
@@ -73,6 +73,91 @@ test_completion ()
        test_cmp expected out
 }
 
+newline=$'\n'
+
+test_expect_success '__gitcomp - trailing space - options' '
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       --reuse-message=Z
+       --reedit-message=Z
+       --reset-author Z
+       EOF
+       (
+               local -a COMPREPLY &&
+               cur="--re" &&
+               __gitcomp "--dry-run --reuse-message= --reedit-message=
+                               --reset-author" &&
+               IFS="$newline" &&
+               echo "${COMPREPLY[*]}" > out
+       ) &&
+       test_cmp expected out
+'
+
+test_expect_success '__gitcomp - trailing space - config keys' '
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       branch.Z
+       branch.autosetupmerge Z
+       branch.autosetuprebase Z
+       browser.Z
+       EOF
+       (
+               local -a COMPREPLY &&
+               cur="br" &&
+               __gitcomp "branch. branch.autosetupmerge
+                               branch.autosetuprebase browser." &&
+               IFS="$newline" &&
+               echo "${COMPREPLY[*]}" > out
+       ) &&
+       test_cmp expected out
+'
+
+test_expect_success '__gitcomp - option parameter' '
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       recursive Z
+       resolve Z
+       EOF
+       (
+               local -a COMPREPLY &&
+               cur="--strategy=re" &&
+               __gitcomp "octopus ours recursive resolve subtree
+                       " "" "re" &&
+               IFS="$newline" &&
+               echo "${COMPREPLY[*]}" > out
+       ) &&
+       test_cmp expected out
+'
+
+test_expect_success '__gitcomp - prefix' '
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       branch.maint.merge Z
+       branch.maint.mergeoptions Z
+       EOF
+       (
+               local -a COMPREPLY &&
+               cur="branch.me" &&
+               __gitcomp "remote merge mergeoptions rebase
+                       " "branch.maint." "me" &&
+               IFS="$newline" &&
+               echo "${COMPREPLY[*]}" > out
+       ) &&
+       test_cmp expected out
+'
+
+test_expect_success '__gitcomp - suffix' '
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       branch.master.Z
+       branch.maint.Z
+       EOF
+       (
+               local -a COMPREPLY &&
+               cur="branch.me" &&
+               __gitcomp "master maint next pu
+                       " "branch." "ma" "." &&
+               IFS="$newline" &&
+               echo "${COMPREPLY[*]}" > out
+       ) &&
+       test_cmp expected out
+'
+
 test_expect_success 'basic' '
        run_completion "git \"\"" &&
        # built-in
@@ -94,9 +179,12 @@ test_expect_success 'double dash "git" itself' '
        --bare Z
        --version Z
        --exec-path Z
+       --exec-path=
        --html-path Z
+       --info-path Z
        --work-tree=
        --namespace=
+       --no-replace-objects Z
        --help Z
        EOF
        test_completion "git --"
@@ -117,4 +205,39 @@ test_expect_success 'double dash "git checkout"' '
        test_completion "git checkout --"
 '
 
+test_expect_success 'general options' '
+       test_completion "git --ver" "--version " &&
+       test_completion "git --hel" "--help " &&
+       sed -e "s/Z$//" >expected <<-\EOF &&
+       --exec-path Z
+       --exec-path=
+       EOF
+       test_completion "git --exe" &&
+       test_completion "git --htm" "--html-path " &&
+       test_completion "git --pag" "--paginate " &&
+       test_completion "git --no-p" "--no-pager " &&
+       test_completion "git --git" "--git-dir=" &&
+       test_completion "git --wor" "--work-tree=" &&
+       test_completion "git --nam" "--namespace=" &&
+       test_completion "git --bar" "--bare " &&
+       test_completion "git --inf" "--info-path " &&
+       test_completion "git --no-r" "--no-replace-objects "
+'
+
+test_expect_success 'general options plus command' '
+       test_completion "git --version check" "checkout " &&
+       test_completion "git --paginate check" "checkout " &&
+       test_completion "git --git-dir=foo check" "checkout " &&
+       test_completion "git --bare check" "checkout " &&
+       test_completion "git --help des" "describe " &&
+       test_completion "git --exec-path=foo check" "checkout " &&
+       test_completion "git --html-path check" "checkout " &&
+       test_completion "git --no-pager check" "checkout " &&
+       test_completion "git --work-tree=foo check" "checkout " &&
+       test_completion "git --namespace=foo check" "checkout " &&
+       test_completion "git --paginate check" "checkout " &&
+       test_completion "git --info-path check" "checkout " &&
+       test_completion "git --no-replace-objects check" "checkout "
+'
+
 test_done