vim-patch:8.2.4668: buffer allocation failures insufficiently tested

Problem:    Buffer allocation failures insufficiently tested.
Solution:   Add tests for memory allocation failures. (Yegappan Lakshmanan,
            closes vim/vim#10064)

0dac1ab579

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
zeertzjq 2023-02-28 20:59:59 +08:00
parent faa5d5be4b
commit 65af424199
2 changed files with 71 additions and 1 deletions

View File

@ -451,4 +451,75 @@ func Test_buffer_maxmem()
" set maxmem& maxmemtot&
endfunc
" Test for a allocation failure when adding a new buffer
func Test_buflist_alloc_failure()
CheckFunction test_alloc_fail
%bw!
edit Xfile1
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('edit Xfile2', 'E342:')
" test for bufadd()
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('call bufadd("Xbuffer")', 'E342:')
" test for setting the arglist
edit Xfile2
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('next Xfile3', 'E342:')
" test for setting the alternate buffer name when writing a file
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('write Xother', 'E342:')
call delete('Xother')
" test for creating a buffer using bufnr()
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails("call bufnr('Xnewbuf', v:true)", 'E342:')
" test for renaming buffer using :file
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('file Xnewfile', 'E342:')
" test for creating a buffer for a popup window
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('call popup_create("mypop", {})', 'E342:')
if has('terminal')
" test for creating a buffer for a terminal window
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('call term_start(&shell)', 'E342:')
%bw!
endif
" test for loading a new buffer after wiping out all the buffers
edit Xfile4
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('%bw!', 'E342:')
" test for :checktime loading the buffer
call writefile(['one'], 'Xfile5')
if has('unix')
edit Xfile5
" sleep for some time to make sure the timestamp is different
sleep 200m
call writefile(['two'], 'Xfile5')
set autoread
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('checktime', 'E342:')
set autoread&
bw!
endif
" test for :vimgrep loading a dummy buffer
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('vimgrep two Xfile5', 'E342:')
call delete('Xfile5')
" test for quickfix command loading a buffer
call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0)
call assert_fails('cexpr "Xfile6:10:Line10"', 'E342:')
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -235,7 +235,6 @@ func Test_swap_recover()
autocmd SwapExists * let v:swapchoice = 'r'
augroup END
call mkdir('Xswap')
let $Xswap = 'foo' " Check for issue #4369.
set dir=Xswap//