From 701ecdf16b3941ad1928520414942776e695308d Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:53 +0100 Subject: completion: add comment for test_completion() So that it's easier to understand what it does. Also, make sure we pass only the first argument for completion. Shouldn't cause any functional changes because run_completion only checks $1. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index cbd0fb66f9..5c06709ea0 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -54,10 +54,14 @@ run_completion () __git_wrap__git_main && print_comp } +# Test high-level completion +# Arguments are: +# 1: typed text so far (cur) +# 2: expected completion test_completion () { test $# -gt 1 && echo "$2" > expected - run_completion "$@" && + run_completion "$1" && test_cmp expected out } -- cgit v1.2.3 From 43ea081235dfebdd34ad16e873105dabdec075fb Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:54 +0100 Subject: completion: standardize final space marker in tests The rest of the code uses ' Z$'. Lets use that for test_completion_long() as well. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 5c06709ea0..9778a1b94d 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -66,11 +66,10 @@ test_completion () } # Like test_completion, but reads expectation from stdin, -# which is convenient when it is multiline. We also process "_" into -# spaces to make test vectors more readable. +# which is convenient when it is multiline. test_completion_long () { - tr _ " " >expected && + sed -e 's/Z$//' >expected && test_completion "$1" } @@ -252,24 +251,24 @@ test_expect_success 'setup for ref completion' ' test_expect_success 'checkout completes ref names' ' test_completion_long "git checkout m" <<-\EOF - master_ - mybranch_ - mytag_ + master Z + mybranch Z + mytag Z EOF ' test_expect_success 'show completes all refs' ' test_completion_long "git show m" <<-\EOF - master_ - mybranch_ - mytag_ + master Z + mybranch Z + mytag Z EOF ' test_expect_success ': completes paths' ' test_completion_long "git show mytag:f" <<-\EOF - file1_ - file2_ + file1 Z + file2 Z EOF ' @@ -278,7 +277,7 @@ test_expect_success 'complete tree filename with spaces' ' git add . && git commit -m spaces && test_completion_long "git show HEAD:nam" <<-\EOF - name with spaces_ + name with spaces Z EOF ' @@ -287,8 +286,8 @@ test_expect_failure 'complete tree filename with metacharacters' ' git add . && git commit -m meta && test_completion_long "git show HEAD:nam" <<-\EOF - name with ${meta}_ - name with spaces_ + name with ${meta} Z + name with spaces Z EOF ' -- cgit v1.2.3 From a1be444d099d059982dfcc6b58c286591a3322d8 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:55 +0100 Subject: completion: simplify tests using test_completion_long() No need to duplicate that functionality. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 9778a1b94d..40d6f90ef6 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -172,7 +172,7 @@ test_expect_success 'basic' ' ' test_expect_success 'double dash "git" itself' ' - sed -e "s/Z$//" >expected <<-\EOF && + test_completion_long "git --" <<-\EOF --paginate Z --no-pager Z --git-dir= @@ -187,11 +187,10 @@ test_expect_success 'double dash "git" itself' ' --no-replace-objects Z --help Z EOF - test_completion "git --" ' test_expect_success 'double dash "git checkout"' ' - sed -e "s/Z$//" >expected <<-\EOF && + test_completion_long "git checkout --" <<-\EOF --quiet Z --ours Z --theirs Z @@ -202,17 +201,15 @@ test_expect_success 'double dash "git checkout"' ' --orphan Z --patch Z EOF - 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 && + test_completion_long "git --exe" <<-\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 " && -- cgit v1.2.3 From 2fbaf81381f4c80b5d8a97277374426f019fbc4a Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:56 +0100 Subject: completion: consolidate test_completion*() tests No need to have two versions; if a second argument is specified, use that, otherwise use stdin. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 40d6f90ef6..173cd740ee 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -60,19 +60,16 @@ run_completion () # 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' ' @@ -172,7 +169,7 @@ test_expect_success 'basic' ' ' test_expect_success 'double dash "git" itself' ' - test_completion_long "git --" <<-\EOF + test_completion "git --" <<-\EOF --paginate Z --no-pager Z --git-dir= @@ -190,7 +187,7 @@ test_expect_success 'double dash "git" itself' ' ' test_expect_success 'double dash "git checkout"' ' - test_completion_long "git checkout --" <<-\EOF + test_completion "git checkout --" <<-\EOF --quiet Z --ours Z --theirs Z @@ -206,7 +203,7 @@ test_expect_success 'double dash "git checkout"' ' 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 @@ -247,7 +244,7 @@ test_expect_success 'setup for ref completion' ' ' 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 @@ -255,7 +252,7 @@ test_expect_success 'checkout completes ref names' ' ' 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 @@ -263,7 +260,7 @@ test_expect_success 'show completes all refs' ' ' test_expect_success ': completes paths' ' - test_completion_long "git show mytag:f" <<-\EOF + test_completion "git show mytag:f" <<-\EOF file1 Z file2 Z EOF @@ -273,7 +270,7 @@ test_expect_success 'complete tree filename with spaces' ' 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 ' @@ -282,7 +279,7 @@ test_expect_failure 'complete tree filename with metacharacters' ' 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 -- cgit v1.2.3 From e461523892440f378dd7d872cac9fc6094c6492c Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:57 +0100 Subject: completion: refactor __gitcomp related tests Remove lots of duplicated code; no functional changes intended. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 78 ++++++++++++++++++--------------------------------- 1 file changed, 28 insertions(+), 50 deletions(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 173cd740ee..f754de3122 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -72,87 +72,65 @@ test_completion () 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 +# Test __gitcomp. +# The first argument is the typed text so far (cur); the rest are +# passed to __gitcomp. Expected output comes is read from the +# standard input, like test_completion(). +test_gitcomp () +{ + sed -e 's/Z$//' >expected && ( local -a COMPREPLY && - cur="--re" && - __gitcomp "--dry-run --reuse-message= --reedit-message= - --reset-author" && + cur="$1" && + shift && + __gitcomp "$@" && IFS="$newline" && - echo "${COMPREPLY[*]}" > out + echo "${COMPREPLY[*]}" >out ) && test_cmp expected out +} + +test_expect_success '__gitcomp - trailing space - options' ' + test_gitcomp "--re" "--dry-run --reuse-message= --reedit-message= + --reset-author" <<-EOF + --reuse-message=Z + --reedit-message=Z + --reset-author Z + EOF ' test_expect_success '__gitcomp - trailing space - config keys' ' - sed -e "s/Z$//" >expected <<-\EOF && + test_gitcomp "br" "branch. branch.autosetupmerge + branch.autosetuprebase browser." <<-\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 && + test_gitcomp "--strategy=re" "octopus ours recursive resolve subtree" \ + "" "re" <<-\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 && + test_gitcomp "branch.me" "remote merge mergeoptions rebase" \ + "branch.maint." "me" <<-\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 && + test_gitcomp "branch.me" "master maint next pu" "branch." \ + "ma" "." <<-\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' ' -- cgit v1.2.3 From 173930330ad039d8c09b821001abd95d040a2832 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 11 Nov 2012 15:35:58 +0100 Subject: completion: simplify __gitcomp() test helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By using print_comp as suggested by SZEDER Gábor. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- t/t9902-completion.sh | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 't') diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index f754de3122..96542b5c52 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -70,23 +70,18 @@ test_completion () test_cmp expected out } -newline=$'\n' - # Test __gitcomp. # The first argument is the typed text so far (cur); the rest are # passed to __gitcomp. Expected output comes is read from the # standard input, like test_completion(). test_gitcomp () { + local -a COMPREPLY && sed -e 's/Z$//' >expected && - ( - local -a COMPREPLY && - cur="$1" && - shift && - __gitcomp "$@" && - IFS="$newline" && - echo "${COMPREPLY[*]}" >out - ) && + cur="$1" && + shift && + __gitcomp "$@" && + print_comp && test_cmp expected out } -- cgit v1.2.3