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\')'); |