forked from aniani/vim
patch 8.2.0275: some Ex code not covered by tests
Problem: Some Ex code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes #5659)
This commit is contained in:
@@ -519,6 +519,20 @@ func Test_quit_with_arglist()
|
|||||||
call term_sendkeys(buf, ":quit\n")
|
call term_sendkeys(buf, ":quit\n")
|
||||||
call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))})
|
call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))})
|
||||||
call StopVimInTerminal(buf)
|
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
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -2358,4 +2358,28 @@ func Test_FileType_spell()
|
|||||||
setglobal spellfile=
|
setglobal spellfile=
|
||||||
endfunc
|
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: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -238,6 +238,22 @@ func Test_confirm_cmd()
|
|||||||
call assert_equal(['foo4'], readfile('foo'))
|
call assert_equal(['foo4'], readfile('foo'))
|
||||||
call assert_equal(['bar2'], readfile('bar'))
|
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('foo')
|
||||||
call delete('bar')
|
call delete('bar')
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -4195,6 +4195,20 @@ func Test_splitview()
|
|||||||
call assert_equal(0, getloclist(0, {'winid' : 0}).winid)
|
call assert_equal(0, getloclist(0, {'winid' : 0}).winid)
|
||||||
new | only
|
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('Xtestfile1')
|
||||||
call delete('Xtestfile2')
|
call delete('Xtestfile2')
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -1515,4 +1515,31 @@ func Test_search_tilde_pat()
|
|||||||
call delete('Xresult')
|
call delete('Xresult')
|
||||||
endfunc
|
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: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -277,7 +277,6 @@ func Test_swap_recover_ext()
|
|||||||
autocmd SwapExists * let v:swapchoice = 'r'
|
autocmd SwapExists * let v:swapchoice = 'r'
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
|
||||||
" Create a valid swapfile by editing a file with a special extension.
|
" Create a valid swapfile by editing a file with a special extension.
|
||||||
split Xtest.scr
|
split Xtest.scr
|
||||||
call setline(1, ['one', 'two', 'three'])
|
call setline(1, ['one', 'two', 'three'])
|
||||||
@@ -309,3 +308,45 @@ func Test_swap_recover_ext()
|
|||||||
augroup END
|
augroup END
|
||||||
augroup! test_swap_recover_ext
|
augroup! test_swap_recover_ext
|
||||||
endfunc
|
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
|
||||||
|
@@ -965,4 +965,12 @@ func Test_winpos_errors()
|
|||||||
call assert_fails('winpos 10', 'E466:')
|
call assert_fails('winpos 10', 'E466:')
|
||||||
endfunc
|
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: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -738,6 +738,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 */
|
||||||
|
/**/
|
||||||
|
275,
|
||||||
/**/
|
/**/
|
||||||
274,
|
274,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user