Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Schulhof <gabriel.schulhof@intel.com>2018-04-29 23:49:30 +0300
committerMyles Borins <mylesborins@google.com>2018-05-04 19:48:38 +0300
commitad793ab93c109ad4918eec168104f796876eb934 (patch)
tree21617250d8285a9e2b93e7de2d07e7ce1e393a9e /test/addons-napi
parentda8bc6ab50431dd9b16cd820e1fcf93f22e4d83c (diff)
n-api: test and doc napi_throw() of a primitive
Ensure that napi_throw() is able to throw a primitive value, and document that it is able to throw any JavaScript value. Fixes: https://github.com/nodejs/abi-stable-node/issues/309 PR-URL: https://github.com/nodejs/node/pull/20428 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test/addons-napi')
-rw-r--r--test/addons-napi/test_error/test.js12
-rw-r--r--test/addons-napi/test_error/test_error.c9
2 files changed, 21 insertions, 0 deletions
diff --git a/test/addons-napi/test_error/test.js b/test/addons-napi/test_error/test.js
index d5c92cb4c3c..f07326c202a 100644
--- a/test/addons-napi/test_error/test.js
+++ b/test/addons-napi/test_error/test.js
@@ -60,6 +60,18 @@ assert.throws(() => {
test_error.throwTypeError();
}, /^TypeError: type error$/);
+function testThrowArbitrary(value) {
+ assert.throws(() => {
+ test_error.throwArbitrary(value);
+ }, value);
+}
+
+testThrowArbitrary(42);
+testThrowArbitrary({});
+testThrowArbitrary([]);
+testThrowArbitrary(Symbol('xyzzy'));
+testThrowArbitrary(true);
+
common.expectsError(
() => test_error.throwErrorCode(),
{
diff --git a/test/addons-napi/test_error/test_error.c b/test/addons-napi/test_error/test_error.c
index 1cad38098c9..c9ac7a425fa 100644
--- a/test/addons-napi/test_error/test_error.c
+++ b/test/addons-napi/test_error/test_error.c
@@ -127,6 +127,14 @@ napi_value createTypeErrorCode(napi_env env, napi_callback_info info) {
return result;
}
+static napi_value throwArbitrary(napi_env env, napi_callback_info info) {
+ napi_value arbitrary;
+ size_t argc = 1;
+ NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &arbitrary, NULL, NULL));
+ NAPI_CALL(env, napi_throw(env, arbitrary));
+ return NULL;
+}
+
napi_value Init(napi_env env, napi_value exports) {
napi_property_descriptor descriptors[] = {
DECLARE_NAPI_PROPERTY("checkError", checkError),
@@ -137,6 +145,7 @@ napi_value Init(napi_env env, napi_value exports) {
DECLARE_NAPI_PROPERTY("throwErrorCode", throwErrorCode),
DECLARE_NAPI_PROPERTY("throwRangeErrorCode", throwRangeErrorCode),
DECLARE_NAPI_PROPERTY("throwTypeErrorCode", throwTypeErrorCode),
+ DECLARE_NAPI_PROPERTY("throwArbitrary", throwArbitrary),
DECLARE_NAPI_PROPERTY("createError", createError),
DECLARE_NAPI_PROPERTY("createRangeError", createRangeError),
DECLARE_NAPI_PROPERTY("createTypeError", createTypeError),