fix formatting log lines causing errors

This commit is contained in:
2025-07-03 17:02:33 -04:00
parent 1cd5f63f8e
commit adec93b7f4
2 changed files with 31 additions and 10 deletions

View File

@ -20,16 +20,29 @@ end
---@param log_line string log line ---@param log_line string log line
---@return chunk[] chunks ---@return chunk[] chunks
function format.log_line(log_line) function format.log_line(log_line)
local log_time = string.sub( log_line, string.find(log_line, "%[") + 1, -- 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) string.find(log_line, "%]") - 1)
local colon = string.find(log_line, ":", 11) colon = string.find(log_line, ":", 11)
local log_path = string.sub(log_line, string.find(log_line, "%]") + 2, log_path = string.sub(log_line, string.find(log_line, "%]") + 2,
colon - 1) colon - 1)
local log_path_ln = string.sub(log_line, colon + 1, log_path_ln = string.sub(log_line, colon + 1,
string.find(log_line, ":", colon + 1) - 1) string.find(log_line, ":", colon + 1) - 1)
local level = string.sub(log_line, string.find(log_line, "%(") + 1, level = string.sub(log_line, string.find(log_line, "%(") + 1,
string.find(log_line, "%)") - 1) string.find(log_line, "%)") - 1)
local rest = string.sub(log_line, string.find(log_line, "%)") + 2) rest = string.sub(log_line, string.find(log_line, "%)") + 2)
end)
if not ok then
return {}
end
return { return {
{ "[", "" }, { "[", "" },

View File

@ -17,6 +17,14 @@ describe("ui log formatting", function()
}, },
dep_ui_format.log_line("[11:22:33] file.lua:1:(vim) some fancy message") 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)
end) end)