diff --git a/lib/assert.js b/lib/assert.js index 1471ba91c12..0abe9211278 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -193,6 +193,19 @@ function getErrMessage(call) { if (EOL === '\r\n') { message = message.replace(/\r\n/g, '\n'); } + // Always normalize indentation, otherwise the message could look weird. + if (message.indexOf('\n') !== -1) { + const tmp = message.split('\n'); + message = tmp[0]; + for (var i = 1; i < tmp.length; i++) { + let pos = 0; + while (pos < column && + (tmp[i][pos] === ' ' || tmp[i][pos] === '\t')) { + pos++; + } + message += `\n ${tmp[i].slice(pos)}`; + } + } message = 'The expression evaluated to a falsy value:' + `\n\n assert${ok}(${message})\n`; } diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index b731b9a73ea..bb58e2857f4 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -694,15 +694,56 @@ common.expectsError( { code: 'ERR_ASSERTION', type: assert.AssertionError, - message: 'The expression evaluated to a falsy value:\n\n ' + - "assert((() => 'string')()\n" + - ' // eslint-disable-next-line\n' + - ' ===\n' + - ' 123 instanceof\n' + - ' Buffer)\n' + message: 'The expression evaluated to a falsy value:\n\n' + + ' assert((() => \'string\')()\n' + + ' // eslint-disable-next-line\n' + + ' ===\n' + + ' 123 instanceof\n' + + ' Buffer)\n' } ); +common.expectsError( + () => { + a( + (() => 'string')() + // eslint-disable-next-line + === + 123 instanceof + Buffer + ); + }, + { + code: 'ERR_ASSERTION', + type: assert.AssertionError, + message: 'The expression evaluated to a falsy value:\n\n' + + ' assert((() => \'string\')()\n' + + ' // eslint-disable-next-line\n' + + ' ===\n' + + ' 123 instanceof\n' + + ' Buffer)\n' + } +); + +/* eslint-disable indent */ +common.expectsError(() => { +a(( + () => 'string')() === +123 instanceof +Buffer +); +}, { + code: 'ERR_ASSERTION', + type: assert.AssertionError, + message: 'The expression evaluated to a falsy value:\n\n' + + ' assert((\n' + + ' () => \'string\')() ===\n' + + ' 123 instanceof\n' + + ' Buffer)\n' + } +); +/* eslint-enable indent */ + common.expectsError( () => assert(null, undefined), {