diff --git a/lib/internal/assert.js b/lib/internal/assert.js index 92c2a1d0af893e..d3155cf692eebe 100644 --- a/lib/internal/assert.js +++ b/lib/internal/assert.js @@ -205,29 +205,42 @@ function createErrDiff(actual, expected, operator) { res += `\n${green}+${white} ${actualLines[i]}`; printedLines++; // Lines diverge - } else if (actualLines[i] !== expectedLines[i]) { - if (cur > 1 && i > 2) { - if (cur > 4) { - res += `\n${blue}...${white}`; - skipped = true; - } else if (cur > 3) { - res += `\n ${actualLines[i - 2]}`; + } else { + const expectedLine = expectedLines[i]; + let actualLine = actualLines[i]; + let divergingLines = actualLine !== expectedLine && + (!actualLine.endsWith(',') || + actualLine.slice(0, -1) !== expectedLine); + if (divergingLines && + expectedLine.endsWith(',') && + expectedLine.slice(0, -1) === actualLine) { + divergingLines = false; + actualLine += ','; + } + if (divergingLines) { + if (cur > 1 && i > 2) { + if (cur > 4) { + res += `\n${blue}...${white}`; + skipped = true; + } else if (cur > 3) { + res += `\n ${actualLines[i - 2]}`; + printedLines++; + } + res += `\n ${actualLines[i - 1]}`; + printedLines++; + } + lastPos = i; + res += `\n${green}+${white} ${actualLine}`; + other += `\n${red}-${white} ${expectedLine}`; + printedLines += 2; + // Lines are identical + } else { + res += other; + other = ''; + if (cur === 1 || i === 0) { + res += `\n ${actualLine}`; printedLines++; } - res += `\n ${actualLines[i - 1]}`; - printedLines++; - } - lastPos = i; - res += `\n${green}+${white} ${actualLines[i]}`; - other += `\n${red}-${white} ${expectedLines[i]}`; - printedLines += 2; - // Lines are identical - } else { - res += other; - other = ''; - if (cur === 1 || i === 0) { - res += `\n ${actualLines[i]}`; - printedLines++; } } // Inspected object to big (Show ~20 rows max) diff --git a/test/parallel/test-assert-deep.js b/test/parallel/test-assert-deep.js index 306e8367d45502..3a5fca74d4c287 100644 --- a/test/parallel/test-assert-deep.js +++ b/test/parallel/test-assert-deep.js @@ -65,9 +65,13 @@ assert.deepEqual(arr, buf); () => assert.deepStrictEqual(buf2, buf), { code: 'ERR_ASSERTION', - message: `${defaultMsgStartFull}\n\n` + - ' Buffer [Uint8Array] [\n 120,\n 121,\n 122,\n' + - '+ 10,\n+ prop: 1\n- 10\n ]' + message: `${defaultMsgStartFull} ... Lines skipped\n\n` + + ' Buffer [Uint8Array] [\n' + + ' 120,\n' + + '...\n' + + ' 10,\n' + + '+ prop: 1\n' + + ' ]' } ); assert.deepEqual(buf2, buf); @@ -80,9 +84,13 @@ assert.deepEqual(arr, buf); () => assert.deepStrictEqual(arr, arr2), { code: 'ERR_ASSERTION', - message: `${defaultMsgStartFull}\n\n` + - ' Uint8Array [\n 120,\n 121,\n 122,\n' + - '+ 10\n- 10,\n- prop: 5\n ]' + message: `${defaultMsgStartFull} ... Lines skipped\n\n` + + ' Uint8Array [\n' + + ' 120,\n' + + '...\n' + + ' 10,\n' + + '- prop: 5\n' + + ' ]' } ); assert.deepEqual(arr, arr2); @@ -822,7 +830,7 @@ assert.throws( code: 'ERR_ASSERTION', name: 'AssertionError [ERR_ASSERTION]', message: `${defaultMsgStartFull}\n\n ` + - '{\n+ a: 4\n- a: 4,\n- b: true\n }' + '{\n a: 4,\n- b: true\n }' }); assert.throws( () => assert.deepStrictEqual(['a'], { 0: 'a' }), @@ -891,7 +899,7 @@ assert.deepStrictEqual(obj1, obj2); assert.throws( () => assert.deepStrictEqual(arrProxy, [1, 2, 3]), { message: `${defaultMsgStartFull}\n\n` + - ' [\n 1,\n+ 2\n- 2,\n- 3\n ]' } + ' [\n 1,\n 2,\n- 3\n ]' } ); util.inspect.defaultOptions = tmp;