test: pass null params to napi_create_function()
Each one of the following arguments is checked: napi_env env, const char* utf8name, napi_callback cb, napi_value* result. PR-URL: https://github.com/nodejs/node/pull/26998 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com>
This commit is contained in:
parent
1a67c9948c
commit
06c803d9b9
@ -35,3 +35,10 @@ let tracked_function = test_function.MakeTrackedFunction(common.mustCall());
|
||||
assert(!!tracked_function);
|
||||
tracked_function = null;
|
||||
global.gc();
|
||||
|
||||
assert.deepStrictEqual(test_function.TestCreateFunctionParameters(), {
|
||||
envIsNull: 'pass',
|
||||
nameIsNull: 'pass',
|
||||
cbIsNull: 'pass',
|
||||
resultIsNull: 'pass'
|
||||
});
|
||||
|
@ -1,6 +1,85 @@
|
||||
#include <js_native_api.h>
|
||||
#include "../common.h"
|
||||
|
||||
static napi_value TestCreateFunctionParameters(napi_env env,
|
||||
napi_callback_info info) {
|
||||
napi_status ret[4];
|
||||
napi_value result, return_value, prop_value;
|
||||
|
||||
|
||||
ret[0] = napi_create_function(NULL,
|
||||
"TrackedFunction",
|
||||
NAPI_AUTO_LENGTH,
|
||||
TestCreateFunctionParameters,
|
||||
NULL,
|
||||
&result);
|
||||
|
||||
ret[1] = napi_create_function(env,
|
||||
NULL,
|
||||
NAPI_AUTO_LENGTH,
|
||||
TestCreateFunctionParameters,
|
||||
NULL,
|
||||
&result);
|
||||
|
||||
ret[2] = napi_create_function(env,
|
||||
"TrackedFunction",
|
||||
NAPI_AUTO_LENGTH,
|
||||
NULL,
|
||||
NULL,
|
||||
&result);
|
||||
|
||||
ret[3] = napi_create_function(env,
|
||||
"TrackedFunction",
|
||||
NAPI_AUTO_LENGTH,
|
||||
TestCreateFunctionParameters,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
NAPI_CALL(env, napi_create_object(env, &return_value));
|
||||
|
||||
NAPI_CALL(env, napi_create_string_utf8(env,
|
||||
(ret[0] == napi_invalid_arg ?
|
||||
"pass" : "fail"),
|
||||
NAPI_AUTO_LENGTH,
|
||||
&prop_value));
|
||||
NAPI_CALL(env, napi_set_named_property(env,
|
||||
return_value,
|
||||
"envIsNull",
|
||||
prop_value));
|
||||
|
||||
NAPI_CALL(env, napi_create_string_utf8(env,
|
||||
(ret[1] == napi_ok ?
|
||||
"pass" : "fail"),
|
||||
NAPI_AUTO_LENGTH,
|
||||
&prop_value));
|
||||
NAPI_CALL(env, napi_set_named_property(env,
|
||||
return_value,
|
||||
"nameIsNull",
|
||||
prop_value));
|
||||
|
||||
NAPI_CALL(env, napi_create_string_utf8(env,
|
||||
(ret[2] == napi_invalid_arg ?
|
||||
"pass" : "fail"),
|
||||
NAPI_AUTO_LENGTH,
|
||||
&prop_value));
|
||||
NAPI_CALL(env, napi_set_named_property(env,
|
||||
return_value,
|
||||
"cbIsNull",
|
||||
prop_value));
|
||||
|
||||
NAPI_CALL(env, napi_create_string_utf8(env,
|
||||
(ret[3] == napi_invalid_arg ?
|
||||
"pass" : "fail"),
|
||||
NAPI_AUTO_LENGTH,
|
||||
&prop_value));
|
||||
NAPI_CALL(env, napi_set_named_property(env,
|
||||
return_value,
|
||||
"resultIsNull",
|
||||
prop_value));
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
static napi_value TestCallFunction(napi_env env, napi_callback_info info) {
|
||||
size_t argc = 10;
|
||||
napi_value args[10];
|
||||
@ -124,6 +203,14 @@ napi_value Init(napi_env env, napi_value exports) {
|
||||
NULL,
|
||||
&fn4));
|
||||
|
||||
napi_value fn5;
|
||||
NAPI_CALL(env, napi_create_function(env,
|
||||
"TestCreateFunctionParameters",
|
||||
NAPI_AUTO_LENGTH,
|
||||
TestCreateFunctionParameters,
|
||||
NULL,
|
||||
&fn5));
|
||||
|
||||
NAPI_CALL(env, napi_set_named_property(env, exports, "TestCall", fn1));
|
||||
NAPI_CALL(env, napi_set_named_property(env, exports, "TestName", fn2));
|
||||
NAPI_CALL(env, napi_set_named_property(env, exports, "TestNameShort", fn3));
|
||||
@ -132,6 +219,11 @@ napi_value Init(napi_env env, napi_value exports) {
|
||||
"MakeTrackedFunction",
|
||||
fn4));
|
||||
|
||||
NAPI_CALL(env, napi_set_named_property(env,
|
||||
exports,
|
||||
"TestCreateFunctionParameters",
|
||||
fn5));
|
||||
|
||||
return exports;
|
||||
}
|
||||
EXTERN_C_END
|
||||
|
Loading…
x
Reference in New Issue
Block a user