From 4ca2ccb9fd4e17ce9c2cf8b65be8accfa94b7a1e Mon Sep 17 00:00:00 2001 From: Kat <00-kat@proton.me> Date: Fri, 20 Mar 2026 18:47:03 +1100 Subject: [PATCH] cmd/pkgserver: serialize raw log list for go test consumption --- cmd/pkgserver/ui/static/test.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/cmd/pkgserver/ui/static/test.ts b/cmd/pkgserver/ui/static/test.ts index 19edbca..ac5b33e 100644 --- a/cmd/pkgserver/ui/static/test.ts +++ b/cmd/pkgserver/ui/static/test.ts @@ -35,11 +35,11 @@ function checkDuplicates(parent: string, names: { name: string }[]) { class FailNowSentinel {} export class TestController { - #logBuf: string[]; + #logs: string[]; #failed: boolean; constructor() { - this.#logBuf = []; + this.#logs = []; this.#failed = false; } @@ -57,7 +57,7 @@ export class TestController { } log(message: string) { - this.#logBuf.push(message); + this.#logs.push(message); } error(message: string) { @@ -70,8 +70,8 @@ export class TestController { this.failNow(); } - getLog(): string { - return this.#logBuf.join("\n"); + getLog(): string[] { + return this.#logs; } } @@ -80,7 +80,7 @@ export class TestController { export interface TestResult { success: boolean; - output: string; + logs: string[]; } export function run(reporter: Reporter) { @@ -105,7 +105,7 @@ function runTests(reporter: Reporter, parents: string[], node: TestTree) { controller.error(extractExceptionString(e)); } } - reporter.update(path, { success: !controller.failed(), output: controller.getLog() }); + reporter.update(path, { success: !controller.failed(), logs: controller.getLog() }); } function extractExceptionString(e: any): string { @@ -192,10 +192,13 @@ export class StreamReporter implements Reporter { #writeOutput(test: { name: string } & TestResult, prefix: string, nested: boolean) { let output = ""; - if (test.output) { - const lines = test.output.split("\n"); + if (test.logs.length) { + // Individual logs might span multiple lines, so join them together + // then split it again. + const logStr = test.logs.join("\n"); + const lines = logStr.split("\n"); if (lines.length <= 1) { - output = `: ${test.output}`; + output = `: ${logStr}`; } else { const padding = nested ? " " : " "; output = ":\n" + lines.map((line) => padding + line).join("\n"); @@ -239,9 +242,9 @@ export class DOMReporter implements Reporter { } const p = document.createElement("p"); p.classList.add("test-desc"); - if (result.output) { + if (result.logs.length) { const pre = document.createElement("pre"); - pre.appendChild(document.createTextNode(result.output)); + pre.appendChild(document.createTextNode(result.logs.join("\n"))); p.appendChild(pre); } else { p.classList.add("italic");