fix(lua): format errors from luv callbacks using __tostring

This commit is contained in:
bfredl
2025-03-05 10:57:02 +01:00
parent e4c094a84d
commit ebb963a4a0
2 changed files with 74 additions and 17 deletions

View File

@@ -194,4 +194,52 @@ describe('vim.uv', function()
feed('<cr>')
n.assert_alive()
end)
it("doesn't crash on async callbacks throwing nil error", function()
local screen = Screen.new(50, 4)
exec_lua(function()
_G.idle = vim.uv.new_idle()
_G.idle:start(function()
_G.idle:stop()
error()
end)
end)
screen:expect([[
{3: }|
{9:Error executing callback:} |
{9:[NULL]} |
{6:Press ENTER or type command to continue}^ |
]])
feed('<cr>')
exec_lua(function()
_G.idle:close()
end)
end)
it("doesn't crash on async callbacks throwing object as an error", function()
local screen = Screen.new(50, 4)
exec_lua(function()
_G.idle = vim.uv.new_idle()
_G.idle:start(function()
_G.idle:stop()
error(_G.idle) -- userdata with __tostring method
end)
end)
screen:expect([[
{3: }|
{9:Error executing callback:} |
{9:uv_idle_t: 0x{MATCH:%w+}} |
{6:Press ENTER or type command to continue}^ |
]])
feed('<cr>')
exec_lua(function()
_G.idle:close()
end)
end)
end)