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:
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user