diff options
| author | EuAndreh <eu@euandre.org> | 2023-10-06 07:38:46 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2023-11-09 06:58:46 -0300 |
| commit | af33deff64661769acc7762d22e7e8bea051c318 (patch) | |
| tree | a939d2273490aee5f75ccb5692d3b9592b17f318 /tests/runner.js | |
| parent | doc/rfc/: Add verbatim text for RFC 1459 and 281{0,1,2,3} (diff) | |
| download | papod-af33deff64661769acc7762d22e7e8bea051c318.tar.gz papod-af33deff64661769acc7762d22e7e8bea051c318.tar.xz | |
Initial project structure
Diffstat (limited to 'tests/runner.js')
| -rw-r--r-- | tests/runner.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/runner.js b/tests/runner.js new file mode 100644 index 0000000..2e4e2ce --- /dev/null +++ b/tests/runner.js @@ -0,0 +1,56 @@ +import { getExit, ARGV } from "../src/compat.js"; +import { eq } from "../src/utils.js"; + +class AssertionError extends Error {} + +const red = s => `\x1b[31m${s}\x1b[0m`; +const green = s => `\x1b[32m${s}\x1b[0m`; +const yellow = s => `\x1b[33m${s}\x1b[0m`; + +const t = { + tap: x => { + console.error("tap:", x); + return x; + }, + start: msg => { + console.error(`${msg}:`); + }, + test: (msg, fn) => { + try { + fn(); + console.error(`${yellow("testing")}: ${msg}... ${green("OK")}`); + } catch (e) { + console.error(`${yellow("testing")}: ${msg}... ${red("FAIL")}`); + throw e; + } + }, + assertEq: (expected, given, msg = "") => { + if (!eq(expected, given)) { + console.error("expected:", expected, "\ngiven: ", given); + throw new AssertionError(`${red(msg)}`); + } + }, + assert: (x, msg = "") => { + if (!x) { + throw new AssertionError(`${red(msg)}`); + } + }, +}; + +const main = async () => { + const { tests } = await import(`../${ARGV[1]}`); + for (const testFn of tests) { + await testFn(t); + } +}; + + +getExit().then(async exit => { + try { + await main(); + exit(0); + } catch (e) { + console.error(e); + exit(1); + } +}); |
