diff --git a/bash_completion b/bash_completion index 3cacea74..41636faa 100644 --- a/bash_completion +++ b/bash_completion @@ -229,7 +229,7 @@ quote_readline() # This function shell-dequotes the argument dequote() { - eval echo "$1" + eval echo "$1" 2> /dev/null } # Get the word to complete. diff --git a/test/lib/completions/scp.exp b/test/lib/completions/scp.exp index d16741a2..5388383e 100644 --- a/test/lib/completions/scp.exp +++ b/test/lib/completions/scp.exp @@ -95,7 +95,24 @@ lappend expected doo: gee: hus: ike: jar: # Append local filenames lappend expected config known_hosts "spaced\\\\ \\\\ conf" set dir fixtures/scp -assert_complete_dir $expected "scp -F 'spaced conf' " $dir +#assert_complete_dir $expected "scp -F 'spaced conf' " $dir +set prompt "/$dir/@" +assert_bash_exec "cd $dir" "" $prompt +set cmd "scp -F 'spaced conf' " +send "$cmd\t" +expect -ex "$cmd\r\n" +if {[match_items $expected $test]} { + expect { + -re $prompt { pass "$test" } + -re eof { unresolved "eof" } + }; # expect +} else { + # Expected failure (known bug) because of bash-4 bug in quoted words: + # http://www.mail-archive.com/bug-bash@gnu.org/msg06095.html + if {$bash_versinfo_0 >= 4} {xfail "$test"} {fail "$test"} +}; # if +sync_after_int $prompt +assert_bash_exec "cd \$TESTDIR" sync_after_int diff --git a/test/lib/completions/sftp.exp b/test/lib/completions/sftp.exp index 7cd89c0c..59faaabf 100644 --- a/test/lib/completions/sftp.exp +++ b/test/lib/completions/sftp.exp @@ -48,8 +48,8 @@ set expected [get_hosts] # Hosts `gee', `hus' and `jar' are defined in "./fixtures/scp/spaced conf" # Hosts `doo' and `ike' are defined in ./fixtures/scp/known_hosts lappend expected doo gee hus ike jar -set dir fixtures/scp -assert_complete_dir $expected "sftp -F 'spaced conf' " $dir +set dir fixtures/sftp +assert_complete_dir $expected "sftp -F spaced\\ \\ conf " $dir sync_after_int