To: vim_dev@googlegroups.com Subject: Patch 8.2.0261 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0261 Problem: Some code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes #5645) 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/testdir/test_tabpage.vim, src/testdir/test_visual.vim, src/testdir/test_window_cmd.vim, src/testdir/test_writefile.vim *** ../vim-8.2.0260/src/testdir/test_buffer.vim 2020-02-11 22:03:43.038846226 +0100 --- src/testdir/test_buffer.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 61,66 **** --- 61,157 ---- 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 *** ../vim-8.2.0260/src/testdir/test_cmdline.vim 2020-02-14 14:32:15.966616351 +0100 --- src/testdir/test_cmdline.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 632,640 **** --- 632,663 ---- 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(":'\", '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,937 **** --- 957,980 ---- call assert_fails('e ', 'E497:') endfunc + func Test_cmdwin_jump_to_win() + call assert_fails('call feedkeys("q:\\\", "xt")', 'E11:') + new + set modified + call assert_fails('call feedkeys("q/:qall\", "xt")', 'E162:') + close! + call feedkeys("q/:close\", "xt") + call assert_equal(1, winnr('$')) + call feedkeys("q/:exit\", "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-8.2.0260/src/testdir/test_exists.vim 2017-10-12 20:30:58.000000000 +0200 --- src/testdir/test_exists.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 94,101 **** --- 94,105 ---- 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' *** ../vim-8.2.0260/src/testdir/test_filechanged.vim 2020-02-03 21:40:00.005363654 +0100 --- src/testdir/test_filechanged.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 146,148 **** --- 146,163 ---- 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 *** ../vim-8.2.0260/src/testdir/test_fileformat.vim 2019-05-27 22:18:04.000000000 +0200 --- src/testdir/test_fileformat.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 276,278 **** --- 276,298 ---- 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 *** ../vim-8.2.0260/src/testdir/test_mapping.vim 2020-02-11 22:03:43.038846226 +0100 --- src/testdir/test_mapping.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 38,43 **** --- 38,44 ---- abclear call assert_equal("\n\nNo abbreviation found", execute('abbrev')) + call assert_fails('%abclear', 'E481:') endfunc func Test_abclear_buffer() *** ../vim-8.2.0260/src/testdir/test_marks.vim 2020-01-15 20:36:52.140437085 +0100 --- src/testdir/test_marks.vim 2020-02-16 13:28:49.060830136 +0100 *************** *** 212,215 **** --- 212,224 ---- 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 *** ../vim-8.2.0260/src/testdir/test_normal.vim 2019-12-01 15:08:14.000000000 +0100 --- src/testdir/test_normal.vim 2020-02-16 13:28:49.064830117 +0100 *************** *** 2705,2707 **** --- 2705,2723 ---- 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 *** ../vim-8.2.0260/src/testdir/test_plus_arg_edit.vim 2019-01-24 17:44:13.000000000 +0100 --- src/testdir/test_plus_arg_edit.vim 2020-02-16 13:28:49.064830117 +0100 *************** *** 32,34 **** --- 32,47 ---- 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 *** ../vim-8.2.0260/src/testdir/test_quickfix.vim 2020-02-11 22:03:43.038846226 +0100 --- src/testdir/test_quickfix.vim 2020-02-16 13:28:49.064830117 +0100 *************** *** 538,543 **** --- 538,552 ---- 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) *** ../vim-8.2.0260/src/version.c 2020-02-15 23:06:40.826770264 +0100 --- src/version.c 2020-02-16 13:30:35.560305945 +0100 *************** *** 744,745 **** --- 744,747 ---- { /* Add new patch number below this line */ + /**/ + 261, /**/ -- From "know your smileys": y:-) Bad toupee /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///