aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/luaeval_spec.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-07-19 17:16:48 -0400
committerGitHub <noreply@github.com>2020-07-19 17:16:48 -0400
commit398201cfabaef47aa93c8a485336a00ef075ad3e (patch)
treeb9e7ae1ca4fdbf31f9fe90c678f75a05e12ad0bf /test/functional/lua/luaeval_spec.lua
parent56f3b95180ba011d9228c30c44eee9a9ab0fef84 (diff)
downloadrneovim-398201cfabaef47aa93c8a485336a00ef075ad3e.tar.gz
rneovim-398201cfabaef47aa93c8a485336a00ef075ad3e.tar.bz2
rneovim-398201cfabaef47aa93c8a485336a00ef075ad3e.zip
lua: Fix crash on unprotected lua errors (#12658)
Can be reproduced with a script like this: -- in some lua file vim.fn.timer_start(10, function() error("uh....") end) -- will cause neovim to crash with the following error. PANIC: unprotected error in call to Lua API (nlua_CFunction_func_call failed.) After this, it will instead print the error message from the top of the stack, like so. tmp/error_nvim.lua:10: uh... Also added an example test. Previously this test caused the embedded nvim to panic.
Diffstat (limited to 'test/functional/lua/luaeval_spec.lua')
-rw-r--r--test/functional/lua/luaeval_spec.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/functional/lua/luaeval_spec.lua b/test/functional/lua/luaeval_spec.lua
index 964ea4561e..75966393b1 100644
--- a/test/functional/lua/luaeval_spec.lua
+++ b/test/functional/lua/luaeval_spec.lua
@@ -255,6 +255,18 @@ describe('luaeval()', function()
]])
end)
+ it('can handle functions with errors', function()
+ eq(true, exec_lua [[
+ vim.fn.timer_start(10, function()
+ error("dead function")
+ end)
+
+ vim.wait(1000, function() return false end)
+
+ return true
+ ]])
+ end)
+
it('should handle passing functions around', function()
command [[
function VimCanCallLuaCallbacks(Concat, Cb)