git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] tests: add initial bash completion tests
@ 2012-04-11 21:57 Felipe Contreras
  2012-04-11 23:48 ` Junio C Hamano
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Felipe Contreras @ 2012-04-11 21:57 UTC (permalink / raw)
  To: git
  Cc: Jonathan Nieder, SZEDER Gábor, Junio C Hamano, Thomas Rast,
	Jeff King, Felipe Contreras

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---

Since v1:

 * Check if we are running bash in posix mode
 * Don't check for all git porcelain commands

 t/t9902-completion.sh |  115 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 115 insertions(+)
 create mode 100755 t/t9902-completion.sh

diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
new file mode 100755
index 0000000..cbda6b5
--- /dev/null
+++ b/t/t9902-completion.sh
@@ -0,0 +1,115 @@
+#!/bin/sh
+#
+# Copyright (c) 2012 Felipe Contreras
+#
+
+if test -n "$BASH" && test -z "$POSIXLY_CORRECT"; then
+	# we are in full-on bash mode
+	true
+elif type bash >/dev/null 2>&1; then
+	# execute in full-on bash mode
+	unset POSIXLY_CORRECT
+	exec bash "$0" "$@"
+else
+	echo '1..0 #SKIP skipping bash completion tests; bash not available'
+	exit 0
+fi
+
+test_description='test bash completion'
+
+. ./test-lib.sh
+
+complete ()
+{
+	# do nothing
+	return 0
+}
+
+. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
+
+_get_comp_words_by_ref ()
+{
+	while [ $# -gt 0 ]; do
+		case "$1" in
+		cur)
+			cur=${_words[_cword]}
+			;;
+		prev)
+			prev=${_words[_cword-1]}
+			;;
+		words)
+			words=("${_words[@]}")
+			;;
+		cword)
+			cword=$_cword
+			;;
+		esac
+		shift
+	done
+}
+
+print_comp ()
+{
+	local IFS=$'\n'
+	echo "${COMPREPLY[*]}" > out
+}
+
+run_completion ()
+{
+	local -a COMPREPLY _words
+	local _cword
+	_words=( $1 )
+	(( _cword = ${#_words[@]} - 1 ))
+	_git && print_comp
+}
+
+test_completion ()
+{
+	test $# -gt 1 && echo "$2" > expected
+	run_completion "$@" &&
+	test_cmp expected out
+}
+
+test_expect_success 'basic' '
+	run_completion "git \"\"" &&
+	# built-in
+	grep -q "^add \$" out &&
+	# script
+	grep -q "^filter-branch \$" out &&
+	# plumbing
+	! grep -q "^ls-files \$" out
+
+	run_completion "git f" &&
+	! grep -q -v "^f" out
+'
+
+test_expect_success 'double dash' '
+	cat >expected <<-\EOF &&
+	--paginate 
+	--no-pager 
+	--git-dir=
+	--bare 
+	--version 
+	--exec-path 
+	--html-path 
+	--work-tree=
+	--namespace=
+	--help 
+	EOF
+	test_completion "git --"
+
+	cat >expected <<-\EOF &&
+	--quiet 
+	--ours 
+	--theirs 
+	--track 
+	--no-track 
+	--merge 
+	--conflict=
+	--orphan 
+	--patch 
+	EOF
+	test_completion "git checkout --"
+'
+
+test_done
-- 
1.7.10.1.g1f19b8.dirty

^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2012-04-17 10:27 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-11 21:57 [PATCH v2] tests: add initial bash completion tests Felipe Contreras
2012-04-11 23:48 ` Junio C Hamano
2012-04-12 16:15 ` Felipe Contreras
2012-04-12 17:43   ` Junio C Hamano
2012-04-12 23:18     ` Felipe Contreras
2012-04-12 23:26       ` Junio C Hamano
2012-04-13 19:45         ` Junio C Hamano
2012-04-13  9:12 ` SZEDER Gábor
2012-04-13  9:45   ` SZEDER Gábor
2012-04-13 10:48     ` Felipe Contreras
2012-04-13 11:14       ` SZEDER Gábor
2012-04-13 11:56         ` Felipe Contreras
2012-04-13 10:34   ` Felipe Contreras
2012-04-13 10:52     ` SZEDER Gábor
2012-04-13 11:33       ` Thomas Rast
2012-04-13 19:48   ` Junio C Hamano
2012-04-14  2:06     ` Felipe Contreras
2012-04-17  0:31 ` SZEDER Gábor
2012-04-17  6:32   ` Felipe Contreras
2012-04-17 10:22     ` SZEDER Gábor
2012-04-17 10:27       ` [PATCH] tests: add tests for the __gitcomp() completion helper function SZEDER Gábor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).