fix formatting log lines causing errors
This commit is contained in:
@ -20,16 +20,29 @@ end
|
||||
---@param log_line string log line
|
||||
---@return chunk[] chunks
|
||||
function format.log_line(log_line)
|
||||
local log_time = string.sub( log_line, string.find(log_line, "%[") + 1,
|
||||
string.find(log_line, "%]") - 1)
|
||||
local colon = string.find(log_line, ":", 11)
|
||||
local log_path = string.sub(log_line, string.find(log_line, "%]") + 2,
|
||||
colon - 1)
|
||||
local log_path_ln = string.sub(log_line, colon + 1,
|
||||
string.find(log_line, ":", colon + 1) - 1)
|
||||
local level = string.sub(log_line, string.find(log_line, "%(") + 1,
|
||||
string.find(log_line, "%)") - 1)
|
||||
local rest = string.sub(log_line, string.find(log_line, "%)") + 2)
|
||||
-- make sure we don't do operations on nil values
|
||||
if not log_line or log_line == "" then
|
||||
return {}
|
||||
end
|
||||
|
||||
-- error on any nil values, this should prevent us from parsing an incorrectly
|
||||
-- formatted log line
|
||||
local log_time, colon, log_path, log_path_ln, level, rest
|
||||
local ok = pcall(function()
|
||||
log_time = string.sub(log_line, string.find(log_line, "%[") + 1,
|
||||
string.find(log_line, "%]") - 1)
|
||||
colon = string.find(log_line, ":", 11)
|
||||
log_path = string.sub(log_line, string.find(log_line, "%]") + 2,
|
||||
colon - 1)
|
||||
log_path_ln = string.sub(log_line, colon + 1,
|
||||
string.find(log_line, ":", colon + 1) - 1)
|
||||
level = string.sub(log_line, string.find(log_line, "%(") + 1,
|
||||
string.find(log_line, "%)") - 1)
|
||||
rest = string.sub(log_line, string.find(log_line, "%)") + 2)
|
||||
end)
|
||||
if not ok then
|
||||
return {}
|
||||
end
|
||||
|
||||
return {
|
||||
{ "[", "" },
|
||||
|
@ -17,6 +17,14 @@ describe("ui log formatting", function()
|
||||
},
|
||||
dep_ui_format.log_line("[11:22:33] file.lua:1:(vim) some fancy message")
|
||||
)
|
||||
|
||||
-- malformed log line
|
||||
assert.same({},
|
||||
dep_ui_format.log_line("11:22:33] file.lua:1:(vim) some fancy message"))
|
||||
|
||||
-- test nil values
|
||||
assert.same({}, dep_ui_format.log_line(""))
|
||||
assert.same({}, dep_ui_format.log_line(nil))
|
||||
end)
|
||||
end)
|
||||
|
||||
|
Reference in New Issue
Block a user