diff options
author | Ville Skyttä <ville.skytta@iki.fi> | 2011-12-12 00:22:09 +0200 |
---|---|---|
committer | Ville Skyttä <ville.skytta@iki.fi> | 2011-12-12 00:22:09 +0200 |
commit | 260e2a1eeb7892daacea5294b9e3f5beb9054f60 (patch) | |
tree | 66db6edec76f113cf3d26d58c83b3169737b37e1 | |
parent | 723b0771ad200ef8f22e1d3fcd3ae5d392a69a27 (diff) | |
download | bash-completion-260e2a1eeb7892daacea5294b9e3f5beb9054f60.tar.gz |
quote: Preserve leading, trailing, and consecutive whitespace.
-rw-r--r-- | bash_completion | 3 | ||||
-rw-r--r-- | test/unit/quote.exp | 69 |
2 files changed, 71 insertions, 1 deletions
diff --git a/bash_completion b/bash_completion index 0eecb158..ebebb8e0 100644 --- a/bash_completion +++ b/bash_completion @@ -142,7 +142,8 @@ _rl_enabled() # This function shell-quotes the argument quote() { - echo \'${1//\'/\'\\\'\'}\' #'# Help vim syntax highlighting + local quoted=${1//\'/\'\\\'\'} + printf "'%s'" "$quoted" } # @see _quote_readline_by_ref() diff --git a/test/unit/quote.exp b/test/unit/quote.exp new file mode 100644 index 00000000..afe670a2 --- /dev/null +++ b/test/unit/quote.exp @@ -0,0 +1,69 @@ +proc setup {} { + save_env +} + + +proc teardown {} { + assert_env_unmodified +} + + +setup + + +set cmd {quote "a b"} +set test {quote "a b" should output 'a b'} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re {'a b'} { pass $test } + default { fail $test } +} +sync_after_int + + +set cmd {quote "a b"} +set test {quote "a b" should output 'a b'} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re {'a b'} { pass $test } + default { fail $test } +} +sync_after_int + + +set cmd {quote " a "} +set test {quote " a " should output ' a '} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re {' a '} { pass $test } + default { fail $test } +} +sync_after_int + + +set cmd {quote "a'b'c"} +set test {quote "a'b'c" should output 'a'\''b'\''c'} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re {'a'\\''b'\\''c'} { pass $test } + default { fail $test } +} +sync_after_int + + +set cmd {quote "a'"} +set test {quote "a'" should output 'a'\'''} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re {'a'\\'''} { pass $test } + default { fail $test } +} +sync_after_int + + +teardown |