vim-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 vim/vim#5720)
91ffc8a5f5

Test_Ex_echo_backslash() is not applicable to Vim enhanced Ex mode.
This commit is contained in:
zeertzjq
2022-07-13 21:21:14 +08:00
parent c467df997e
commit bf96b9f11d
4 changed files with 111 additions and 6 deletions

View File

@@ -603,12 +603,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!
@@ -1558,7 +1568,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 "
@@ -1577,7 +1587,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 "
@@ -1638,6 +1648,44 @@ 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
" Test for normal mode commands not supported in the cmd window
func Test_cmdwin_blocked_commands()
call assert_fails('call feedkeys("q:\<C-T>\<CR>", "xt")', 'E11:')

View File

@@ -466,10 +466,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()

View File

@@ -151,6 +151,21 @@ func Test_Ex_append()
close!
endfunc
" In Ex-mode, backslashes at the end of a command should be halved.
func Test_Ex_echo_backslash()
throw 'Skipped: Nvim only supports Vim Ex mode'
" 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
func Test_ex_mode_errors()
" Not allowed to enter ex mode when text is locked
au InsertCharPre <buffer> normal! gQ<CR>

View File

@@ -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