diff options
Diffstat (limited to 'Test/X03zlebindkey.ztst')
-rw-r--r-- | Test/X03zlebindkey.ztst | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Test/X03zlebindkey.ztst b/Test/X03zlebindkey.ztst new file mode 100644 index 000000000..013d3dfb3 --- /dev/null +++ b/Test/X03zlebindkey.ztst @@ -0,0 +1,128 @@ +# Tests of the bindkey command. +# This concentrates on the command itself and also resolving keystrokes +# into bindings. The latter is particularly tricky with multibyte sequences. + +%prep + ZSH_TEST_LANG= + langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8 + $(locale -a 2>/dev/null | egrep 'utf8|UTF-8')) + for LANG in $langs; do + if [[ é = ? ]]; then + ZSH_TEST_LANG=$LANG + break; + fi + done + if [[ $OSTYPE = cygwin ]]; then + ZTST_unimplemented="the zsh/zpty module does not work on Cygwin" + elif ( zmodload zsh/zpty 2>/dev/null ); then + . $ZTST_srcdir/comptest + comptestinit -z $ZTST_testdir/../Src/zsh + else + ZTST_unimplemented="the zsh/zpty module is not available" + fi + +%test + + zpty_run 'bindkey -s "\C-xy" foo' + zletest $'\C-xy' + zpty_run 'bindkey -r "\C-xy"' +0:bindkey -s +>BUFFER: foo +>CURSOR: 3 + + zpty_run 'bindkey -s "\C-xy" foo' + zpty_run 'bindkey -s "\C-x\C-y" bar' + zletest $'\C-xy\C-x\C-y' + zpty_run 'bindkey -r "\C-xy"' + zpty_run 'bindkey -r "\C-x\C-y"' +0:bindkey with multiple definitions associated with prefix +>BUFFER: foobar +>CURSOR: 6 + + bindkey -s '\C-xy' bar + bindkey '\C-xy' + bindkey -r '\C-xy' + bindkey '\C-xy' +0:bindkey output +>"^Xy" "bar" +>"^Xy" undefined-key + +# As we're only looking at definitions here, we don't +# bother using the pseudo-terminal; just test in the normal fashion. + bindkey -e + bindkey -s '\C-xy' foo + bindkey -N testmap emacs + bindkey -M testmap '\C-xy' + bindkey -s -M testmap '\C-xy' bar + bindkey -M testmap '\C-xy' + bindkey '\C-xy' + bindkey -A testmap main + bindkey '\C-xy' + bindkey -A emacs main + bindkey '\C-xy' +0:creating keymaps from existing keymaps +>"^Xy" "foo" +>"^Xy" "bar" +>"^Xy" "foo" +>"^Xy" "bar" +>"^Xy" "foo" + +# Depends on the keymap created in the previous test. + bindkey -l + bindkey -D testmap + print Deleted... + bindkey -l +0:deleting keymaps +>.safe +>command +>emacs +>isearch +>main +>testmap +>vicmd +>viins +>viopp +>visual +>Deleted... +>.safe +>command +>emacs +>isearch +>main +>vicmd +>viins +>viopp +>visual + +# This \M... style display of 8-bit characters is a bit +# dated in multibyte mode, but no one's complained... + if [[ -z $ZSH_TEST_LANG ]]; then + ZTST_skip="multibyte not available for bindkey test" + else + bindkey | grep '\\M.*self-insert' + fi +0:in multibyte mode all bytes with bit 7 set start self-insert +>"\M-^@"-"\M-^?" self-insert + + if [[ -z $ZSH_TEST_LANG ]]; then + ZTST_skip="multibyte not available for bindkey test" + else + zpty_run 'alias unbind="bindkey -r ホ"' + zpty_run 'bindkey -s ホ bar' + zletest 'ホ' + zpty_run unbind + zletest 'ホ' + zpty_run 'bindkey ホ self-insert' + zletest 'ホ' + zpty_run unbind + zletest 'ホ' + fi +0:bindkey -s multibyte characters +>BUFFER: bar +>CURSOR: 3 +>BUFFER: ホ +>CURSOR: 1 +>BUFFER: ホ +>CURSOR: 1 +>BUFFER: ホ +>CURSOR: 1 |