summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/assert.js55
-rw-r--r--test/parallel/test-assert-deep.js24
2 files changed, 50 insertions, 29 deletions
diff --git a/lib/internal/assert.js b/lib/internal/assert.js
index 92c2a1d0af..d3155cf692 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 306e8367d4..3a5fca74d4 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;