fix TSamFailedOnly and the output formatting for the jest-runner
This commit is contained in:
@@ -241,21 +241,28 @@ end
|
||||
|
||||
function runner.parse_results(output)
|
||||
if not output or output == "" then
|
||||
return { passes = {}, failures = {}, skips = {} }
|
||||
return { passes = {}, failures = {}, skips = {}, display = { passes = {}, failures = {}, skips = {} } }
|
||||
end
|
||||
local passes = {}
|
||||
local failures = {}
|
||||
local skips = {}
|
||||
local display = { passes = {}, failures = {}, skips = {} }
|
||||
for line in output:gmatch("[^\n]+") do
|
||||
local ok, data = pcall(vim.json.decode, line)
|
||||
if ok and type(data) == "table" then
|
||||
if data.Test and data.Test ~= "" then
|
||||
if data.Action == "pass" then
|
||||
table.insert(passes, data.Test)
|
||||
local short = data.Test:match("([^/]+)$") or data.Test
|
||||
table.insert(display.passes, short)
|
||||
elseif data.Action == "fail" then
|
||||
table.insert(failures, data.Test)
|
||||
local short = data.Test:match("([^/]+)$") or data.Test
|
||||
table.insert(display.failures, short)
|
||||
elseif data.Action == "skip" then
|
||||
table.insert(skips, data.Test)
|
||||
local short = data.Test:match("([^/]+)$") or data.Test
|
||||
table.insert(display.skips, short)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -264,56 +271,65 @@ function runner.parse_results(output)
|
||||
passes = collect_unique(passes),
|
||||
failures = collect_unique(failures),
|
||||
skips = collect_unique(skips),
|
||||
display = display,
|
||||
}
|
||||
end
|
||||
|
||||
function runner.output_parser()
|
||||
local seen_pass = {}
|
||||
local seen_fail = {}
|
||||
local failures = {}
|
||||
local passes = {}
|
||||
local skips = {}
|
||||
function runner.output_parser()
|
||||
local seen_pass = {}
|
||||
local seen_fail = {}
|
||||
local failures = {}
|
||||
local passes = {}
|
||||
local skips = {}
|
||||
local display = { passes = {}, failures = {}, skips = {} }
|
||||
|
||||
return {
|
||||
on_line = function(line, _state)
|
||||
local ok, data = pcall(vim.json.decode, line)
|
||||
if not ok or type(data) ~= "table" then
|
||||
return {
|
||||
on_line = function(line, _state)
|
||||
local ok, data = pcall(vim.json.decode, line)
|
||||
if not ok or type(data) ~= "table" then
|
||||
return nil
|
||||
end
|
||||
local name = data.Test
|
||||
if not name or name == "" then
|
||||
return nil
|
||||
end
|
||||
local short = name:match("([^/]+)$") or name
|
||||
if data.Action == "pass" and not seen_pass[name] then
|
||||
seen_pass[name] = true
|
||||
table.insert(passes, name)
|
||||
table.insert(display.passes, short)
|
||||
return {
|
||||
passes = { name },
|
||||
failures = {},
|
||||
skips = {},
|
||||
display = { passes = { short }, failures = {}, skips = {} },
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
elseif data.Action == "fail" and not seen_fail[name] then
|
||||
seen_fail[name] = true
|
||||
table.insert(failures, name)
|
||||
table.insert(display.failures, short)
|
||||
return {
|
||||
passes = {},
|
||||
failures = { name },
|
||||
skips = {},
|
||||
display = { passes = {}, failures = { short }, skips = {} },
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
elseif data.Action == "skip" and not seen_pass[name] then
|
||||
seen_pass[name] = true
|
||||
table.insert(skips, name)
|
||||
table.insert(display.skips, short)
|
||||
return {
|
||||
passes = {},
|
||||
failures = {},
|
||||
skips = { name },
|
||||
display = { passes = {}, failures = {}, skips = { short } },
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
end
|
||||
return nil
|
||||
end
|
||||
local name = data.Test
|
||||
if not name or name == "" then
|
||||
return nil
|
||||
end
|
||||
if data.Action == "pass" and not seen_pass[name] then
|
||||
seen_pass[name] = true
|
||||
table.insert(passes, name)
|
||||
return {
|
||||
passes = { name },
|
||||
failures = {},
|
||||
skips = {},
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
elseif data.Action == "fail" and not seen_fail[name] then
|
||||
seen_fail[name] = true
|
||||
table.insert(failures, name)
|
||||
return {
|
||||
passes = {},
|
||||
failures = { name },
|
||||
skips = {},
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
elseif data.Action == "skip" and not seen_pass[name] then
|
||||
seen_pass[name] = true
|
||||
table.insert(skips, name)
|
||||
return {
|
||||
passes = {},
|
||||
failures = {},
|
||||
skips = { name },
|
||||
failures_all = vim.deepcopy(failures),
|
||||
}
|
||||
end
|
||||
return nil
|
||||
end,
|
||||
end,
|
||||
on_complete = function(_output, _state)
|
||||
return nil
|
||||
end,
|
||||
|
||||
Reference in New Issue
Block a user