diff options
author | Gabriel Schulhof <gabriel.schulhof@intel.com> | 2018-04-29 23:49:30 +0300 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2018-05-04 19:48:38 +0300 |
commit | ad793ab93c109ad4918eec168104f796876eb934 (patch) | |
tree | 21617250d8285a9e2b93e7de2d07e7ce1e393a9e /test/addons-napi | |
parent | da8bc6ab50431dd9b16cd820e1fcf93f22e4d83c (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.js | 12 | ||||
-rw-r--r-- | test/addons-napi/test_error/test_error.c | 9 |
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), |