Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 18071db

Browse filesBrowse files
BridgeARMylesBorins
authored andcommitted
assert: fix throws trace
The current stack trace thrown in case `assert.throws(fn, object)` is used did not filter the stack trace. This fixes it. Backport-PR-URL: #23223 PR-URL: #18595 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
1 parent 562787e commit 18071db
Copy full SHA for 18071db

File tree

Expand file treeCollapse file tree

3 files changed

+35
-19
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+35
-19
lines changed
Open diff view settings
Collapse file

‎lib/assert.js‎

Copy file name to clipboardExpand all lines: lib/assert.js
+15-19Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -661,11 +661,17 @@ assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
661661
}
662662
};
663663

664-
function createMsg(msg, key, actual, expected) {
665-
if (msg)
666-
return msg;
667-
return `${key}: expected ${inspect(expected[key])}, ` +
668-
`not ${inspect(actual[key])}`;
664+
function compareExceptionKey(actual, expected, key, msg) {
665+
if (!innerDeepEqual(actual[key], expected[key], true)) {
666+
innerFail({
667+
actual: actual[key],
668+
expected: expected[key],
669+
message: msg || `${key}: expected ${inspect(expected[key])}, ` +
670+
`not ${inspect(actual[key])}`,
671+
operator: 'throws',
672+
stackStartFn: assert.throws
673+
});
674+
}
669675
}
670676

671677
function expectedException(actual, expected, msg) {
@@ -680,23 +686,13 @@ function expectedException(actual, expected, msg) {
680686
// The name and message could be non enumerable. Therefore test them
681687
// explicitly.
682688
if ('name' in expected) {
683-
assert.strictEqual(
684-
actual.name,
685-
expected.name,
686-
createMsg(msg, 'name', actual, expected));
689+
compareExceptionKey(actual, expected, 'name', msg);
687690
}
688691
if ('message' in expected) {
689-
assert.strictEqual(
690-
actual.message,
691-
expected.message,
692-
createMsg(msg, 'message', actual, expected));
692+
compareExceptionKey(actual, expected, 'message', msg);
693693
}
694-
const keys = Object.keys(expected);
695-
for (const key of keys) {
696-
assert.deepStrictEqual(
697-
actual[key],
698-
expected[key],
699-
createMsg(msg, key, actual, expected));
694+
for (const key of Object.keys(expected)) {
695+
compareExceptionKey(actual, expected, key, msg);
700696
}
701697
return true;
702698
}
Collapse file
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert').strict;
5+
6+
assert.throws(() => { throw new Error('foo'); }, { bar: true });
Collapse file
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
assert.js:*
2+
throw new errors.AssertionError(obj);
3+
^
4+
5+
AssertionError [ERR_ASSERTION]: bar: expected true, not undefined
6+
at Object.<anonymous> (*assert_throws_stack.js:*:*)
7+
at *
8+
at *
9+
at *
10+
at *
11+
at *
12+
at *
13+
at *
14+
at *

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.