| 60 | }, |
| 61 | }); |
| 62 | |
| 63 | return { |
| 64 | combined: result.stdout + result.stderr, |
| 65 | exitCode: result.status ?? 1, |
| 66 | spawnError: result.error, |
| 67 | }; |
| 68 | }; |
| 69 | |
| 70 | const parseAllFilesRow = (output: string): ICoverageResult | null => { |
| 71 | const row = output |
| 72 | .split("\n") |
| 73 | .find((line) => /^\s*All files\s*\|/.test(line)); |
| 74 | |
| 75 | if (row === undefined) { |
| 76 | return null; |
| 77 | } |
| 78 | |
| 79 | const parts = row.split("|").map((segment) => segment.trim()); |
| 80 | const functionPct = parseFloat(parts[1] ?? ""); |
| 81 | const linePct = parseFloat(parts[2] ?? ""); |
| 82 | |
| 83 | if (Number.isNaN(linePct) || Number.isNaN(functionPct)) { |