From 65af4241996021b2067d2adc97cc2c83c616cbb6 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 28 Feb 2023 20:59:59 +0800 Subject: 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) https://github.com/vim/vim/commit/0dac1ab5791819ee9a496273eea38f69a217ac45 Co-authored-by: Yegappan Lakshmanan --- src/nvim/testdir/test_buffer.vim | 71 ++++++++++++++++++++++++++++++++++++++++ src/nvim/testdir/test_swap.vim | 1 - 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/src/nvim/testdir/test_buffer.vim b/src/nvim/testdir/test_buffer.vim index 9220cc17b9..90e97ae167 100644 --- a/src/nvim/testdir/test_buffer.vim +++ b/src/nvim/testdir/test_buffer.vim @@ -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 diff --git a/src/nvim/testdir/test_swap.vim b/src/nvim/testdir/test_swap.vim index cf46b4c5bd..ceadc1d85a 100644 --- a/src/nvim/testdir/test_swap.vim +++ b/src/nvim/testdir/test_swap.vim @@ -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// -- cgit