diff --git a/cli.mjs b/cli.mjs index a82992b..6b1bca4 100644 --- a/cli.mjs +++ b/cli.mjs @@ -62,4 +62,7 @@ cli.processTargets().then(function() { }) .then(function() { process.exit(0) +}, function(err) { + console.error('\x1b[31mInternal error occured:\x1b[0m', err) + process.exit(2) }) diff --git a/lib/cli.mjs b/lib/cli.mjs index cb94113..ab57dca 100644 --- a/lib/cli.mjs +++ b/lib/cli.mjs @@ -173,6 +173,6 @@ export function printError(err, msg) { console.error('\x1b[31m ' + before + err.toString() + '\x1b[0m\n \x1b[90m' - + err.stack.replace(err.toString(), '')) + + (err.stack || '').replace(err.toString(), '')) console.error('\x1b[0m') } diff --git a/package.json b/package.json index 1f23dd7..3bf6568 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eltro", - "version": "1.0.1", + "version": "1.0.2", "description": "Eltro is a tiny no-dependancy test framework for node", "main": "index.mjs", "scripts": { diff --git a/test/failure.test.mjs b/test/failure.test.mjs index 64ca8af..2a9fadf 100644 --- a/test/failure.test.mjs +++ b/test/failure.test.mjs @@ -26,3 +26,26 @@ e.test('Eltro should support any value in promise fail', async function() { assert.ok(t.failedTests[x].error.stack) } }) + +e.test('Eltro should support any value in throws', async function() { + const t = CreateT() + t.begin() + t.describe('', function() { + t.test('a', function() { throw null }) + t.test('b', function() { throw {} }) + t.test('c', function() { throw { message: 'test' } }) + t.test('d', function() { throw 1234 }) + t.test('e', async function() { throw null }) + t.test('f', async function() { throw {} }) + t.test('g', async function() { throw { message: 'test' } }) + t.test('h', async function() { throw 1234 }) + }) + await t.run() + assert.strictEqual(t.failedTests.length, 8) + + for (let x = 0; x < t.failedTests.length; x++) { + assert.strictEqual(typeof(t.failedTests[x].error), 'object') + assert.ok(t.failedTests[x].error.message) + assert.ok(t.failedTests[x].error.stack) + } +})