From d47b6786c91908e2601400f4e3e381143049beed Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Fri, 14 Jun 2019 16:14:50 +0200 Subject: assert: wrap validation function errors This makes sure that validation function used by `assert.throws` and `assert.rejects` always throw validatin errors instead of rethrowing the received error. That should improve the debugging experience for developers since they have a better context where the error is coming from and they also get to know what triggered it. PR-URL: https://github.com/nodejs/node/pull/28263 Reviewed-By: Rich Trott Reviewed-By: Benjamin Gruenbaum Reviewed-By: James M Snell --- test/parallel/test-assert-async.js | 15 +++++++++++++++ test/parallel/test-assert.js | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'test') diff --git a/test/parallel/test-assert-async.js b/test/parallel/test-assert-async.js index 8aad1d865c..45447d4563 100644 --- a/test/parallel/test-assert-async.js +++ b/test/parallel/test-assert-async.js @@ -66,6 +66,21 @@ const invalidThenableFunc = () => { code: 'ERR_INVALID_RETURN_VALUE' }) ); + + const err = new Error('foobar'); + const validate = () => { return 'baz'; }; + promises.push(assert.rejects( + () => assert.rejects(Promise.reject(err), validate), + { + message: 'The "validate" validation function is expected to ' + + "return \"true\". Received 'baz'", + code: 'ERR_ASSERTION', + actual: err, + expected: validate, + name: 'AssertionError', + operator: 'rejects', + } + )); } { diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 13f9d6427b..9c59227a78 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -1326,3 +1326,20 @@ assert.throws( 'Received "[Array]"' } ); + +{ + const err = new TypeError('foo'); + const validate = (() => () => ({ a: true, b: [ 1, 2, 3 ] }))(); + assert.throws( + () => assert.throws(() => { throw err; }, validate), + { + message: 'The validation function is expected to ' + + `return "true". Received ${inspect(validate())}`, + code: 'ERR_ASSERTION', + actual: err, + expected: validate, + name: 'AssertionError', + operator: 'throws', + } + ); +} -- cgit v1.2.3