changeset 19407:2f4be7ca1b1b v8.2.0261

patch 8.2.0261: some code not covered by tests Commit: https://github.com/vim/vim/commit/f0cee1971f5258ce61f8a4e6a04d35c1e625bb01 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 16 13:33:56 2020 +0100 patch 8.2.0261: some code not covered by tests Problem: Some code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5645)
author Bram Moolenaar <Bram@vim.org>
date Sun, 16 Feb 2020 13:45:04 +0100
parents 9f499efdf2aa
children e9a7a1c635d2
files src/testdir/test_buffer.vim src/testdir/test_cmdline.vim src/testdir/test_exists.vim src/testdir/test_filechanged.vim src/testdir/test_fileformat.vim src/testdir/test_mapping.vim src/testdir/test_marks.vim src/testdir/test_normal.vim src/testdir/test_plus_arg_edit.vim src/testdir/test_quickfix.vim src/version.c
diffstat 11 files changed, 223 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_buffer.vim
+++ b/src/testdir/test_buffer.vim
@@ -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
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -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())
@@ -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
--- a/src/testdir/test_exists.vim
+++ b/src/testdir/test_exists.vim
@@ -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'
--- a/src/testdir/test_filechanged.vim
+++ b/src/testdir/test_filechanged.vim
@@ -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
--- a/src/testdir/test_fileformat.vim
+++ b/src/testdir/test_fileformat.vim
@@ -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
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -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()
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -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
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -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
--- a/src/testdir/test_plus_arg_edit.vim
+++ b/src/testdir/test_plus_arg_edit.vim
@@ -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
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -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)
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    261,
+/**/
     260,
 /**/
     259,