Problem: Insufficient test coverage for Python.
Solution: Add more test cases. (Yegappan Lakshmanan, closes #6415)
py l = vim.bindeval('l')
py l[2:2:1] = ()
call assert_equal([0, 1, 2, 3, 4, 5, 6, 7], l)
+
+ call AssertException(["py x = l[10:11:0]"],
+ \ "Vim(python):ValueError: slice step cannot be zero")
endfunc
" Locked variables
call assert_equal(0, pyeval("vim.bindeval('v:false')"))
call assert_equal(v:none, pyeval("vim.bindeval('v:null')"))
call assert_equal(v:none, pyeval("vim.bindeval('v:none')"))
+
+ " channel/job
+ call assert_equal(v:none, pyeval("vim.bindeval('test_null_channel()')"))
+ call assert_equal(v:none, pyeval("vim.bindeval('test_null_job()')"))
endfunc
" threading
call assert_equal([], pyeval('b[2:0]'))
call assert_equal([], pyeval('b[10:12]'))
call assert_equal([], pyeval('b[-10:-8]'))
+ call AssertException(["py x = b[0:3:0]"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'slice'")
+ call AssertException(["py b[0:3:0] = 'abc'"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'slice'")
+ call AssertException(["py x = b[{}]"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'dict'")
+ call AssertException(["py b[{}] = 'abc'"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'dict'")
+
+ " Test for getting lines using a range
+ call AssertException(["py x = b.range(0,3)[0:2:0]"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'slice'")
+ call AssertException(["py b.range(0,3)[0:2:0] = 'abc'"],
+ \ "Vim(python):TypeError: sequence index must be integer, not 'slice'")
" Tests BufferAppend and BufferItem
py cb.append(b[0])
py vim.current.buffer[:] = []
call assert_equal([''], getline(1, '$'))
+ " Test for buffer marks
+ call assert_equal(v:none, pyeval("vim.current.buffer.mark('r')"))
+
" Test for modifying a 'nomodifiable' buffer
setlocal nomodifiable
call AssertException(["py vim.current.buffer[0] = 'abc'"],
call assert_equal(['testdir', 'Xfile', 'src', 'testdir/Xfile', 'testdir',
\ 'Xfile'], getline(2, '$'))
close!
+ call AssertException(["py vim.chdir(None)"], "Vim(python):TypeError:")
endfunc
" Test errors
py3 l = vim.bindeval('l')
py3 l[2:2:1] = ()
call assert_equal([0, 1, 2, 3, 4, 5, 6, 7], l)
+
+ call AssertException(["py3 x = l[10:11:0]"],
+ \ "Vim(py3):ValueError: slice step cannot be zero")
endfunc
" Locked variables
call assert_equal(0, py3eval("vim.bindeval('v:false')"))
call assert_equal(v:none, py3eval("vim.bindeval('v:null')"))
call assert_equal(v:none, py3eval("vim.bindeval('v:none')"))
+
+ " channel/job
+ call assert_equal(v:none, py3eval("vim.bindeval('test_null_channel()')"))
+ call assert_equal(v:none, py3eval("vim.bindeval('test_null_job()')"))
endfunc
" threading
call assert_equal([], py3eval('b[2:0]'))
call assert_equal([], py3eval('b[10:12]'))
call assert_equal([], py3eval('b[-10:-8]'))
+ call AssertException(["py3 x = b[0:3:0]"],
+ \ 'Vim(py3):ValueError: slice step cannot be zero')
+ call AssertException(["py3 b[0:3:0] = 'abc'"],
+ \ 'Vim(py3):ValueError: slice step cannot be zero')
+ call AssertException(["py3 x = b[{}]"],
+ \ 'Vim(py3):TypeError: index must be int or slice, not dict')
+ call AssertException(["py3 b[{}] = 'abc'"],
+ \ 'Vim(py3):TypeError: index must be int or slice, not dict')
+
+ " Test for getting lines using a range
+ call AssertException(["py3 x = b.range(0,3)[0:2:0]"],
+ \ "Vim(py3):ValueError: slice step cannot be zero")
+ call AssertException(["py3 b.range(0,3)[0:2:0] = 'abc'"],
+ \ "Vim(py3):ValueError: slice step cannot be zero")
" Tests BufferAppend and BufferItem
py3 cb.append(b[0])
py3 vim.current.buffer[:] = []
call assert_equal([''], getline(1, '$'))
+ " Test for buffer marks
+ call assert_equal(v:none, py3eval("vim.current.buffer.mark('r')"))
+
" Test for modifying a 'nomodifiable' buffer
setlocal nomodifiable
call AssertException(["py3 vim.current.buffer[0] = 'abc'"],
call assert_equal(["b'testdir'", 'Xfile', "b'src'", 'testdir/Xfile',
\"b'testdir'", 'Xfile'], getline(2, '$'))
close!
+ call AssertException(["py3 vim.chdir(None)"], "Vim(py3):TypeError:")
endfunc
" Test errors
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1151,
/**/
1150,
/**/