Mercurial > vim
changeset 19581:848dc460adf0 v8.2.0347
patch 8.2.0347: various code not covered by tests
Commit: https://github.com/vim/vim/commit/91ffc8a5f5c7b1c6979b3352a12ed779d11173a9
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Mar 2 20:54:22 2020 +0100
patch 8.2.0347: various code not covered by tests
Problem: Various code not covered by tests.
Solution: Add more test coverage. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5720)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 02 Mar 2020 21:00:04 +0100 |
parents | e84b346be7f2 |
children | 1aac86ea0cd9 |
files | src/testdir/gen_opt_test.vim src/testdir/test86.in src/testdir/test_cmdline.vim src/testdir/test_digraph.vim src/testdir/test_ex_mode.vim src/testdir/test_history.vim src/version.c |
diffstat | 7 files changed, 120 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -150,7 +150,7 @@ let test_values = { \ 'viminfo': [['', '''50', '"30'], ['xxx']], \ 'virtualedit': [['', 'all', 'all,block'], ['xxx']], \ 'whichwrap': [['', 'b,s', 'bs'], ['xxx']], - \ 'wildmode': [['', 'full', 'list:full', 'full,longest'], ['xxx']], + \ 'wildmode': [['', 'full', 'list:full', 'full,longest'], ['xxx', 'a4', 'full,full,full,full,full']], \ 'wildoptions': [['', 'tagfile'], ['xxx']], \ 'winaltkeys': [['menu', 'no'], ['', 'xxx']], \
--- a/src/testdir/test86.in +++ b/src/testdir/test86.in @@ -1156,7 +1156,7 @@ EOF :$put =string(pyeval('dd') is# pyeval('dd')) :$put =string(pyeval('df')) :delfunction Put -py << EOF +py << del DupDict del DupList del DupFun @@ -1164,7 +1164,7 @@ del dd del dl del dl2 del df -EOF +. :" :" Test chdir py << EOF
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -477,12 +477,22 @@ func Test_cmdline_paste() call feedkeys(":\"one\<C-R>\<C-X>two\<CR>", 'xt') call assert_equal('"onetwo', @:) + " Test for pasting register containing CTRL-H using CTRL-R and CTRL-R CTRL-R let @a = "xy\<C-H>z" call feedkeys(":\"\<C-R>a\<CR>", 'xt') call assert_equal('"xz', @:) + call feedkeys(":\"\<C-R>\<C-R>a\<CR>", 'xt') + call assert_equal("\"xy\<C-H>z", @:) call feedkeys(":\"\<C-R>\<C-O>a\<CR>", 'xt') call assert_equal("\"xy\<C-H>z", @:) + " Test for pasting register containing CTRL-V using CTRL-R and CTRL-R CTRL-R + let @a = "xy\<C-V>z" + call feedkeys(":\"\<C-R>=@a\<CR>\<cr>", 'xt') + call assert_equal('"xyz', @:) + call feedkeys(":\"\<C-R>\<C-R>=@a\<CR>\<cr>", 'xt') + call assert_equal("\"xy\<C-V>z", @:) + call assert_beeps('call feedkeys(":\<C-R>=\<C-R>=\<Esc>", "xt")') bwipe! @@ -1188,7 +1198,7 @@ endfunc func Test_cmdline_edit() let str = ":one two\<C-U>" let str ..= "one two\<C-W>\<C-W>" - let str ..= "one\<BS>\<C-H>\<Del>" + let str ..= "four\<BS>\<C-H>\<Del>\<kDel>" let str ..= "\<Left>five\<Right>" let str ..= "\<Home>two " let str ..= "\<C-Left>one " @@ -1207,7 +1217,7 @@ func Test_cmdline_edit_rightleft() set rightleftcmd=search let str = "/one two\<C-U>" let str ..= "one two\<C-W>\<C-W>" - let str ..= "one\<BS>\<C-H>\<Del>" + let str ..= "four\<BS>\<C-H>\<Del>\<kDel>" let str ..= "\<Right>five\<Left>" let str ..= "\<Home>two " let str ..= "\<C-Right>one " @@ -1268,4 +1278,42 @@ func Test_cmdline_inputmethod() %bwipe! endfunc +" Test for opening the command-line window when too many windows are present +func Test_cmdwin_fail_to_open() + " Open as many windows as possible + for i in range(100) + try + new + catch /E36:/ + break + endtry + endfor + call assert_beeps('call feedkeys("q:\<CR>", "xt")') + only +endfunc + +" Test for recursively getting multiple command line inputs +func Test_cmdwin_multi_input() + call feedkeys(":\<C-R>=input('P: ')\<CR>\"cyan\<CR>\<CR>", 'xt') + call assert_equal('"cyan', @:) +endfunc + +" Test for using CTRL-_ in the command line with 'allowrevins' +func Test_cmdline_revins() + CheckNotMSWindows + CheckFeature rightleft + call feedkeys(":\"abc\<c-_>\<cr>", 'xt') + call assert_equal("\"abc\<c-_>", @:) + set allowrevins + call feedkeys(":\"abc\<c-_>xyz\<c-_>\<CR>", 'xt') + call assert_equal('"abcñèæ', @:) + set allowrevins& +endfunc + +" Test for typing UTF-8 composing characters in the command line +func Test_cmdline_composing_chars() + call feedkeys(":\"\<C-V>u3046\<C-V>u3099\<CR>", 'xt') + call assert_equal('"ゔ', @:) +endfunc + " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_digraph.vim +++ b/src/testdir/test_digraph.vim @@ -451,10 +451,12 @@ endfunc func Test_digraph_cmndline() " Create digraph on commandline - " This is a hack, to let Vim create the digraph in commandline mode - let s = '' - exe "sil! norm! :let s.='\<c-k>Eu'\<cr>" - call assert_equal("€", s) + call feedkeys(":\"\<c-k>Eu\<cr>", 'xt') + call assert_equal('"€', @:) + + " Canceling a CTRL-K on the cmdline + call feedkeys(":\"a\<c-k>\<esc>b\<cr>", 'xt') + call assert_equal('"ab', @:) endfunc func Test_show_digraph()
--- a/src/testdir/test_ex_mode.vim +++ b/src/testdir/test_ex_mode.vim @@ -50,7 +50,11 @@ func Test_ex_mode() call assert_equal(['foo', ' foo0'], Ex(" foo0\<C-d>"), e) call assert_equal(['foo', ' foo^'], Ex(" foo^\<C-d>"), e) call assert_equal(['foo', 'foo'], - \ Ex("\<BS>\<C-H>\<Del>foo"), e) + \ Ex("\<BS>\<C-H>\<Del>\<kDel>foo"), e) + " default wildchar <Tab> interferes with this test + set wildchar=<c-e> + call assert_equal(["a\tb", "a\tb"], Ex("a\t\t\<C-H>b"), e) + set wildchar& endfor set sw& @@ -139,4 +143,18 @@ func Test_Ex_append() close! endfunc +" In Ex-mode, backslashes at the end of a command should be halved. +func Test_Ex_echo_backslash() + " This test works only when the language is English + if v:lang != "C" && v:lang !~ '^[Ee]n' + return + endif + let bsl = '\\\\' + let bsl2 = '\\\' + call assert_fails('call feedkeys("Qecho " .. bsl .. "\nvisual\n", "xt")', + \ "E15: Invalid expression: \\\\") + call assert_fails('call feedkeys("Qecho " .. bsl2 .. "\nm\nvisual\n", "xt")', + \ "E15: Invalid expression: \\\nm") +endfunc + " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_history.vim +++ b/src/testdir/test_history.vim @@ -176,12 +176,52 @@ func Test_history_search() cunmap <F2> delfunc SavePat + " Search for a pattern that is not present in the history + call assert_beeps('call feedkeys("/a1b2\<Up>\<CR>", "xt")') + " Recall patterns with 'history' set to 0 set history=0 let @/ = 'abc' let cmd = 'call feedkeys("/\<Up>\<Down>\<S-Up>\<S-Down>\<CR>", "xt")' call assert_fails(cmd, 'E486:') set history& + + " Recall patterns till the end of history + set history=4 + call histadd('/', 'pat') + call histdel('/') + call histadd('/', 'pat1') + call histadd('/', 'pat2') + call assert_beeps('call feedkeys("/\<Up>\<Up>\<Up>\<C-U>\<cr>", "xt")') + call assert_beeps('call feedkeys("/\<Down><cr>", "xt")') + + " Test for wrapping around the history list + for i in range(3, 7) + call histadd('/', 'pat' .. i) + endfor + let upcmd = "\<up>\<up>\<up>\<up>\<up>" + let downcmd = "\<down>\<down>\<down>\<down>\<down>" + try + call feedkeys("/" .. upcmd .. "\<cr>", 'xt') + catch /E486:/ + endtry + call assert_equal('pat4', @/) + try + call feedkeys("/" .. upcmd .. downcmd .. "\<cr>", 'xt') + catch /E486:/ + endtry + call assert_equal('pat4', @/) + + " Test for changing the search command separator in the history + call assert_fails('call feedkeys("/def/\<cr>", "xt")', 'E486:') + call assert_fails('call feedkeys("?\<up>\<cr>", "xt")', 'E486:') + call assert_equal('def?', histget('/', -1)) + + call assert_fails('call feedkeys("/ghi?\<cr>", "xt")', 'E486:') + call assert_fails('call feedkeys("?\<up>\<cr>", "xt")', 'E486:') + call assert_equal('ghi\?', histget('/', -1)) + + set history& endfunc " Test for making sure the key value is not stored in history