From 254f8881b52a3e088e80fcbe05ef896c2ba8db56 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 7 Feb 2018 02:23:40 +0100 Subject: [PATCH] assert: show proper differences Right now it is possible to get an AssertionError from input that has the customInspect function set to always return the same value. That way the error message is actually misleading because the output is going to look the same. This fixes it by deactivating the custom inspect function. PR-URL: https://github.com/nodejs/node/pull/18611 Reviewed-By: Joyee Cheung Reviewed-By: Matteo Collina Reviewed-By: Anna Henningsen --- lib/internal/errors.js | 10 ++++++---- test/parallel/test-assert.js | 6 +++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 927e121ef3baee..f83458a6a1d70f 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -90,9 +90,9 @@ function createErrDiff(actual, expected, operator) { var skipped = false; const util = lazyUtil(); const actualLines = util - .inspect(actual, { compact: false }).split('\n'); + .inspect(actual, { compact: false, customInspect: false }).split('\n'); const expectedLines = util - .inspect(expected, { compact: false }).split('\n'); + .inspect(expected, { compact: false, customInspect: false }).split('\n'); const msg = `Input A expected to ${operator} input B:\n` + `${green}+ expected${white} ${red}- actual${white}`; const skippedMsg = ' ... Lines skipped'; @@ -235,8 +235,10 @@ class AssertionError extends Error { } else if (errorDiff === 1) { // In case the objects are equal but the operator requires unequal, show // the first object and say A equals B - const res = util - .inspect(actual, { compact: false }).split('\n'); + const res = util.inspect( + actual, + { compact: false, customInspect: false } + ).split('\n'); if (res.length > 20) { res[19] = '...'; diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index e3088360e3324b..96d5ff20a5ce26 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -899,7 +899,11 @@ common.expectsError( message: `${start}\n` + `${actExp}\n` + '\n' + - ' {}' + `${minus} {}\n` + + `${plus} {\n` + + `${plus} loop: 'forever',\n` + + `${plus} [Symbol(util.inspect.custom)]: [Function]\n` + + `${plus} }` }); // notDeepEqual tests