feat(script): add bun test summary detector

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-29 16:32:25 +09:00
parent e8dcdded12
commit 255a827135
2 changed files with 67 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
import { describe, expect, test } from "bun:test"
import { hasBunTestSummary } from "./assert-test-summary"
describe("bun test summary detection", () => {
test("#given completed bun test output #when checking for a summary #then it is accepted", () => {
// given
const output = `bun test v1.3.12 (700fc117)
28 pass
0 fail
Ran 28 tests across 1 file. [64.00ms]
`
// when
const hasSummary = hasBunTestSummary(output)
// then
expect(hasSummary).toBe(true)
})
test("#given banner-only bun test output #when checking for a summary #then it is rejected", () => {
// given
const output = "bun test v1.3.12 (700fc117)\n"
// when
const hasSummary = hasBunTestSummary(output)
// then
expect(hasSummary).toBe(false)
})
test("#given zero-count summary output #when checking for a summary #then it is rejected", () => {
// given
const output = "Ran 0 tests across 0 files. [1.00ms]\n"
// when
const hasSummary = hasBunTestSummary(output)
// then
expect(hasSummary).toBe(false)
})
})
+25
View File
@@ -0,0 +1,25 @@
/// <reference types="bun-types" />
export const bunTestSummaryPattern = /^Ran [1-9][0-9]* tests across [1-9][0-9]* files?\./m
export function hasBunTestSummary(output: string): boolean {
return bunTestSummaryPattern.test(output)
}
async function assertTestSummaryFromLog(logPath: string): Promise<void> {
const output = await Bun.file(logPath).text()
if (!hasBunTestSummary(output)) {
throw new Error(`Missing bun test completion summary in ${logPath}`)
}
}
if (import.meta.main) {
const [logPath] = process.argv.slice(2)
if (!logPath) {
throw new Error("Usage: bun run script/assert-test-summary.ts <bun-test-log-path>")
}
await assertTestSummaryFromLog(logPath)
}