Skip to content

Commit 06c803d

Browse files
Octavian SoldeaGabriel Schulhof
Octavian Soldea
authored and
Gabriel Schulhof
committed
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: #26998 Reviewed-By: Gabriel Schulhof <[email protected]>
1 parent 1a67c99 commit 06c803d

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

test/js-native-api/test_function/test.js

+7
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ let tracked_function = test_function.MakeTrackedFunction(common.mustCall());
3535
assert(!!tracked_function);
3636
tracked_function = null;
3737
global.gc();
38+
39+
assert.deepStrictEqual(test_function.TestCreateFunctionParameters(), {
40+
envIsNull: 'pass',
41+
nameIsNull: 'pass',
42+
cbIsNull: 'pass',
43+
resultIsNull: 'pass'
44+
});

test/js-native-api/test_function/test_function.c

+92
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,85 @@
11
#include <js_native_api.h>
22
#include "../common.h"
33

4+
static napi_value TestCreateFunctionParameters(napi_env env,
5+
napi_callback_info info) {
6+
napi_status ret[4];
7+
napi_value result, return_value, prop_value;
8+
9+
10+
ret[0] = napi_create_function(NULL,
11+
"TrackedFunction",
12+
NAPI_AUTO_LENGTH,
13+
TestCreateFunctionParameters,
14+
NULL,
15+
&result);
16+
17+
ret[1] = napi_create_function(env,
18+
NULL,
19+
NAPI_AUTO_LENGTH,
20+
TestCreateFunctionParameters,
21+
NULL,
22+
&result);
23+
24+
ret[2] = napi_create_function(env,
25+
"TrackedFunction",
26+
NAPI_AUTO_LENGTH,
27+
NULL,
28+
NULL,
29+
&result);
30+
31+
ret[3] = napi_create_function(env,
32+
"TrackedFunction",
33+
NAPI_AUTO_LENGTH,
34+
TestCreateFunctionParameters,
35+
NULL,
36+
NULL);
37+
38+
NAPI_CALL(env, napi_create_object(env, &return_value));
39+
40+
NAPI_CALL(env, napi_create_string_utf8(env,
41+
(ret[0] == napi_invalid_arg ?
42+
"pass" : "fail"),
43+
NAPI_AUTO_LENGTH,
44+
&prop_value));
45+
NAPI_CALL(env, napi_set_named_property(env,
46+
return_value,
47+
"envIsNull",
48+
prop_value));
49+
50+
NAPI_CALL(env, napi_create_string_utf8(env,
51+
(ret[1] == napi_ok ?
52+
"pass" : "fail"),
53+
NAPI_AUTO_LENGTH,
54+
&prop_value));
55+
NAPI_CALL(env, napi_set_named_property(env,
56+
return_value,
57+
"nameIsNull",
58+
prop_value));
59+
60+
NAPI_CALL(env, napi_create_string_utf8(env,
61+
(ret[2] == napi_invalid_arg ?
62+
"pass" : "fail"),
63+
NAPI_AUTO_LENGTH,
64+
&prop_value));
65+
NAPI_CALL(env, napi_set_named_property(env,
66+
return_value,
67+
"cbIsNull",
68+
prop_value));
69+
70+
NAPI_CALL(env, napi_create_string_utf8(env,
71+
(ret[3] == napi_invalid_arg ?
72+
"pass" : "fail"),
73+
NAPI_AUTO_LENGTH,
74+
&prop_value));
75+
NAPI_CALL(env, napi_set_named_property(env,
76+
return_value,
77+
"resultIsNull",
78+
prop_value));
79+
80+
return return_value;
81+
}
82+
483
static napi_value TestCallFunction(napi_env env, napi_callback_info info) {
584
size_t argc = 10;
685
napi_value args[10];
@@ -124,6 +203,14 @@ napi_value Init(napi_env env, napi_value exports) {
124203
NULL,
125204
&fn4));
126205

206+
napi_value fn5;
207+
NAPI_CALL(env, napi_create_function(env,
208+
"TestCreateFunctionParameters",
209+
NAPI_AUTO_LENGTH,
210+
TestCreateFunctionParameters,
211+
NULL,
212+
&fn5));
213+
127214
NAPI_CALL(env, napi_set_named_property(env, exports, "TestCall", fn1));
128215
NAPI_CALL(env, napi_set_named_property(env, exports, "TestName", fn2));
129216
NAPI_CALL(env, napi_set_named_property(env, exports, "TestNameShort", fn3));
@@ -132,6 +219,11 @@ napi_value Init(napi_env env, napi_value exports) {
132219
"MakeTrackedFunction",
133220
fn4));
134221

222+
NAPI_CALL(env, napi_set_named_property(env,
223+
exports,
224+
"TestCreateFunctionParameters",
225+
fn5));
226+
135227
return exports;
136228
}
137229
EXTERN_C_END

0 commit comments

Comments
 (0)