Improve stack traces from test failures
This commit is contained in:
parent
fb5aaf860c
commit
837b3afbeb
@ -75,7 +75,9 @@
|
|||||||
arg[i] = "{" .. table.concat(arg[i], ", ") .. "}"
|
arg[i] = "{" .. table.concat(arg[i], ", ") .. "}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
error(string.format(format, unpack(arg)), 3)
|
|
||||||
|
local msg = string.format(format, unpack(arg))
|
||||||
|
error(debug.traceback(msg, 3), 3)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -202,8 +204,25 @@
|
|||||||
local _OS_host = _OS
|
local _OS_host = _OS
|
||||||
|
|
||||||
local function error_handler(err)
|
local function error_handler(err)
|
||||||
local msg = debug.traceback(err, 2)
|
local msg = err
|
||||||
msg = msg:sub(1, msg:find("[C]", 1, true) - 3)
|
|
||||||
|
-- if the error doesn't include a stack trace, add one
|
||||||
|
if not msg:find("stack traceback:", 1, true) then
|
||||||
|
msg = debug.traceback(err, 2)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- trim of the trailing context of the originating xpcall
|
||||||
|
local i = msg:find("[C]: in function 'xpcall'", 1, true)
|
||||||
|
if i then
|
||||||
|
msg = msg:sub(1, i - 3)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- if the resulting stack trace is only one level deep, ignore it
|
||||||
|
local n = select(2, msg:gsub('\n', '\n'))
|
||||||
|
if n == 2 then
|
||||||
|
msg = msg:sub(1, msg:find('\n', 1, true) - 1)
|
||||||
|
end
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -269,7 +288,7 @@
|
|||||||
|
|
||||||
local tok, terr = test_teardown(suitetests, testfunc)
|
local tok, terr = test_teardown(suitetests, testfunc)
|
||||||
ok = ok and tok
|
ok = ok and tok
|
||||||
err = err or tok
|
err = err or terr
|
||||||
|
|
||||||
if (not ok) then
|
if (not ok) then
|
||||||
test.print(string.format("%s.%s: %s", suitename, testname, err))
|
test.print(string.format("%s.%s: %s", suitename, testname, err))
|
||||||
|
Loading…
Reference in New Issue
Block a user