[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 11da957e4590564bdf97f06ef6a3c02c84716f3a

Freddy Vulto fvulto at gmail.com
Wed Nov 17 22:37:28 UTC 2010


The following commit has been merged in the master branch:
commit 11da957e4590564bdf97f06ef6a3c02c84716f3a
Author: Freddy Vulto <fvulto at gmail.com>
Date:   Wed Nov 17 23:36:58 2010 +0100

    (testsuite) `match_items()' matches on bash-prompt
    Also made `match_items()' more strict about matching
    space/newline/prompt after the last item.
    
    Added options to match_items():
    - end-newline
    - end-prompt
    - end-space
    and transferred them to other functions.
    
    Function `assert_complete()' now has a `-nospace' option to explicitly
    disallow a space after a completion...
    
    Function `assert_bash_list()' now expects a single item to be followed
    by a newline.

diff --git a/test/lib/completions/cd.exp b/test/lib/completions/cd.exp
index c32e11c..1361b3c 100644
--- a/test/lib/completions/cd.exp
+++ b/test/lib/completions/cd.exp
@@ -39,7 +39,8 @@ set test "Tab should complete CDPATH"
     # Set CDPATH
 assert_bash_exec "declare -p CDPATH &>/dev/null && OLDCDPATH=\$CDPATH || :"
 assert_bash_exec "CDPATH=\$PWD";
-assert_complete "$::srcdir/fixtures/shared/default/foo.d/" "cd $::srcdir/fixtures/shared/default/fo" $test
+assert_complete "$::srcdir/fixtures/shared/default/foo.d/" \
+    "cd $::srcdir/fixtures/shared/default/fo" $test -nospace
 sync_after_int
     # Reset CDPATH
 assert_bash_exec "declare -p OLDCDPATH &>/dev/null && CDPATH=\$OLDCDPATH || unset CDPATH && unset OLDCDPATH"
diff --git a/test/lib/completions/finger.exp b/test/lib/completions/finger.exp
index f139c96..70e3ed2 100644
--- a/test/lib/completions/finger.exp
+++ b/test/lib/completions/finger.exp
@@ -24,7 +24,7 @@ sync_after_int
 
 
 set test "Tab should complete partial username"
-assert_complete_partial [exec bash -c "compgen -A user"] "finger"
+assert_complete_partial [exec bash -c "compgen -A user"] "finger" -nospace
 
 
 sync_after_int
diff --git a/test/lib/completions/ls.exp b/test/lib/completions/ls.exp
index 5aafddb..0d16ec0 100644
--- a/test/lib/completions/ls.exp
+++ b/test/lib/completions/ls.exp
@@ -24,7 +24,7 @@ set test "~part should complete to ~full/ if existing dir"
 assert_bash_exec {for u in $(compgen -u); do \
     eval test -d ~$u && echo $u; unset u; done} {} /@ users
 find_unique_completion_pair $users part full
-assert_complete "~$full/" "ls ~$part" $test
+assert_complete "~$full/" "ls ~$part" $test -nospace
 
 
 sync_after_int
@@ -35,7 +35,7 @@ set test "~part should complete to ~full<space> if non-existing dir"
 assert_bash_exec {for u in $(compgen -u); do \
     eval test -d ~$u || echo $u; unset u; done} {} /@ users
 find_unique_completion_pair $users part full
-assert_complete "~$full " "ls ~$part" $test
+assert_complete "~$full " "ls ~$part" $test -nospace
 
 
 sync_after_int
diff --git a/test/lib/completions/ssh.exp b/test/lib/completions/ssh.exp
index d16b5f9..217fa2c 100644
--- a/test/lib/completions/ssh.exp
+++ b/test/lib/completions/ssh.exp
@@ -61,8 +61,8 @@ sync_after_int
 
 
 set test "First argument should complete partial hostname"
-assert_complete_partial [get_hosts] ssh "" $test /@ 20 \
-    [list "ltrim_colon_completions"]
+assert_complete_partial [get_hosts] ssh "" $test \
+    -filters "ltrim_colon_completions"
 
 
 sync_after_int
diff --git a/test/lib/completions/sudo.exp b/test/lib/completions/sudo.exp
index a4b7690..d6bbbbb 100644
--- a/test/lib/completions/sudo.exp
+++ b/test/lib/completions/sudo.exp
@@ -11,13 +11,14 @@ proc teardown {} {
 setup
 
 
-assert_complete_dir foo.d/ "sudo cd fo" $::srcdir/fixtures/shared/default
+assert_complete_dir foo.d/ "sudo cd fo" $::srcdir/fixtures/shared/default \
+    "" -nospace
 
 
 sync_after_int
 
 
-assert_complete_dir fixtures/ "sudo sh fix" $::srcdir
+assert_complete_dir fixtures/ "sudo sh fix" $::srcdir "" -nospace
 
 
 sync_after_int
diff --git a/test/lib/library.exp b/test/lib/library.exp
index 7165509..ace83dc 100644
--- a/test/lib/library.exp
+++ b/test/lib/library.exp
@@ -89,15 +89,13 @@ proc assert_bash_list {expected cmd test {args {}}} {
     } else {
         send "$cmd\r"
         expect -ex "$cmd\r\n"
-        if {$arg(sort)} {set bash_sort "-bash-sort"} else {set bash_sort ""}
+        if {$arg(sort)} {set bash_sort "-bash-sort"} {set bash_sort ""}
         if {[
-            match_items $expected $bash_sort -chunk-size $arg(chunk-size) \
-                -prompt $prompt
+            eval match_items \$expected $bash_sort -chunk-size \
+                \$arg(chunk-size) -end-newline -end-prompt \
+                -prompt \$prompt
         ]} {
-            expect {
-                -re $prompt { pass "$test" }
-                -re eof { unresolved "eof" }
-            }
+            pass "$test"
         } else {
             fail "$test"
         }
@@ -138,21 +136,34 @@ proc assert_bash_list_dir {expected cmd dir test {args {}}} {
 # command.
 # @param list $expected  Expected completions.
 # @param string $cmd  Command given to generate items
-# @param string $test  (optional) Test title.  Default is "$cmd<TAB> should show completions"
-# @param string $prompt  (optional) Bash prompt.  Default is "/@"
-# @param integer $size  (optional) Chunk size.  Default is 20.
-# @param string $cword  (optional) Last argument of $cmd which is an
-#     argument-to-complete and to be replaced with the longest common prefix
-#     of $expected.  If empty string (default), `assert_complete' autodetects
-#     if the last argument is an argument-to-complete by checking if $cmd
-#     doesn't end with whitespace.  Specifying `cword' should only be necessary
-#     if this autodetection fails, e.g.  when the last whitespace is escaped or
-#     quoted, e.g. "finger foo\ " or "finger 'foo "
-# @param list $filters  (optional) List of filters to apply to this function to tweak
-#     the expected completions and argument-to-complete.  Possible values:
-#     - "ltrim_colon_completions"
+# @param string $test  Test title
+# @param list $args  Options:
+#     -prompt PROMPT  Bash prompt.  Default is `/@'
+#     -chunk-size CHUNK-SIZE   Compare list CHUNK-SIZE items at
+#         a time.  Default is 20.
+#     -cword CWORD  Last argument of $cmd which is an argument-to-complete and
+#         to be replaced with the longest common prefix of $expected.  If empty
+#         string (default), `assert_complete' autodetects if the last argument
+#         is an argument-to-complete by checking if $cmd doesn't end with
+#         whitespace.  Specifying `cword' should only be necessary if this
+#         autodetection fails, e.g.  when the last whitespace is escaped or
+#         quoted, e.g. "finger foo\ " or "finger 'foo "
+#     -nospace  Don't expect space character to be output after completion match.
+#     -filters  List of filters to apply to this function to tweak the expected
+#         completions and argument-to-complete.  Possible values:
+#         - "ltrim_colon_completions"
+#proc assert_complete {expected cmd {test ""} {prompt /@} {size 20} {cword ""} {filters ""}} {
 # @result boolean  True if successful, False if not
-proc assert_complete {expected cmd {test ""} {prompt /@} {size 20} {cword ""} {filters ""}} {
+proc assert_complete {expected cmd {test ""} {args {}}} {
+    array set arg [::cmdline::getoptions args {
+        {prompt.arg     "/@" "bash prompt"}
+        {chunk-size.arg 20   "compare N list items at a time"}
+        {cword.arg      ""   "word to complete"}
+        {nospace             "don't expect space after completion"}
+        {filters.arg    ""   "filters to preprocess expected completions"}
+    }]
+    set cword $arg(cword)
+    set prompt $arg(prompt)
     if {[llength $expected] == 0} {
         assert_no_complete $cmd $test
     } else {
@@ -161,7 +172,7 @@ proc assert_complete {expected cmd {test ""} {prompt /@} {size 20} {cword ""} {f
         if {[llength $expected] == 1} {
             expect -ex "$cmd"
 
-            if {[lsearch -exact $filters "ltrim_colon_completions"] == -1} {
+            if {[lsearch -exact $arg(filters) "ltrim_colon_completions"] == -1} {
                 set cur "";  # Default to empty word to complete on
                 set words [split_words_bash $cmd]
                 if {[llength $words] > 1} {
@@ -180,20 +191,24 @@ proc assert_complete {expected cmd {test ""} {prompt /@} {size 20} {cword ""} {f
             set expected [lsort -unique $expected]
         }
 
-        if {[lsearch -exact $filters "ltrim_colon_completions"] != -1} {
+        if {[lsearch -exact $arg(filters) "ltrim_colon_completions"] != -1} {
                 # If partial contains colon (:), remove partial from begin of items
                 # See also: bash_completion.__ltrim_colon_completions()
             _ltrim_colon_completions cword expected
         }
 
-        if {[match_items $expected -bash-sort -chunk-size $size -prompt $prompt]} {
+        if {$arg(nospace)} {set endspace ""} else {set endspace "-end-space"}
+        if {[
+            eval match_items \$expected -bash-sort -chunk-size \
+                \$arg(chunk-size) $endspace -prompt \$prompt
+        ]} {
             if {[llength $expected] == 1} {
                 pass "$test"
             } else {
                 # Remove optional (partial) last argument-to-complete from `cmd',
                 # E.g. "finger test@" becomes "finger"
 
-                if {[lsearch -exact $filters "ltrim_colon_completions"] != -1} {
+                if {[lsearch -exact $arg(filters) "ltrim_colon_completions"] != -1} {
                     set cmd2 $cmd
                 } else {
                     set cmd2 [_remove_cword_from_cmd $cmd $cword]
@@ -290,15 +305,13 @@ proc assert_complete_any {cmd {test ""} {prompt /@}} {
 # @param list $expected
 # @param string $cmd  Command given to generate items
 # @param string $dir  Subdirectory to attempt completion in.  The directory must be relative from the $TESTDIR and without a trailing slash.  E.g. `fixtures/evince'
-# @param string $test  (optional) Test title.  Default is "$cmd<TAB> should show completions"
-# @param string $prompt  (optional) Bash prompt.  Default is "/@"
-# @param integer $size  (optional) Chunk size.  Default is 20.
-# @param string $cword  (optional) Last word of $cmd to complete.  See: assert_complete()
+# @param string $test  Test title
+# @param list $args  See: assert_complete()
 # @result boolean  True if successful, False if not
-proc assert_complete_dir {expected cmd dir {test ""} {size 20} {cword ""}} {
+proc assert_complete_dir {expected cmd dir {test ""} {args {}}} {
     set prompt "/@"
     assert_bash_exec "cd $dir" "" $prompt
-    assert_complete $expected $cmd $test $prompt $size $cword
+    assert_complete $expected $cmd $test $args
     sync_after_int $prompt
     assert_bash_exec {cd "$TESTDIR"}
 }
@@ -312,14 +325,9 @@ proc assert_complete_dir {expected cmd dir {test ""} {size 20} {cword ""}} {
 # @param list $expected  List of all completions.
 # @param string $cmd  Command given to generate items
 # @param string $partial  Word to complete
-# @param string $test  (optional) Test title.  Default is "$cmd<TAB> should show completions"
-# @param string $prompt  (optional) Bash prompt.  Default is "/@"
-# @param integer $size  (optional) Chunk size.  Default is 20.
-# @param list $filters  (optional) List of filters to apply to this function to tweak
-#     the expected completions and argument-to-complete.
-#     @see assert_complete()
-# @result boolean  True if successful, False if not
-proc assert_complete_partial {expected cmd {partial ""} {test ""} {prompt /@} {size 20} {filters ""}} {
+# @param string $test  Test title
+# @param list $args  See: assert_complete()
+proc assert_complete_partial {expected cmd {partial ""} {test ""} {args {}}} {
     if {$test == ""} {set test "$cmd should complete partial argument"}
     if {[llength $expected] == 0} {
         unresolved "$test"
@@ -334,7 +342,7 @@ proc assert_complete_partial {expected cmd {partial ""} {test ""} {prompt /@} {s
                 lappend pick $item
             }
         }
-        assert_complete $pick "$cmd $partial" $test $prompt $size $partial $filters
+        assert_complete $pick "$cmd $partial" $test $args
     }
 }
 
@@ -637,12 +645,22 @@ proc is_cygwin {} {
 #                    -prompt PROMPT  Bash prompt.  Default is `/@'
 #                    -chunk-size CHUNK-SIZE   Compare list CHUNK-SIZE items at
 #                                             a time.  Default is 20.
+#                    -end-newline  Expect newline after last item.
+#                                  Default is not.
+#                    -end-prompt   Expect prompt after last item.
+#                                  Default is not.
+#                    -end-space    Expect single space after last item.
+#                                  Default is not.  Valid only if
+#                                  `end-newline' not set.
 # @result boolean  True if successful, False if not
 proc match_items {items {args {}}} {
     array set arg [::cmdline::getoptions args {
         {bash-sort      "compare list sorted"}
         {prompt.arg     "/@" "bash prompt"}
         {chunk-size.arg 20   "compare N list items at a time"}
+        {end-newline   "expect newline after last item"}
+        {end-prompt    "expect prompt after last item"}
+        {end-space     "expect space ater last item"}
     }]
     set prompt $arg(prompt)
     set size $arg(chunk-size)
@@ -658,12 +676,20 @@ proc match_items {items {args {}}} {
             if {[llength $items] > 1} {append expected {\s+}}
         }
         if {[llength $items] == 1} {
+            if {$arg(end-prompt)} {set end $prompt} {set end ""}
+            # Both trailing space and newline are specified?
+            if {$arg(end-newline) && $arg(end-space)} {
+                # Indicate both trailing space or newline are ok
+                set expected2 "|^$expected $end$";  # Include space
+                append expected "\r\n$end";      # Include newline
+            } else {
+                if {$arg(end-newline)} {append expected "\r\n$end"}
+                if {$arg(end-space)}   {append expected " $end"}
+                set expected2 ""
+            }
             expect {
-                -re "^$expected\r\n$" { set result true }
-                # NOTE: The optional space ( ?) depends on whether -o nospace is active
-                -re "^$expected ?$" { set result true }
+                -re "^$expected$$expected2" { set result true }
                 -re "^$prompt$" {set result false; break }
-                "\r\n" { set result false; break }
                 default { set result false; break }
                 timeout { set result false; break }
             }
diff --git a/test/unit/__expand_tilde_by_ref.exp b/test/unit/__expand_tilde_by_ref.exp
index 000d351..abd549c 100644
--- a/test/unit/__expand_tilde_by_ref.exp
+++ b/test/unit/__expand_tilde_by_ref.exp
@@ -37,7 +37,7 @@ sync_after_int
 
 
 set test "~user should return /home/user"
-set cmd [format {var="~%s"; __expand_tilde_by_ref var; printf "%%s" "$var"} $user]
+set cmd [format {var="~%s"; __expand_tilde_by_ref var; printf "%%s\n" "$var"} $user]
 assert_bash_list "$home" $cmd $test
 
 
@@ -45,7 +45,7 @@ sync_after_int
 
 
 set test "~/foo should return /home/user/foo"
-set cmd {var='~/foo'; __expand_tilde_by_ref var; printf "%s" "$var"}
+set cmd {var='~/foo'; __expand_tilde_by_ref var; printf "%s\n" "$var"}
 assert_bash_list "$home/foo" $cmd $test
 
 
@@ -53,7 +53,7 @@ sync_after_int
 
 
 set test "~user/bar should return /home/user/bar"
-set cmd [format {var="~%s/bar"; __expand_tilde_by_ref var; printf "%%s" "$var"} $user]
+set cmd [format {var="~%s/bar"; __expand_tilde_by_ref var; printf "%%s\n" "$var"} $user]
 assert_bash_list "$home/bar" $cmd $test
 
 
@@ -61,7 +61,7 @@ sync_after_int
 
 
 set test "~user/\$HOME should return /home/user/\$HOME"
-set cmd [format {var="~%s/\$HOME"; __expand_tilde_by_ref var; printf "%%s" "$var"} $user]
+set cmd [format {var="~%s/\$HOME"; __expand_tilde_by_ref var; printf "%%s\n" "$var"} $user]
 assert_bash_list "$home/\$HOME" $cmd $test
 
 
@@ -69,7 +69,7 @@ sync_after_int
 
 
 set test "'~user/a  b' should return '/home/user/a  b'"
-set cmd [format {var="~%s/a  b"; __expand_tilde_by_ref var; printf "%%s" "$var"} $user]
+set cmd [format {var="~%s/a  b"; __expand_tilde_by_ref var; printf "%%s\n" "$var"} $user]
 assert_bash_list [list [format {%s/a  b} $home]] $cmd $test
 
 
@@ -77,7 +77,7 @@ sync_after_int
 
 
 set test "~user/* should return /home/user/*"
-set cmd [format {var="~%s/*"; __expand_tilde_by_ref var; printf "%%s" "$var"} $user]
+set cmd [format {var="~%s/*"; __expand_tilde_by_ref var; printf "%%s\n" "$var"} $user]
 assert_bash_list "$home/\*" $cmd $test
 
 
diff --git a/test/unit/_filedir.exp b/test/unit/_filedir.exp
index 7c8c420..de49408 100644
--- a/test/unit/_filedir.exp
+++ b/test/unit/_filedir.exp
@@ -118,7 +118,7 @@ foreach name {f f2} {
 
     set test "completing $name a\$ should return a\\\$b/"
     set cmd "$name a\$"
-    assert_complete_dir "\b\\\\\$b/" $cmd "$::srcdir/fixtures/_filedir" $test
+    assert_complete_dir "\b\\\\\$b/" $cmd "$::srcdir/fixtures/_filedir" $test -nospace
 
 
     sync_after_int
diff --git a/test/unit/_get_comp_words_by_ref.exp b/test/unit/_get_comp_words_by_ref.exp
index cb3f4da..2ddcef2 100644
--- a/test/unit/_get_comp_words_by_ref.exp
+++ b/test/unit/_get_comp_words_by_ref.exp
@@ -247,7 +247,7 @@ sync_after_int
 set test "a -n| should return -n";  # | = cursor position
 set cmd {COMP_WORDS=(a -n); COMP_CWORD=1; COMP_LINE='a -n'; COMP_POINT=4}
 assert_bash_exec $cmd
-set cmd {_get_comp_words_by_ref cur; printf %s $cur}
+set cmd {_get_comp_words_by_ref cur; printf "%s\n" $cur}
 assert_bash_list -n $cmd $test
 
 
diff --git a/test/unit/_get_cword.exp b/test/unit/_get_cword.exp
index c3fbe2a..ce749ce 100644
--- a/test/unit/_get_cword.exp
+++ b/test/unit/_get_cword.exp
@@ -30,7 +30,7 @@ sync_after_int
 
 
 set test "a b| should return b";  # | = cursor position
-set cmd {COMP_WORDS=(a b); COMP_CWORD=1; COMP_LINE='a b'; COMP_POINT=3; _get_cword}
+set cmd {COMP_WORDS=(a b); COMP_CWORD=1; COMP_LINE='a b'; COMP_POINT=3; _get_cword; echo}
 assert_bash_list b $cmd $test
 
 
@@ -65,7 +65,7 @@ sync_after_int
 
 
 set test "a b|c should return b";  # | = cursor position
-set cmd {COMP_WORDS=(a bc); COMP_CWORD=1; COMP_LINE='a bc'; COMP_POINT=3; _get_cword}
+set cmd {COMP_WORDS=(a bc); COMP_CWORD=1; COMP_LINE='a bc'; COMP_POINT=3; _get_cword; echo}
 assert_bash_list b $cmd $test
 
 
@@ -73,7 +73,7 @@ sync_after_int
 
 
 set test {a b\ c| should return b\ c};  # | = cursor position
-set cmd {COMP_WORDS=(a 'b\ c'); COMP_CWORD=1; COMP_LINE='a b\ c'; COMP_POINT=6; _get_cword}
+set cmd {COMP_WORDS=(a 'b\ c'); COMP_CWORD=1; COMP_LINE='a b\ c'; COMP_POINT=6; _get_cword; echo}
 assert_bash_list {"b\\ c"} $cmd $test
 
 
@@ -81,7 +81,7 @@ sync_after_int
 
 
 set test {a b\| c should return b\ };  # | = cursor position
-set cmd {COMP_WORDS=(a 'b\ c'); COMP_CWORD=1; COMP_LINE='a b\ c'; COMP_POINT=4; _get_cword}
+set cmd {COMP_WORDS=(a 'b\ c'); COMP_CWORD=1; COMP_LINE='a b\ c'; COMP_POINT=4; _get_cword; echo}
 assert_bash_list {"b\\"} $cmd $test
 
 
@@ -89,7 +89,7 @@ sync_after_int
 
 
 set test {a "b\| should return "b\ };  # | = cursor position
-set cmd {COMP_WORDS=(a '"b\'); COMP_CWORD=1; COMP_LINE='a "b\'; COMP_POINT=5; _get_cword}
+set cmd {COMP_WORDS=(a '"b\'); COMP_CWORD=1; COMP_LINE='a "b\'; COMP_POINT=5; _get_cword; echo}
 assert_bash_list {"\"b\\"} $cmd $test
 
 
@@ -160,7 +160,7 @@ if {[lindex $::BASH_VERSINFO 0] <= 3} {
     set cmd {add_comp_wordbreak_char :; COMP_WORDS=(a b : c); COMP_CWORD=3}
     set expected c
 }
-append cmd {; COMP_LINE='a b:c'; COMP_POINT=5; _get_cword}
+append cmd {; COMP_LINE='a b:c'; COMP_POINT=5; _get_cword; echo}
 assert_bash_list $expected $cmd $test
 
 
@@ -173,7 +173,7 @@ if {[lindex $::BASH_VERSINFO 0] <= 3} {
 } else {
     set cmd {COMP_WORDS=(a b : c); COMP_CWORD=3}
 }
-append cmd {; COMP_LINE='a b:c'; COMP_POINT=5; _get_cword :}
+append cmd {; COMP_LINE='a b:c'; COMP_POINT=5; _get_cword :; echo}
 assert_bash_list b:c $cmd $test
 
 
@@ -186,7 +186,7 @@ if {[lindex $::BASH_VERSINFO 0] <= 3} {
 } else {
     set cmd {COMP_WORDS=(a b c :); COMP_CWORD=3}
 }
-append cmd {; COMP_LINE='a b c:'; COMP_POINT=6; _get_cword :}
+append cmd {; COMP_LINE='a b c:'; COMP_POINT=6; _get_cword :; echo}
 assert_bash_list c: $cmd $test
 
 
@@ -194,7 +194,7 @@ sync_after_int
 
 
 set test {a :| with WORDBREAKS -= : should return :};  # | = cursor position
-set cmd {COMP_WORDS=(a :); COMP_CWORD=1; COMP_LINE='a :'; COMP_POINT=3; _get_cword :}
+set cmd {COMP_WORDS=(a :); COMP_CWORD=1; COMP_LINE='a :'; COMP_POINT=3; _get_cword :; echo}
 assert_bash_list : $cmd $test
 
 
@@ -207,7 +207,7 @@ if {[lindex $::BASH_VERSINFO 0] <= 3} {
 } else {
     set cmd {COMP_WORDS=(a b ::); COMP_CWORD=2}
 }
-append cmd {; COMP_LINE='a b::'; COMP_POINT=5; _get_cword :}
+append cmd {; COMP_LINE='a b::'; COMP_POINT=5; _get_cword :; echo}
 assert_bash_list b:: $cmd $test
 
 
@@ -217,7 +217,7 @@ sync_after_int
 # This test makes sure `_get_cword' doesn't use `echo' to return it's value,
 # because -n might be interpreted by `echo' and thus will not be returned.
 set test "a -n| should return -n";  # | = cursor position
-set cmd {COMP_WORDS=(a -n); COMP_CWORD=1; COMP_LINE='a -n'; COMP_POINT=4; _get_cword}
+set cmd {COMP_WORDS=(a -n); COMP_CWORD=1; COMP_LINE='a -n'; COMP_POINT=4; _get_cword; echo}
 assert_bash_list -n $cmd $test
 
 
@@ -225,7 +225,7 @@ sync_after_int
 
 
 set test {a b>c| should return c};  # | = cursor position
-set cmd {COMP_WORDS=(a b \> c); COMP_CWORD=3; COMP_LINE='a b>c'; COMP_POINT=5; _get_cword}
+set cmd {COMP_WORDS=(a b \> c); COMP_CWORD=3; COMP_LINE='a b>c'; COMP_POINT=5; _get_cword; echo}
 assert_bash_list c $cmd $test
 
 
@@ -240,7 +240,7 @@ if {[lindex $::BASH_VERSINFO] <= 3} {
     set cmd {COMP_WORDS=(a b = c); COMP_CWORD=3}
     set expected c
 }
-append cmd {; COMP_LINE='a b=c'; COMP_POINT=5; _get_cword}
+append cmd {; COMP_LINE='a b=c'; COMP_POINT=5; _get_cword; echo}
 assert_bash_list $expected $cmd $test
 
 
@@ -248,7 +248,7 @@ sync_after_int
 
 
 set test {a *| should return *};  # | = cursor position
-set cmd {COMP_WORDS=(a \*); COMP_CWORD=1; COMP_LINE='a *'; COMP_POINT=4; _get_cword}
+set cmd {COMP_WORDS=(a \*); COMP_CWORD=1; COMP_LINE='a *'; COMP_POINT=4; _get_cword; echo}
 assert_bash_list * $cmd $test
 
 
diff --git a/test/unit/_tilde.exp b/test/unit/_tilde.exp
index 54394cb..2e22b84 100644
--- a/test/unit/_tilde.exp
+++ b/test/unit/_tilde.exp
@@ -36,7 +36,7 @@ sync_after_int
 
 
 set test "~full should complete to ~full unmodified"
-set cmd [format {_tilde "~%s"; printf "%%s" "${COMPREPLY[@]}"} $full]
+set cmd [format {_tilde "~%s"; printf "%%s\n" "${COMPREPLY[@]}"} $full]
 assert_bash_list "~$full" $cmd $test
 
 
@@ -44,7 +44,7 @@ sync_after_int
 
 
 set test "~part should complete to ~full"
-set cmd [format {_tilde "~%s"; printf "%%s" "${COMPREPLY[@]}"} $part]
+set cmd [format {_tilde "~%s"; printf "%%s\n" "${COMPREPLY[@]}"} $part]
 assert_bash_list "~$full" $cmd $test
 
 

-- 
bash-completion



More information about the Bash-completion-commits mailing list