From: Chris Duncan Date: Fri, 18 Jul 2025 21:45:20 +0000 (-0700) Subject: Reorganize test globals. X-Git-Tag: v0.10.5~55^2~60 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=df1ea7568879002934540ce8cf87772d72b90ba0;p=libnemo.git Reorganize test globals. --- diff --git a/test/GLOBALS.mjs b/test/GLOBALS.mjs index 10f5cae..10dfd1d 100644 --- a/test/GLOBALS.mjs +++ b/test/GLOBALS.mjs @@ -24,6 +24,17 @@ export { process } export const isNode = process.versions?.node != null +export const failures = [] +export const passes = [] +function fail (err) { + failures.push(err.message) + console.error(`%cFAIL `, 'color:red', err.message, err.cause) +} +function pass (name) { + passes.push(name) + console.log(`%cPASS `, 'color:green', name) +} + export async function click (text, fn) { return new Promise((resolve, rejects) => { const button = document.createElement('button') @@ -103,52 +114,6 @@ export function stats (times) { } } -export const failures = [] -export const passes = [] -function fail (err) { - failures.push(err.message) - console.error(`%cFAIL `, 'color:red', err.message, err.cause) -} -function pass (name) { - passes.push(name) - console.log(`%cPASS `, 'color:green', name) -} - -await suite('TEST RUNNER CHECK', { collapse: true }, async () => { - await new Promise(r => setTimeout(r, 0)) - - console.assert(failures.length === 0) - console.assert(passes.length === 0) - - await test('promise should pass', new Promise(resolve => { resolve('') })) - console.assert(failures.some(call => /.*promise should pass.*/.test(call[0])) === false, `good promise errored`) - console.assert(passes.some(call => /.*promise should pass.*/.test(call)) === true, `good promise not logged`) - - await test('promise should fail', new Promise((resolve, reject) => { reject('FAILURE EXPECTED HERE') })) - console.assert(failures.some(call => /.*promise should fail.*/.test(call)) === true, `bad promise not errored`) - console.assert(passes.some(call => /.*promise should fail.*/.test(call)) === false, 'bad promise logged') - - await test('async should pass', async () => {}) - console.assert(failures.some(call => /.*async should pass.*/.test(call)) === false, 'good async errored') - console.assert(passes.some(call => /.*async should pass.*/.test(call)) === true, 'good async not logged') - - await test('async should fail', async () => { throw new Error('FAILURE EXPECTED HERE') }) - console.assert(failures.some(call => /.*async should fail.*/.test(call)) === true, 'bad async not errored') - console.assert(passes.some(call => /.*async should fail.*/.test(call)) === false, 'bad async logged') - - await test('function should pass', () => {}) - console.assert(failures.some(call => /.*function should pass.*/.test(call)) === false, 'good function errored') - console.assert(passes.some(call => /.*function should pass.*/.test(call)) === true, 'good function not logged') - - await test('function should fail', 'FAILURE EXPECTED HERE') - console.assert(failures.some(call => /.*function should fail.*/.test(call)) === true, 'bad function not errored') - console.assert(passes.some(call => /.*function should fail.*/.test(call)) === false, 'bad function logged') - - failures.splice(0) - passes.splice(0) -}) -console.log(`%cTEST RUNNER CHECK DONE`, 'font-weight:bold') - export function suite (name, opts, fn) { if (fn === undefined) fn = opts return queue.add(async () => { @@ -275,3 +240,38 @@ export const assert = { } } } + +await suite('TEST RUNNER CHECK', { collapse: true }, async () => { + await new Promise(r => setTimeout(r, 0)) + + console.assert(failures.length === 0) + console.assert(passes.length === 0) + + await test('promise should pass', new Promise(resolve => { resolve('') })) + console.assert(failures.some(call => /.*promise should pass.*/.test(call[0])) === false, `good promise errored`) + console.assert(passes.some(call => /.*promise should pass.*/.test(call)) === true, `good promise not logged`) + + await test('promise should fail', new Promise((resolve, reject) => { reject('FAILURE EXPECTED HERE') })) + console.assert(failures.some(call => /.*promise should fail.*/.test(call)) === true, `bad promise not errored`) + console.assert(passes.some(call => /.*promise should fail.*/.test(call)) === false, 'bad promise logged') + + await test('async should pass', async () => {}) + console.assert(failures.some(call => /.*async should pass.*/.test(call)) === false, 'good async errored') + console.assert(passes.some(call => /.*async should pass.*/.test(call)) === true, 'good async not logged') + + await test('async should fail', async () => { throw new Error('FAILURE EXPECTED HERE') }) + console.assert(failures.some(call => /.*async should fail.*/.test(call)) === true, 'bad async not errored') + console.assert(passes.some(call => /.*async should fail.*/.test(call)) === false, 'bad async logged') + + await test('function should pass', () => {}) + console.assert(failures.some(call => /.*function should pass.*/.test(call)) === false, 'good function errored') + console.assert(passes.some(call => /.*function should pass.*/.test(call)) === true, 'good function not logged') + + await test('function should fail', 'FAILURE EXPECTED HERE') + console.assert(failures.some(call => /.*function should fail.*/.test(call)) === true, 'bad function not errored') + console.assert(passes.some(call => /.*function should fail.*/.test(call)) === false, 'bad function logged') + + failures.splice(0) + passes.splice(0) +}) +console.log(`%cTEST RUNNER CHECK DONE`, 'font-weight:bold')