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) {
|
||||
const filename = call.getFileName();
|
||||
if (!filename) {
|
||||
return;
|
||||
}
|
||||
|
||||
const line = call.getLineNumber() - 1;
|
||||
const column = call.getColumnNumber() - 1;
|
||||
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.
|
||||
{
|
||||
const e = new EventEmitter();
|
||||
|
Loading…
x
Reference in New Issue
Block a user