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: https://github.com/nodejs/node/issues/20847 PR-URL: https://github.com/nodejs/node/pull/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>
This commit is contained in:
parent
ec39e62ff2
commit
a5d86f8c4e
@ -154,6 +154,10 @@ function getBuffer(fd, assertLine) {
|
|||||||
|
|
||||||
function getErrMessage(call) {
|
function getErrMessage(call) {
|
||||||
const filename = call.getFileName();
|
const filename = call.getFileName();
|
||||||
|
if (!filename) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const line = call.getLineNumber() - 1;
|
const line = call.getLineNumber() - 1;
|
||||||
const column = call.getColumnNumber() - 1;
|
const column = call.getColumnNumber() - 1;
|
||||||
const identifier = `${filename}${line}${column}`;
|
const identifier = `${filename}${line}${column}`;
|
||||||
|
@ -783,6 +783,16 @@ common.expectsError(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// works in eval
|
||||||
|
common.expectsError(
|
||||||
|
() => new Function('assert', 'assert(1 === 2);')(assert),
|
||||||
|
{
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
type: assert.AssertionError,
|
||||||
|
message: 'false == true'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Do not try to check Node.js modules.
|
// Do not try to check Node.js modules.
|
||||||
{
|
{
|
||||||
const e = new EventEmitter();
|
const e = new EventEmitter();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user