Skip to content

Commit

Permalink
patch 8.2.0261: some code not covered by tests
Browse files Browse the repository at this point in the history
Problem:    Some code not covered by tests.
Solution:   Add test cases. (Yegappan Lakshmanan, closes #5645)
  • Loading branch information
brammool committed Feb 16, 2020
1 parent f414048 commit f0cee19
Show file tree
Hide file tree
Showing 11 changed files with 223 additions and 0 deletions.
91 changes: 91 additions & 0 deletions src/testdir/test_buffer.vim
Expand Up @@ -61,6 +61,97 @@ func Test_bunload_with_offset()
call delete('b2')
call delete('b3')
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

" vim: shiftwidth=2 sts=2 expandtab
43 changes: 43 additions & 0 deletions src/testdir/test_cmdline.vim
Expand Up @@ -632,9 +632,32 @@ func Test_cmdline_search_range()
1,\&s/b/B/
call assert_equal('B', getline(2))

let @/ = 'apple'
call assert_fails('\/print', 'E486:')

bwipe!
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()
func Check_cmdline(cmdtype)
call assert_equal('MyCmd a', getcmdline())
Expand Down Expand Up @@ -934,4 +957,24 @@ func Test_cmdline_expand_special()
call assert_fails('e <amatch>', 'E497:')
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
4 changes: 4 additions & 0 deletions src/testdir/test_exists.vim
Expand Up @@ -94,8 +94,12 @@ func Test_exists()
call assert_equal(0, exists(':edit/a'))
" Valid internal command (partial match)
call assert_equal(1, exists(':q'))
" Valid internal command with a digit
call assert_equal(2, exists(':2match'))
" Non-existing internal command
call assert_equal(0, exists(':invalidcmd'))
" Internal command with a count
call assert_equal(0, exists(':3buffer'))

" User defined command (full match)
command! MyCmd :echo 'My command'
Expand Down
15 changes: 15 additions & 0 deletions src/testdir/test_filechanged.vim
Expand Up @@ -146,3 +146,18 @@ func Test_file_changed_dialog()
bwipe!
call delete('Xchanged_d')
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
20 changes: 20 additions & 0 deletions src/testdir/test_fileformat.vim
Expand Up @@ -276,3 +276,23 @@ func Test_fileformats()
call delete('XXUxDsMc')
call delete('Xtest')
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
1 change: 1 addition & 0 deletions src/testdir/test_mapping.vim
Expand Up @@ -38,6 +38,7 @@ func Test_abclear()

abclear
call assert_equal("\n\nNo abbreviation found", execute('abbrev'))
call assert_fails('%abclear', 'E481:')
endfunc

func Test_abclear_buffer()
Expand Down
9 changes: 9 additions & 0 deletions src/testdir/test_marks.vim
Expand Up @@ -212,4 +212,13 @@ func Test_lockmarks_with_put()
bwipe!
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
16 changes: 16 additions & 0 deletions src/testdir/test_normal.vim
Expand Up @@ -2705,3 +2705,19 @@ func Test_normal_gk()
bw!
set cpoptions& number& numberwidth&
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
13 changes: 13 additions & 0 deletions src/testdir/test_plus_arg_edit.vim
Expand Up @@ -32,3 +32,16 @@ func Test_edit_bad()
bw!
call delete('Xfile')
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
9 changes: 9 additions & 0 deletions src/testdir/test_quickfix.vim
Expand Up @@ -538,6 +538,15 @@ func Xtest_browse(cchar)
10Xcc
call assert_equal(11, line('.'))
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
" present)
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -742,6 +742,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
261,
/**/
260,
/**/
Expand Down

0 comments on commit f0cee19

Please sign in to comment.