diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2019-06-15 13:54:50 +0200 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-10-01 22:56:01 +0200 |
commit | 48d1ea5e7fc918ae9f74d8472785720a13a755e6 (patch) | |
tree | fe7b3d2dadacf175b3ca6959b545f02ae347df49 /test | |
parent | 97c52ca5dc0b9c4df015dc36ef394ebe06ec00c6 (diff) | |
download | android-node-v8-48d1ea5e7fc918ae9f74d8472785720a13a755e6.tar.gz android-node-v8-48d1ea5e7fc918ae9f74d8472785720a13a755e6.tar.bz2 android-node-v8-48d1ea5e7fc918ae9f74d8472785720a13a755e6.zip |
assert: special handle identical error names in instance checks
This makes sure that using `assert.throws()` or `assert.rejects()`
in combination with Error classes log appropriate error messages
in case the expected and received constructor name are identical
but not part of the same prototype chain.
PR-URL: https://github.com/nodejs/node/pull/28263
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-assert.js | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 07cf374696..48b44ce29b 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -25,6 +25,7 @@ const common = require('../common'); const assert = require('assert'); const { inspect } = require('util'); +const vm = require('vm'); const { internalBinding } = require('internal/test/binding'); const a = assert; @@ -1344,3 +1345,17 @@ assert.throws( } ); } + +assert.throws( + () => { + const script = new vm.Script('new RangeError("foobar");'); + const context = vm.createContext(); + const err = script.runInContext(context); + assert.throws(() => { throw err; }, RangeError); + }, + { + message: 'The error is expected to be an instance of "RangeError". ' + + 'Received an error with identical name but a different ' + + 'prototype.\n\nError message:\n\nfoobar' + } +); |