screen.lua: dump payload on handler failure

For debugging failures like:

    test/functional/helpers.lua:240: test/functional/ui/screen.lua:898:
    bad argument #1 to 'unpack' (table expected, got number)

    test/functional/helpers.lua:240: test/functional/ui/screen.lua:708:
    attempt to index local 'item' (a number value)

ref #10804
This commit is contained in:
Justin M. Keyes 2019-09-01 15:51:02 -07:00
parent c062149d5b
commit 78ec7981c8
2 changed files with 8 additions and 3 deletions

View File

@ -304,7 +304,7 @@ local function nvim_feed(input)
local written = module.request('nvim_input', input)
if written == nil then
module.assert_alive()
error('nvim_input returned nil (Nvim process terminated?)')
error('crash? (nvim_input returned nil)')
end
input = input:sub(written + 1)
end
@ -592,7 +592,7 @@ end
-- Checks that the Nvim session did not terminate.
function module.assert_alive()
eq(2, module.eval('1+1'))
assert(2 == module.eval('1+1'), 'crash? request failed')
end
local function do_rmdir(path)

View File

@ -615,7 +615,12 @@ function Screen:_redraw(updates)
local handler_name = '_handle_'..method
local handler = self[handler_name]
if handler ~= nil then
handler(self, unpack(update[i]))
local status, res = pcall(handler, self, unpack(update[i]))
if not status then
error(handler_name..' failed'
..'\n payload: '..inspect(update)
..'\n error: '..tostring(res))
end
else
assert(self._on_event,
"Add Screen:"..handler_name.." or call Screen:set_on_event_handler")