Skip to content

Commit cfff3b4

Browse files
aduh95targos
authored andcommitted
assert: refactor to avoid unsafe array iteration
PR-URL: #37344 Reviewed-By: Darshan Sen <[email protected]>
1 parent f5541dd commit cfff3b4

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

lib/internal/assert/assertion_error.js

+16-10
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,17 @@ function createErrDiff(actual, expected, operator) {
313313
return `${msg}${skipped ? skippedMsg : ''}\n${res}${other}${end}${indicator}`;
314314
}
315315

316+
function addEllipsis(string) {
317+
const lines = StringPrototypeSplit(string, '\n', 11);
318+
if (lines.length > 10) {
319+
lines.length = 10;
320+
return `${ArrayPrototypeJoin(lines, '\n')}\n...`;
321+
} else if (string.length > 512) {
322+
return `${StringPrototypeSlice(string, 512)}...`;
323+
}
324+
return string;
325+
}
326+
316327
class AssertionError extends Error {
317328
constructor(options) {
318329
if (typeof options !== 'object' || options === null) {
@@ -469,16 +480,11 @@ class AssertionError extends Error {
469480
const tmpActual = this.actual;
470481
const tmpExpected = this.expected;
471482

472-
for (const name of ['actual', 'expected']) {
473-
if (typeof this[name] === 'string') {
474-
const lines = StringPrototypeSplit(this[name], '\n');
475-
if (lines.length > 10) {
476-
lines.length = 10;
477-
this[name] = `${ArrayPrototypeJoin(lines, '\n')}\n...`;
478-
} else if (this[name].length > 512) {
479-
this[name] = `${StringPrototypeSlice(this[name], 512)}...`;
480-
}
481-
}
483+
if (typeof this.actual === 'string') {
484+
this.actual = addEllipsis(this.actual);
485+
}
486+
if (typeof this.expected === 'string') {
487+
this.expected = addEllipsis(this.expected);
482488
}
483489

484490
// This limits the `actual` and `expected` property default inspection to

0 commit comments

Comments
 (0)