Skip to content

Commit ea702e2

Browse files
jeysaltargos
authored andcommitted
assert: handle undefined filename in getErrMessage
When generating an assertion error message, `filename` might be undefined, e.g. if `assert` is called in `eval`. Handle this case gracefully instead of failing with `Cannot read property 'endsWith' of undefined`. Fixes: #20847 PR-URL: #20848 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Khaidi Chu <i@2333.moe> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent ed9e964 commit ea702e2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/assert.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ function getBuffer(fd, assertLine) {
153153

154154
function getErrMessage(call) {
155155
const filename = call.getFileName();
156+
if (!filename) {
157+
return;
158+
}
159+
156160
const line = call.getLineNumber() - 1;
157161
const column = call.getColumnNumber() - 1;
158162
const identifier = `${filename}${line}${column}`;

test/parallel/test-assert.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,16 @@ common.expectsError(
783783
}
784784
);
785785

786+
// works in eval
787+
common.expectsError(
788+
() => new Function('assert', 'assert(1 === 2);')(assert),
789+
{
790+
code: 'ERR_ASSERTION',
791+
type: assert.AssertionError,
792+
message: 'false == true'
793+
}
794+
);
795+
786796
// Do not try to check Node.js modules.
787797
{
788798
const e = new EventEmitter();

0 commit comments

Comments
 (0)