assert: use isError instead of instanceof in innerOk · nodejs/node@fc0ddf5 (original) (raw)

2 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -393,7 +393,7 @@ function innerOk(fn, argLen, value, message) {
393 393 } else if (message == null) {
394 394 generatedMessage = true;
395 395 message = getErrMessage(message, fn);
396 -} else if (message instanceof Error) {
396 +} else if (isError(message)) {
397 397 throw message;
398 398 }
399 399
Original file line number Diff line number Diff line change
@@ -55,6 +55,16 @@ assert.throws(() => a.ok(false), a.AssertionError, 'ok(false)');
55 55 assert.ok(threw, 'Error: ok(false)');
56 56 }
57 57
58 +// Errors created in different contexts are handled as any other custom error
59 +{
60 +const context = vm.createContext();
61 +const error = vm.runInContext('new SyntaxError("custom error")', context);
62 +
63 +assert.throws(() => assert(false, error), {
64 +message: 'custom error',
65 +name: 'SyntaxError'
66 +});
67 +}
58 68
59 69 a(true);
60 70 a('test', 'ok(\'test\')');