Skip to content

Commit d039e6f

Browse files
aduh95targos
authored andcommitted
assert: refactor to avoid unsafe array iteration
PR-URL: #37344 Reviewed-By: Darshan Sen <raisinten@gmail.com>
1 parent 9ac8c74 commit d039e6f

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
validateObject(options, 'options');
@@ -467,16 +478,11 @@ class AssertionError extends Error {
467478
const tmpActual = this.actual;
468479
const tmpExpected = this.expected;
469480

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

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

0 commit comments

Comments
 (0)