summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2019-06-15 13:54:50 +0200
committerRuben Bridgewater <ruben@bridgewater.de>2019-10-01 22:56:01 +0200
commit48d1ea5e7fc918ae9f74d8472785720a13a755e6 (patch)
treefe7b3d2dadacf175b3ca6959b545f02ae347df49 /test
parent97c52ca5dc0b9c4df015dc36ef394ebe06ec00c6 (diff)
downloadandroid-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.js15
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'
+ }
+);