diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2022-04-03 11:22:38 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-03 11:22:38 +0100 |
commit | 72bb47e38f6805050ed6d969f17591bed71f83d4 (patch) | |
tree | 2a129b54c7d20524362720c8385128d5a7c7fc41 /src/testdir | |
parent | 58f331a05f5b7bdddf04e68b6e51a827fd0c43f0 (diff) |
patch 8.2.4670: memory allocation failures for new tab page not testedv8.2.4670
Problem: Memory allocation failures for new tab page not tested.
Solution: Add tests with failing memory allocation. (Yegappan Lakshmanan,
closes #10067)
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_blob.vim | 39 | ||||
-rw-r--r-- | src/testdir/test_buffer.vim | 26 | ||||
-rw-r--r-- | src/testdir/test_tabpage.vim | 23 | ||||
-rw-r--r-- | src/testdir/test_window_cmd.vim | 44 |
4 files changed, 119 insertions, 13 deletions
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim index e8bc2c9dad..b249bc60c6 100644 --- a/src/testdir/test_blob.vim +++ b/src/testdir/test_blob.vim @@ -702,4 +702,43 @@ func Test_blob2string() call assert_equal(v, string(b)) endfunc +" Test for blob allocation failure +func Test_blob_alloc_failure() + " blob variable + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let v = 0z10', 'E342:') + + " blob slice + let v = 0z1020 + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = v[0:0]', 'E342:') + call assert_equal(0z1020, x) + + " blob remove() + let v = 0z10203040 + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = remove(v, 1, 2)', 'E342:') + call assert_equal(0, x) + + " list2blob() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let a = list2blob([1, 2, 4])', 'E342:') + call assert_equal(0, a) + + " mapnew() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = mapnew(0z1234, {_, v -> 1})', 'E342:') + call assert_equal(0, x) + + " copy() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = copy(v)', 'E342:') + call assert_equal(0z, x) + + " readblob() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = readblob("test_blob.vim")', 'E342:') + call assert_equal(0, x) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_buffer.vim b/src/testdir/test_buffer.vim index fd96c618c0..fc391dccee 100644 --- a/src/testdir/test_buffer.vim +++ b/src/testdir/test_buffer.vim @@ -430,50 +430,50 @@ func Test_buffer_maxmem() set maxmem& maxmemtot& endfunc -" Test for a allocation failure when adding a new buffer +" Test for buffer allocation failure func Test_buflist_alloc_failure() %bw! edit Xfile1 - call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0) + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) call assert_fails('edit Xfile2', 'E342:') " test for bufadd() - call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0) + call test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) call assert_fails('%bw!', 'E342:') " test for :checktime loading the buffer @@ -484,19 +484,19 @@ func Test_buflist_alloc_failure() sleep 200m call writefile(['two'], 'Xfile5') set autoread - call test_alloc_fail(GetAllocId('buflistnew_bvars'), 0, 0) + call test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_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 test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) call assert_fails('cexpr "Xfile6:10:Line10"', 'E342:') endfunc diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim index dac6d809a8..7e105b1254 100644 --- a/src/testdir/test_tabpage.vim +++ b/src/testdir/test_tabpage.vim @@ -852,4 +852,27 @@ func Test_lastused_tabpage() tabonly! endfunc +" Test for tabpage allocation failure +func Test_tabpage_alloc_failure() + call test_alloc_fail(GetAllocId('newtabpage_tvars'), 0, 0) + call assert_fails('tabnew', 'E342:') + + call test_alloc_fail(GetAllocId('newtabpage_tvars'), 0, 0) + edit Xfile1 + call assert_fails('tabedit Xfile2', 'E342:') + call assert_equal(1, winnr('$')) + call assert_equal(1, tabpagenr('$')) + call assert_equal('Xfile1', @%) + + new + call test_alloc_fail(GetAllocId('newtabpage_tvars'), 0, 0) + call assert_fails('wincmd T', 'E342:') + bw! + + call test_alloc_fail(GetAllocId('newtabpage_tvars'), 0, 0) + call assert_fails('tab split', 'E342:') + call assert_equal(2, winnr('$')) + call assert_equal(1, tabpagenr('$')) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim index 19b4466b93..47988b201a 100644 --- a/src/testdir/test_window_cmd.vim +++ b/src/testdir/test_window_cmd.vim @@ -1512,5 +1512,49 @@ func Test_win_move_statusline() %bwipe! endfunc +" Test for window allocation failure +func Test_window_alloc_failure() + %bw! + + " test for creating a new window above current window + call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + call assert_fails('above new', 'E342:') + call assert_equal(1, winnr('$')) + + " test for creating a new window below current window + call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + call assert_fails('below new', 'E342:') + call assert_equal(1, winnr('$')) + + " test for popup window creation failure + call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + call assert_fails('call popup_create("Hello", {})', 'E342:') + call assert_equal([], popup_list()) + + call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + call assert_fails('split', 'E342:') + call assert_equal(1, winnr('$')) + + edit Xfile1 + edit Xfile2 + call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + call assert_fails('sb Xfile1', 'E342:') + call assert_equal(1, winnr('$')) + call assert_equal('Xfile2', @%) + %bw! + + " FIXME: The following test crashes Vim + " test for new tabpage creation failure + " call test_alloc_fail(GetAllocId('newwin_wvars'), 0, 0) + " call assert_fails('tabnew', 'E342:') + " call assert_equal(1, tabpagenr('$')) + " call assert_equal(1, winnr('$')) + + " This test messes up the internal Vim window/frame information. So the + " Test_window_cmd_cmdwin_with_vsp() test fails after running this test. + " Open a new tab and close everything else to fix this issue. + tabnew + tabonly +endfunc " vim: shiftwidth=2 sts=2 expandtab |