forked from aniani/vim
patch 8.2.0261: some code not covered by tests
Problem: Some code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes #5645)
This commit is contained in:
@@ -61,6 +61,97 @@ func Test_bunload_with_offset()
|
|||||||
call delete('b2')
|
call delete('b2')
|
||||||
call delete('b3')
|
call delete('b3')
|
||||||
call delete('b4')
|
call delete('b4')
|
||||||
|
|
||||||
|
call assert_fails('1,4bunload', 'E16:')
|
||||||
|
call assert_fails(',100bunload', 'E16:')
|
||||||
|
|
||||||
|
" Use a try-catch for this test. When assert_fails() is used for this
|
||||||
|
" test, the command fails with E515: instead of E90:
|
||||||
|
let caught_E90 = 0
|
||||||
|
try
|
||||||
|
$bunload
|
||||||
|
catch /E90:/
|
||||||
|
let caught_E90 = 1
|
||||||
|
endtry
|
||||||
|
call assert_equal(1, caught_E90)
|
||||||
|
call assert_fails('$bunload', 'E515:')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
|
||||||
|
" commands
|
||||||
|
func Test_buflist_browse()
|
||||||
|
%bwipe!
|
||||||
|
call assert_fails('buffer 1000', 'E86:')
|
||||||
|
|
||||||
|
call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
|
||||||
|
call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
|
||||||
|
call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
|
||||||
|
edit Xfile1
|
||||||
|
let b1 = bufnr()
|
||||||
|
edit Xfile2
|
||||||
|
let b2 = bufnr()
|
||||||
|
edit +/baz4 Xfile3
|
||||||
|
let b3 = bufnr()
|
||||||
|
|
||||||
|
call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
|
||||||
|
call assert_equal(b3, bufnr())
|
||||||
|
call assert_equal(4, line('.'))
|
||||||
|
exe 'buffer +/bar2 ' .. b2
|
||||||
|
call assert_equal(b2, bufnr())
|
||||||
|
call assert_equal(2, line('.'))
|
||||||
|
exe 'buffer +/bar1'
|
||||||
|
call assert_equal(b2, bufnr())
|
||||||
|
call assert_equal(1, line('.'))
|
||||||
|
|
||||||
|
brewind +/foo3
|
||||||
|
call assert_equal(b1, bufnr())
|
||||||
|
call assert_equal(3, line('.'))
|
||||||
|
|
||||||
|
blast +/baz2
|
||||||
|
call assert_equal(b3, bufnr())
|
||||||
|
call assert_equal(2, line('.'))
|
||||||
|
|
||||||
|
bprevious +/bar4
|
||||||
|
call assert_equal(b2, bufnr())
|
||||||
|
call assert_equal(4, line('.'))
|
||||||
|
|
||||||
|
bnext +/baz3
|
||||||
|
call assert_equal(b3, bufnr())
|
||||||
|
call assert_equal(3, line('.'))
|
||||||
|
|
||||||
|
call assert_fails('bmodified', 'E84:')
|
||||||
|
call setbufvar(b2, '&modified', 1)
|
||||||
|
exe 'bmodified +/bar3'
|
||||||
|
call assert_equal(b2, bufnr())
|
||||||
|
call assert_equal(3, line('.'))
|
||||||
|
|
||||||
|
" With no listed buffers in the list, :bnext and :bprev should fail
|
||||||
|
%bwipe!
|
||||||
|
set nobuflisted
|
||||||
|
call assert_fails('bnext', 'E85:')
|
||||||
|
call assert_fails('bprev', 'E85:')
|
||||||
|
set buflisted
|
||||||
|
|
||||||
|
call assert_fails('sandbox bnext', 'E48:')
|
||||||
|
|
||||||
|
call delete('Xfile1')
|
||||||
|
call delete('Xfile2')
|
||||||
|
call delete('Xfile3')
|
||||||
|
%bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test for :bdelete
|
||||||
|
func Test_bdelete_cmd()
|
||||||
|
%bwipe!
|
||||||
|
call assert_fails('bdelete 5', 'E516:')
|
||||||
|
|
||||||
|
" Deleting a unlisted and unloaded buffer
|
||||||
|
edit Xfile1
|
||||||
|
let bnr = bufnr()
|
||||||
|
set nobuflisted
|
||||||
|
enew
|
||||||
|
call assert_fails('bdelete ' .. bnr, 'E516:')
|
||||||
|
%bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -632,9 +632,32 @@ func Test_cmdline_search_range()
|
|||||||
1,\&s/b/B/
|
1,\&s/b/B/
|
||||||
call assert_equal('B', getline(2))
|
call assert_equal('B', getline(2))
|
||||||
|
|
||||||
|
let @/ = 'apple'
|
||||||
|
call assert_fails('\/print', 'E486:')
|
||||||
|
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for the tick mark (') in an excmd range
|
||||||
|
func Test_tick_mark_in_range()
|
||||||
|
" If only the tick is passed as a range and no command is specified, there
|
||||||
|
" should not be an error
|
||||||
|
call feedkeys(":'\<CR>", 'xt')
|
||||||
|
call assert_equal("'", getreg(':'))
|
||||||
|
call assert_fails("',print", 'E78:')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test for using a line number followed by a search pattern as range
|
||||||
|
func Test_lnum_and_pattern_as_range()
|
||||||
|
new
|
||||||
|
call setline(1, ['foo 1', 'foo 2', 'foo 3'])
|
||||||
|
let @" = ''
|
||||||
|
2/foo/yank
|
||||||
|
call assert_equal("foo 3\n", @")
|
||||||
|
call assert_equal(1, line('.'))
|
||||||
|
close!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Tests for getcmdline(), getcmdpos() and getcmdtype()
|
" Tests for getcmdline(), getcmdpos() and getcmdtype()
|
||||||
func Check_cmdline(cmdtype)
|
func Check_cmdline(cmdtype)
|
||||||
call assert_equal('MyCmd a', getcmdline())
|
call assert_equal('MyCmd a', getcmdline())
|
||||||
@@ -934,4 +957,24 @@ func Test_cmdline_expand_special()
|
|||||||
call assert_fails('e <amatch>', 'E497:')
|
call assert_fails('e <amatch>', 'E497:')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_cmdwin_jump_to_win()
|
||||||
|
call assert_fails('call feedkeys("q:\<C-W>\<C-W>\<CR>", "xt")', 'E11:')
|
||||||
|
new
|
||||||
|
set modified
|
||||||
|
call assert_fails('call feedkeys("q/:qall\<CR>", "xt")', 'E162:')
|
||||||
|
close!
|
||||||
|
call feedkeys("q/:close\<CR>", "xt")
|
||||||
|
call assert_equal(1, winnr('$'))
|
||||||
|
call feedkeys("q/:exit\<CR>", "xt")
|
||||||
|
call assert_equal(1, winnr('$'))
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test for backtick expression in the command line
|
||||||
|
func Test_cmd_backtick()
|
||||||
|
%argd
|
||||||
|
argadd `=['a', 'b', 'c']`
|
||||||
|
call assert_equal(['a', 'b', 'c'], argv())
|
||||||
|
%argd
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -94,8 +94,12 @@ func Test_exists()
|
|||||||
call assert_equal(0, exists(':edit/a'))
|
call assert_equal(0, exists(':edit/a'))
|
||||||
" Valid internal command (partial match)
|
" Valid internal command (partial match)
|
||||||
call assert_equal(1, exists(':q'))
|
call assert_equal(1, exists(':q'))
|
||||||
|
" Valid internal command with a digit
|
||||||
|
call assert_equal(2, exists(':2match'))
|
||||||
" Non-existing internal command
|
" Non-existing internal command
|
||||||
call assert_equal(0, exists(':invalidcmd'))
|
call assert_equal(0, exists(':invalidcmd'))
|
||||||
|
" Internal command with a count
|
||||||
|
call assert_equal(0, exists(':3buffer'))
|
||||||
|
|
||||||
" User defined command (full match)
|
" User defined command (full match)
|
||||||
command! MyCmd :echo 'My command'
|
command! MyCmd :echo 'My command'
|
||||||
|
@@ -146,3 +146,18 @@ func Test_file_changed_dialog()
|
|||||||
bwipe!
|
bwipe!
|
||||||
call delete('Xchanged_d')
|
call delete('Xchanged_d')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for editing a new buffer from a FileChangedShell autocmd
|
||||||
|
func Test_FileChangedShell_newbuf()
|
||||||
|
call writefile(['one', 'two'], 'Xfile')
|
||||||
|
new Xfile
|
||||||
|
augroup testnewbuf
|
||||||
|
autocmd FileChangedShell * enew
|
||||||
|
augroup END
|
||||||
|
call writefile(['red'], 'Xfile')
|
||||||
|
call assert_fails('checktime', 'E811:')
|
||||||
|
au! testnewbuf
|
||||||
|
call delete('Xfile')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -276,3 +276,23 @@ func Test_fileformats()
|
|||||||
call delete('XXUxDsMc')
|
call delete('XXUxDsMc')
|
||||||
call delete('Xtest')
|
call delete('Xtest')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for changing the fileformat using ++read
|
||||||
|
func Test_fileformat_plusplus_read()
|
||||||
|
new
|
||||||
|
call setline(1, ['one', 'two', 'three'])
|
||||||
|
w ++ff=dos Xfile1
|
||||||
|
enew!
|
||||||
|
r ++fileformat=unix Xfile1
|
||||||
|
call assert_equal('unix', &fileformat)
|
||||||
|
3r ++edit Xfile1
|
||||||
|
call assert_equal('dos', &fileformat)
|
||||||
|
close!
|
||||||
|
call delete('Xfile1')
|
||||||
|
set fileformat&
|
||||||
|
call assert_fails('e ++fileformat Xfile1', 'E474:')
|
||||||
|
call assert_fails('e ++ff=abc Xfile1', 'E474:')
|
||||||
|
call assert_fails('e ++abc1 Xfile1', 'E474:')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -38,6 +38,7 @@ func Test_abclear()
|
|||||||
|
|
||||||
abclear
|
abclear
|
||||||
call assert_equal("\n\nNo abbreviation found", execute('abbrev'))
|
call assert_equal("\n\nNo abbreviation found", execute('abbrev'))
|
||||||
|
call assert_fails('%abclear', 'E481:')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_abclear_buffer()
|
func Test_abclear_buffer()
|
||||||
|
@@ -212,4 +212,13 @@ func Test_lockmarks_with_put()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for :k command to set a mark
|
||||||
|
func Test_marks_k_cmd()
|
||||||
|
new
|
||||||
|
call setline(1, ['foo', 'bar', 'baz', 'qux'])
|
||||||
|
1,3kr
|
||||||
|
call assert_equal([0, 3, 1, 0], getpos("'r"))
|
||||||
|
close!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -2705,3 +2705,19 @@ func Test_normal_gk()
|
|||||||
bw!
|
bw!
|
||||||
set cpoptions& number& numberwidth&
|
set cpoptions& number& numberwidth&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for cursor movement with '-' in 'cpoptions'
|
||||||
|
func Test_normal_cpo_minus()
|
||||||
|
new
|
||||||
|
call setline(1, ['foo', 'bar', 'baz'])
|
||||||
|
let save_cpo = &cpo
|
||||||
|
set cpo+=-
|
||||||
|
call assert_beeps('normal 10j')
|
||||||
|
call assert_equal(1, line('.'))
|
||||||
|
normal G
|
||||||
|
call assert_beeps('normal 10k')
|
||||||
|
call assert_equal(3, line('.'))
|
||||||
|
call assert_fails(10, 'E16:')
|
||||||
|
let &cpo = save_cpo
|
||||||
|
close!
|
||||||
|
endfunc
|
||||||
|
@@ -32,3 +32,16 @@ func Test_edit_bad()
|
|||||||
bw!
|
bw!
|
||||||
call delete('Xfile')
|
call delete('Xfile')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for ++bin and ++nobin arguments
|
||||||
|
func Test_binary_arg()
|
||||||
|
new
|
||||||
|
edit ++bin Xfile1
|
||||||
|
call assert_equal(1, &binary)
|
||||||
|
edit ++nobin Xfile2
|
||||||
|
call assert_equal(0, &binary)
|
||||||
|
call assert_fails('edit ++binabc Xfile3', 'E474:')
|
||||||
|
close!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -538,6 +538,15 @@ func Xtest_browse(cchar)
|
|||||||
10Xcc
|
10Xcc
|
||||||
call assert_equal(11, line('.'))
|
call assert_equal(11, line('.'))
|
||||||
call assert_equal('Xqftestfile2', bufname('%'))
|
call assert_equal('Xqftestfile2', bufname('%'))
|
||||||
|
Xopen
|
||||||
|
call cursor(2, 1)
|
||||||
|
if a:cchar == 'c'
|
||||||
|
.cc
|
||||||
|
else
|
||||||
|
.ll
|
||||||
|
endif
|
||||||
|
call assert_equal(6, line('.'))
|
||||||
|
call assert_equal('Xqftestfile1', bufname('%'))
|
||||||
|
|
||||||
" Jumping to an error from the error window (when only the error window is
|
" Jumping to an error from the error window (when only the error window is
|
||||||
" present)
|
" present)
|
||||||
|
@@ -742,6 +742,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
261,
|
||||||
/**/
|
/**/
|
||||||
260,
|
260,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user