forked from aniani/vim
patch 8.2.2696: Lua test fails with Lua 5.4.3 and later
Problem: Lua test fails with Lua 5.4.3 and later. Solution: Check for different error messages. (Yegappan Lakshmanan, closes #8050)
This commit is contained in:
@@ -12,13 +12,20 @@ endfunc
|
|||||||
CheckFeature lua
|
CheckFeature lua
|
||||||
CheckFeature float
|
CheckFeature float
|
||||||
|
|
||||||
let s:luaver = split(split(luaeval('_VERSION'), ' ')[1], '\.')
|
" Depending on the lua version, the error messages are different.
|
||||||
|
let s:luaver = split(split(systemlist('lua -v')[0], ' ')[1], '\.')
|
||||||
let s:major = str2nr(s:luaver[0])
|
let s:major = str2nr(s:luaver[0])
|
||||||
let s:minor = str2nr(s:luaver[1])
|
let s:minor = str2nr(s:luaver[1])
|
||||||
if s:major < 5 || (s:major == 5 && s:minor < 3)
|
let s:patch = str2nr(s:luaver[2])
|
||||||
let s:lua_53_or_later = 0
|
let s:lua_53_or_later = 0
|
||||||
else
|
let s:lua_543_or_later = 0
|
||||||
|
if (s:major == 5 && s:minor >= 3) || s:major > 5
|
||||||
let s:lua_53_or_later = 1
|
let s:lua_53_or_later = 1
|
||||||
|
if (s:major == 5
|
||||||
|
\ && ((s:minor == 4 && s:patch >= 3) || s:minor > 4))
|
||||||
|
\ || s:major > 5
|
||||||
|
let s:lua_543_or_later = 1
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
func TearDown()
|
func TearDown()
|
||||||
@@ -55,10 +62,14 @@ func Test_lua_luado()
|
|||||||
" Error cases
|
" Error cases
|
||||||
call assert_fails('luado string.format()',
|
call assert_fails('luado string.format()',
|
||||||
\ "[string \"vim chunk\"]:1: bad argument #1 to 'format' (string expected, got no value)")
|
\ "[string \"vim chunk\"]:1: bad argument #1 to 'format' (string expected, got no value)")
|
||||||
call assert_fails('luado func()',
|
if s:lua_543_or_later
|
||||||
\ s:lua_53_or_later
|
let msg = "[string \"vim chunk\"]:1: global 'func' is not callable (a nil value)"
|
||||||
\ ? "[string \"vim chunk\"]:1: attempt to call a nil value (global 'func')"
|
elseif s:lua_53_or_later
|
||||||
\ : "[string \"vim chunk\"]:1: attempt to call global 'func' (a nil value)")
|
let msg = "[string \"vim chunk\"]:1: attempt to call a nil value (global 'func')"
|
||||||
|
else
|
||||||
|
let msg = "[string \"vim chunk\"]:1: attempt to call global 'func' (a nil value)"
|
||||||
|
endif
|
||||||
|
call assert_fails('luado func()', msg)
|
||||||
call assert_fails('luado error("failed")', "[string \"vim chunk\"]:1: failed")
|
call assert_fails('luado error("failed")', "[string \"vim chunk\"]:1: failed")
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -143,10 +154,14 @@ func Test_lua_window()
|
|||||||
" Window 3 does not exist so vim.window(3) should return nil
|
" Window 3 does not exist so vim.window(3) should return nil
|
||||||
call assert_equal('nil', luaeval('tostring(vim.window(3))'))
|
call assert_equal('nil', luaeval('tostring(vim.window(3))'))
|
||||||
|
|
||||||
call assert_fails("let n = luaeval('vim.window().xyz()')",
|
if s:lua_543_or_later
|
||||||
\ s:lua_53_or_later
|
let msg = "[string \"luaeval\"]:1: field 'xyz' is not callable (a nil value)"
|
||||||
\ ? "[string \"luaeval\"]:1: attempt to call a nil value (field 'xyz')"
|
elseif s:lua_53_or_later
|
||||||
\ : "[string \"luaeval\"]:1: attempt to call field 'xyz' (a nil value)")
|
let msg = "[string \"luaeval\"]:1: attempt to call a nil value (field 'xyz')"
|
||||||
|
else
|
||||||
|
let msg = "[string \"luaeval\"]:1: attempt to call field 'xyz' (a nil value)"
|
||||||
|
endif
|
||||||
|
call assert_fails("let n = luaeval('vim.window().xyz()')", msg)
|
||||||
call assert_fails('lua vim.window().xyz = 1',
|
call assert_fails('lua vim.window().xyz = 1',
|
||||||
\ "[string \"vim chunk\"]:1: invalid window property: `xyz'")
|
\ "[string \"vim chunk\"]:1: invalid window property: `xyz'")
|
||||||
|
|
||||||
@@ -331,10 +346,14 @@ func Test_lua_buffer_insert()
|
|||||||
call assert_equal('4', luaeval('vim.buffer()[4]'))
|
call assert_equal('4', luaeval('vim.buffer()[4]'))
|
||||||
call assert_equal(v:null, luaeval('vim.buffer()[5]'))
|
call assert_equal(v:null, luaeval('vim.buffer()[5]'))
|
||||||
call assert_equal(v:null, luaeval('vim.buffer()[{}]'))
|
call assert_equal(v:null, luaeval('vim.buffer()[{}]'))
|
||||||
call assert_fails('lua vim.buffer():xyz()',
|
if s:lua_543_or_later
|
||||||
\ s:lua_53_or_later
|
let msg = "[string \"vim chunk\"]:1: method 'xyz' is not callable (a nil value)"
|
||||||
\ ? "[string \"vim chunk\"]:1: attempt to call a nil value (method 'xyz')"
|
elseif s:lua_53_or_later
|
||||||
\ : "[string \"vim chunk\"]:1: attempt to call method 'xyz' (a nil value)")
|
let msg = "[string \"vim chunk\"]:1: attempt to call a nil value (method 'xyz')"
|
||||||
|
else
|
||||||
|
let msg = "[string \"vim chunk\"]:1: attempt to call method 'xyz' (a nil value)"
|
||||||
|
endif
|
||||||
|
call assert_fails('lua vim.buffer():xyz()', msg)
|
||||||
call assert_fails('lua vim.buffer()[1] = {}',
|
call assert_fails('lua vim.buffer()[1] = {}',
|
||||||
\ '[string "vim chunk"]:1: wrong argument to change')
|
\ '[string "vim chunk"]:1: wrong argument to change')
|
||||||
bwipe!
|
bwipe!
|
||||||
@@ -438,10 +457,14 @@ func Test_lua_list()
|
|||||||
lua ll = vim.eval('l')
|
lua ll = vim.eval('l')
|
||||||
let x = luaeval("ll[3]")
|
let x = luaeval("ll[3]")
|
||||||
call assert_equal(v:null, x)
|
call assert_equal(v:null, x)
|
||||||
call assert_fails('let x = luaeval("ll:xyz(3)")',
|
if s:lua_543_or_later
|
||||||
\ s:lua_53_or_later
|
let msg = "[string \"luaeval\"]:1: method 'xyz' is not callable (a nil value)"
|
||||||
\ ? "[string \"luaeval\"]:1: attempt to call a nil value (method 'xyz')"
|
elseif s:lua_53_or_later
|
||||||
\ : "[string \"luaeval\"]:1: attempt to call method 'xyz' (a nil value)")
|
let msg = "[string \"luaeval\"]:1: attempt to call a nil value (method 'xyz')"
|
||||||
|
else
|
||||||
|
let msg = "[string \"luaeval\"]:1: attempt to call method 'xyz' (a nil value)"
|
||||||
|
endif
|
||||||
|
call assert_fails('let x = luaeval("ll:xyz(3)")', msg)
|
||||||
let y = luaeval("ll[{}]")
|
let y = luaeval("ll[{}]")
|
||||||
call assert_equal(v:null, y)
|
call assert_equal(v:null, y)
|
||||||
|
|
||||||
@@ -625,10 +648,14 @@ func Test_lua_blob()
|
|||||||
call assert_equal(2, n)
|
call assert_equal(2, n)
|
||||||
let n = luaeval('lb[6]')
|
let n = luaeval('lb[6]')
|
||||||
call assert_equal(v:null, n)
|
call assert_equal(v:null, n)
|
||||||
call assert_fails('let x = luaeval("lb:xyz(3)")',
|
if s:lua_543_or_later
|
||||||
\ s:lua_53_or_later
|
let msg = "[string \"luaeval\"]:1: method 'xyz' is not callable (a nil value)"
|
||||||
\ ? "[string \"luaeval\"]:1: attempt to call a nil value (method 'xyz')"
|
elseif s:lua_53_or_later
|
||||||
\ : "[string \"luaeval\"]:1: attempt to call method 'xyz' (a nil value)")
|
let msg = "[string \"luaeval\"]:1: attempt to call a nil value (method 'xyz')"
|
||||||
|
else
|
||||||
|
let msg = "[string \"luaeval\"]:1: attempt to call method 'xyz' (a nil value)"
|
||||||
|
endif
|
||||||
|
call assert_fails('let x = luaeval("lb:xyz(3)")', msg)
|
||||||
let y = luaeval("lb[{}]")
|
let y = luaeval("lb[{}]")
|
||||||
call assert_equal(v:null, y)
|
call assert_equal(v:null, y)
|
||||||
|
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2696,
|
||||||
/**/
|
/**/
|
||||||
2695,
|
2695,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user