Something went wrong. Try again.
javascript for 🐜's, a tiny runtime with big ambitions antjs.org
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344const assert = require('node:assert');
const caught = fn => { try { fn(); } catch (e) { return e; } assert.fail('expected a throw'); };const fields = e => [e.name, e.code, e.actual, e.expected, e.operator, e.generatedMessage];
assert.deepStrictEqual(fields(caught(() => assert.ok(0))), ['AssertionError', 'ERR_ASSERTION', 0, true, '==', true]);assert.deepStrictEqual(fields(caught(() => assert.equal(1, 2))), ['AssertionError', 'ERR_ASSERTION', 1, 2, '==', true]);assert.deepStrictEqual(fields(caught(() => assert.notEqual(1, 1))), ['AssertionError', 'ERR_ASSERTION', 1, 1, '!=', true]);assert.deepStrictEqual(fields(caught(() => assert.strictEqual(1, 2, 'custom'))), ['AssertionError', 'ERR_ASSERTION', 1, 2, 'strictEqual', false]);assert.deepStrictEqual(fields(caught(() => assert.notStrictEqual(1, 1))).slice(4), ['notStrictEqual', true]);assert.strictEqual(caught(() => assert.deepEqual({ a: 1 }, { a: 2 })).operator, 'deepEqual');assert.strictEqual(caught(() => assert.notDeepEqual(1, 1)).operator, 'notDeepEqual');assert.strictEqual(caught(() => assert.deepStrictEqual([1], [2])).operator, 'deepStrictEqual');assert.strictEqual(caught(() => assert.notDeepStrictEqual(1, 1)).operator, 'notDeepStrictEqual');assert.strictEqual(caught(() => assert.match('abc', /x/)).operator, 'match');assert.deepStrictEqual(fields(caught(() => assert.fail())), ['AssertionError', 'ERR_ASSERTION', undefined, undefined, 'fail', true]);
const own = new TypeError('own');assert.strictEqual(caught(() => assert.fail(own)), own);assert.strictEqual(caught(() => assert.ok(false, own)), own);
assert.strictEqual(caught(() => assert.throws(() => {})).message, 'Missing expected exception.');assert.strictEqual(caught(() => assert.throws(() => {}, 'why')).message, 'Missing expected exception: why');assert.strictEqual(caught(() => assert.throws(() => {}, TypeError)).message, 'Missing expected exception (TypeError).');assert.strictEqual(caught(() => assert.throws(() => {}, TypeError, 'why')).message, 'Missing expected exception (TypeError): why');assert.strictEqual(caught(() => assert.throws(() => {}, TypeError)).expected, TypeError);assert.strictEqual(caught(() => assert.doesNotThrow(() => { throw new Error('zz'); }, 'why')).message, 'Got unwanted exception: why\nActual message: "zz"');
const err = caught(() => assert.ok(false, 'm'));assert.strictEqual(String(err), 'AssertionError [ERR_ASSERTION]: m');assert.strictEqual(err.stack.split('\n')[0], 'AssertionError [ERR_ASSERTION]: m');assert.deepStrictEqual(Object.keys(err).filter(k => k !== 'diff'), ['generatedMessage', 'code', 'actual', 'expected', 'operator']);assert.ok(err instanceof assert.AssertionError && err instanceof Error);
const coded = caught(() => Buffer.concat(1));assert.strictEqual(String(coded).split(':')[0], 'TypeError [ERR_INVALID_ARG_TYPE]');assert.strictEqual(coded.stack.split(':')[0], 'TypeError [ERR_INVALID_ARG_TYPE]');const userCoded = Object.assign(new Error('u'), { code: 'ERR_USER' });assert.strictEqual(String(userCoded), 'Error: u');const fsErr = caught(() => require('fs').readFileSync('/definitely/missing/file'));assert.ok(String(fsErr).startsWith('Error: ENOENT'), String(fsErr));
console.log('assert error fields OK');