mirror of
https://github.com/neovim/neovim.git
synced 2026-04-05 07:09:23 +00:00
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 vim/vim#5659)
406cd90f19
This commit is contained in:
@@ -524,6 +524,20 @@ func Test_quit_with_arglist()
|
||||
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
|
||||
|
||||
@@ -2226,7 +2226,7 @@ func Test_autocmd_bufreadpre()
|
||||
" (even though the position will be invalid, this should make Vim reset the
|
||||
" cursor position in the other window.
|
||||
wincmd p
|
||||
1
|
||||
1 " set cpo+=g
|
||||
" won't do anything, but try to set the cursor on an invalid lnum
|
||||
autocmd BufReadPre <buffer> :norm! 70gg
|
||||
" triggers BufReadPre, should not move the cursor in either window
|
||||
@@ -2241,8 +2241,11 @@ func Test_autocmd_bufreadpre()
|
||||
close
|
||||
close
|
||||
call delete('XAutocmdBufReadPre.txt')
|
||||
" set cpo-=g
|
||||
endfunc
|
||||
|
||||
" FileChangedShell tested in test_filechanged.vim
|
||||
|
||||
" Tests for the following autocommands:
|
||||
" - FileWritePre writing a compressed file
|
||||
" - FileReadPost reading a compressed file
|
||||
@@ -2560,7 +2563,29 @@ func Test_BufWrite_lockmarks()
|
||||
call delete('Xtest2')
|
||||
endfunc
|
||||
|
||||
" FileChangedShell tested in test_filechanged.vim
|
||||
" 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
|
||||
|
||||
func LogACmd()
|
||||
call add(g:logged, line('$'))
|
||||
|
||||
@@ -4415,6 +4415,20 @@ func Test_splitview()
|
||||
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
|
||||
|
||||
@@ -1600,6 +1600,33 @@ func Test_search_tilde_pat()
|
||||
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
|
||||
|
||||
" Test 'smartcase' with utf-8.
|
||||
func Test_search_smartcase_utf8()
|
||||
new
|
||||
|
||||
@@ -278,7 +278,6 @@ func Test_swap_recover_ext()
|
||||
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'])
|
||||
@@ -311,6 +310,46 @@ func Test_swap_recover_ext()
|
||||
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
|
||||
|
||||
" Test for selecting 'q' in the attention prompt
|
||||
func Test_swap_prompt_splitwin()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
@@ -919,6 +919,14 @@ func Test_winpos_errors()
|
||||
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
|
||||
|
||||
func Test_window_resize()
|
||||
throw 'Skipped: Nvim supports cmdheight=0'
|
||||
" Vertical :resize (absolute, relative, min and max size).
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
-- Test argument list commands
|
||||
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local clear, command, eq = helpers.clear, helpers.command, helpers.eq
|
||||
local eval, exc_exec, neq = helpers.eval, helpers.exc_exec, helpers.neq
|
||||
local feed = helpers.feed
|
||||
local pcall_err = helpers.pcall_err
|
||||
|
||||
describe('argument list commands', function()
|
||||
@@ -239,4 +241,39 @@ describe('argument list commands', function()
|
||||
command('args a b c')
|
||||
eq('Vim(quit):E173: 2 more files to edit', pcall_err(command, 'quit'))
|
||||
end)
|
||||
|
||||
it(':confirm quit with unedited files in arglist', function()
|
||||
local screen = Screen.new(60, 6)
|
||||
screen:attach()
|
||||
command('set nomore')
|
||||
command('args a b c')
|
||||
feed(':confirm quit\n')
|
||||
screen:expect([[
|
||||
|
|
||||
~ |
|
||||
|
|
||||
:confirm quit |
|
||||
2 more files to edit. Quit anyway? |
|
||||
[Y]es, (N)o: ^ |
|
||||
]])
|
||||
feed('N')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]])
|
||||
feed(':confirm quit\n')
|
||||
screen:expect([[
|
||||
|
|
||||
~ |
|
||||
|
|
||||
:confirm quit |
|
||||
2 more files to edit. Quit anyway? |
|
||||
[Y]es, (N)o: ^ |
|
||||
]])
|
||||
feed('Y')
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user