From 2599af74bb4d9b288c91cc4d2510a54aa09afcc0 Mon Sep 17 00:00:00 2001 From: rowan Date: Wed, 9 Apr 2025 20:50:40 -0500 Subject: [PATCH] add terminal runner --- src/runner.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/runner.js b/src/runner.js index c0df475..164816c 100644 --- a/src/runner.js +++ b/src/runner.js @@ -30,6 +30,7 @@ const process = ([name, tests]) => { } else if (failLen === len) { color = Red } + const header = `${style(name, Bold, color)} (${passLen}/${len})` const text = results.map(result => { @@ -50,27 +51,35 @@ const makeSummary = results => { ]), [0, 0] ) + return { passed, failed, toString() { + const summary = `test result: ${failed}. ${passed} passed; ${failed} failed` + const failures = results .filter(result => result.failed.length) - .flatMap(result => { - return result.failed.map(({ description, error }) => { - return ` ${result.name}::${description}\n${error.stack}` - }).join('\n\n') - }).join('\n\n') - - const summary = `test result: ${failed}. ${passed} passed; ${failed} failed` + .flatMap(result => + result.failed.map(({ description, error }) => + ` ${result.name}::${description}\n${error.stack}` + ).join('\n\n') + ).join('\n\n') return `failures:\n${failures}\n\n${summary}` } } } export const term = tests => { - const suites = Object.entries(tests).map(process) - suites.forEach(s => console.log(s.toString())) - console.log(makeSummary(suites).toString()) + const results = Object.entries(tests).map(process) + + return { + results, + toString() { + const suites = results.map(r => r.toString()) + const summary = makeSummary(results).toString() + return `${suites}\n${summary}` + } + } }