To: vim_dev@googlegroups.com Subject: Patch 8.2.0275 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0275 Problem: Some Ex code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes #5659) Files: src/testdir/test_arglist.vim, src/testdir/test_autocmd.vim, src/testdir/test_excmd.vim, src/testdir/test_quickfix.vim, src/testdir/test_search.vim, src/testdir/test_swap.vim, src/testdir/test_window_cmd.vim *** ../vim-8.2.0274/src/testdir/test_arglist.vim 2020-02-11 22:03:43.038846226 +0100 --- src/testdir/test_arglist.vim 2020-02-18 21:49:18.555111485 +0100 *************** *** 519,524 **** --- 519,538 ---- call term_sendkeys(buf, ":quit\n") call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))}) call StopVimInTerminal(buf) + + " Try :confirm quit with unedited files in arglist + let buf = RunVimInTerminal('', {'rows': 6}) + call term_sendkeys(buf, ":set nomore\n") + call term_sendkeys(buf, ":args a b c\n") + call term_sendkeys(buf, ":confirm quit\n") + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', + \ term_getline(buf, 6))}) + call term_sendkeys(buf, "N") + call term_sendkeys(buf, ":confirm quit\n") + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', + \ term_getline(buf, 6))}) + call term_sendkeys(buf, "Y") + call StopVimInTerminal(buf) endfunc " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0274/src/testdir/test_autocmd.vim 2020-02-17 21:33:26.266098800 +0100 --- src/testdir/test_autocmd.vim 2020-02-18 21:49:18.563111458 +0100 *************** *** 2358,2361 **** --- 2358,2385 ---- setglobal spellfile= endfunc + " Test closing a window or editing another buffer from a FileChangedRO handler + " in a readonly buffer + func Test_FileChangedRO_winclose() + augroup FileChangedROTest + au! + autocmd FileChangedRO * quit + augroup END + new + set readonly + call assert_fails('normal i', 'E788:') + close + augroup! FileChangedROTest + + augroup FileChangedROTest + au! + autocmd FileChangedRO * edit Xfile + augroup END + new + set readonly + call assert_fails('normal i', 'E788:') + close + augroup! FileChangedROTest + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0274/src/testdir/test_excmd.vim 2020-02-17 21:33:26.266098800 +0100 --- src/testdir/test_excmd.vim 2020-02-18 21:49:18.563111458 +0100 *************** *** 238,243 **** --- 238,259 ---- call assert_equal(['foo4'], readfile('foo')) call assert_equal(['bar2'], readfile('bar')) + " Test for closing a window with a modified buffer + let buf = RunVimInTerminal('', {'rows': 20}) + call term_sendkeys(buf, ":set nomore\n") + call term_sendkeys(buf, ":new\n") + call term_sendkeys(buf, ":call setline(1, 'abc')\n") + call term_sendkeys(buf, ":confirm close\n") + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', + \ term_getline(buf, 20))}, 1000) + call term_sendkeys(buf, "C") + call term_sendkeys(buf, ":confirm close\n") + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$', + \ term_getline(buf, 20))}, 1000) + call term_sendkeys(buf, "N") + call term_sendkeys(buf, ":quit\n") + call StopVimInTerminal(buf) + call delete('foo') call delete('bar') endfunc *** ../vim-8.2.0274/src/testdir/test_quickfix.vim 2020-02-16 13:33:52.051371829 +0100 --- src/testdir/test_quickfix.vim 2020-02-18 21:49:18.567111444 +0100 *************** *** 4195,4200 **** --- 4195,4214 ---- call assert_equal(0, getloclist(0, {'winid' : 0}).winid) new | only + " Using :split or :vsplit from a quickfix window should behave like a :new + " or a :vnew command + copen + split + call assert_equal(3, winnr('$')) + let l = getwininfo() + call assert_equal([0, 0, 1], [l[0].quickfix, l[1].quickfix, l[2].quickfix]) + close + copen + vsplit + let l = getwininfo() + call assert_equal([0, 0, 1], [l[0].quickfix, l[1].quickfix, l[2].quickfix]) + new | only + call delete('Xtestfile1') call delete('Xtestfile2') endfunc *** ../vim-8.2.0274/src/testdir/test_search.vim 2020-02-11 22:03:43.038846226 +0100 --- src/testdir/test_search.vim 2020-02-18 21:49:18.567111444 +0100 *************** *** 1515,1518 **** --- 1515,1545 ---- call delete('Xresult') endfunc + " Test for searching a pattern that is not present with 'nowrapscan' + func Test_search_pat_not_found() + new + set nowrapscan + let @/ = '1abcxyz2' + call assert_fails('normal n', 'E385:') + call assert_fails('normal N', 'E384:') + set wrapscan& + close + endfunc + + " Test for v:searchforward variable + func Test_searchforward_var() + new + call setline(1, ['foo', '', 'foo']) + call cursor(2, 1) + let @/ = 'foo' + let v:searchforward = 0 + normal N + call assert_equal(3, line('.')) + call cursor(2, 1) + let v:searchforward = 1 + normal N + call assert_equal(1, line('.')) + close! + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0274/src/testdir/test_swap.vim 2019-10-10 16:40:31.000000000 +0200 --- src/testdir/test_swap.vim 2020-02-18 21:49:18.567111444 +0100 *************** *** 277,283 **** autocmd SwapExists * let v:swapchoice = 'r' augroup END - " Create a valid swapfile by editing a file with a special extension. split Xtest.scr call setline(1, ['one', 'two', 'three']) --- 277,282 ---- *************** *** 309,311 **** --- 308,352 ---- augroup END augroup! test_swap_recover_ext endfunc + + " Test for closing a split window automatically when a swap file is detected + " and 'Q' is selected in the confirmation prompt. + func Test_swap_split_win() + autocmd! SwapExists + augroup test_swap_splitwin + autocmd! + autocmd SwapExists * let v:swapchoice = 'q' + augroup END + + " Create a valid swapfile by editing a file with a special extension. + split Xtest.scr + call setline(1, ['one', 'two', 'three']) + write " file is written, not modified + write " write again to make sure the swapfile is created + " read the swapfile as a Blob + let swapfile_name = swapname('%') + let swapfile_bytes = readfile(swapfile_name, 'B') + + " Close and delete the file and recreate the swap file. + quit + call delete('Xtest.scr') + call writefile(swapfile_bytes, swapfile_name) + " Split edit the file again. This should fail to open the window + try + split Xtest.scr + catch + " E308 should be caught, not E306. + call assert_exception('E308:') " Original file may have been changed + endtry + call assert_equal(1, winnr('$')) + + call delete('Xtest.scr') + call delete(swapfile_name) + + augroup test_swap_splitwin + autocmd! + augroup END + augroup! test_swap_splitwin + endfunc + + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0274/src/testdir/test_window_cmd.vim 2020-02-17 21:33:26.270098788 +0100 --- src/testdir/test_window_cmd.vim 2020-02-18 21:49:18.567111444 +0100 *************** *** 965,968 **** --- 965,976 ---- call assert_fails('winpos 10', 'E466:') endfunc + " Test for +cmd in a :split command + func Test_split_cmd() + split +set\ readonly + call assert_equal(1, &readonly) + call assert_equal(2, winnr('$')) + close + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0274/src/version.c 2020-02-18 21:32:55.854340478 +0100 --- src/version.c 2020-02-18 21:50:28.238882470 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 275, /**/ -- From "know your smileys": =):-) Uncle Sam /// 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 ///