Skip to content

Commit 73d6146

Browse files
author
Octavian Soldea
committed
test: propagate napi_status to JS - third answer
1 parent bc94d0b commit 73d6146

File tree

3 files changed

+40
-27
lines changed

3 files changed

+40
-27
lines changed

src/js_native_api_v8.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -684,14 +684,16 @@ napi_status napi_get_last_error_info(napi_env env,
684684
CHECK_ENV(env);
685685
CHECK_ARG(env, result);
686686

687-
// you must update this assert to reference the last message
688-
// in the napi_status enum each time a new error message is added.
687+
// The value of the constant below must be updated to reference the last
688+
// message in the napi_status enum each time a new error message is added.
689689
// We don't have a napi_status_last as this would result in an ABI
690690
// change each time a message was added.
691+
const int last_status = napi_date_expected;
692+
691693
static_assert(
692-
NAPI_ARRAYSIZE(error_messages) == napi_date_expected + 1,
694+
NAPI_ARRAYSIZE(error_messages) == last_status + 1,
693695
"Count of error messages must match count of error values");
694-
CHECK_LE(env->last_error.error_code, napi_callback_scope_mismatch);
696+
CHECK_LE(env->last_error.error_code, last_status);
695697

696698
// Wait until someone requests the last error information to fetch the error
697699
// message string

test/js-native-api/test_constructor/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ assert.strictEqual(test_object.staticReadonlyAccessor1, undefined);
5353
// Verify that passing NULL to napi_define_class() results in the correct
5454
// error.
5555
assert.deepStrictEqual(TestConstructor.TestDefineClass(), {
56-
envIsNull: 'napi_ok',
56+
envIsNull: 'napi_env_null_is_ok',
5757
nameIsNull: 'Invalid argument',
5858
cbIsNull: 'Invalid argument',
5959
cbDataIsNull: 'napi_ok',

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

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,25 @@ static void add_named_property(napi_env env, const char* key, napi_value return_
88
const napi_extended_error_info* p_last_error;
99
NAPI_CALL_RETURN_VOID(env, napi_get_last_error_info(env, &p_last_error));
1010

11-
NAPI_CALL(env, napi_create_string_utf8(env,
12-
(p_last_error->error_message == NULL ?
13-
"napi_ok" :
14-
p_last_error->error_message),
15-
NAPI_AUTO_LENGTH,
16-
&prop_value));
17-
NAPI_CALL(env, napi_set_named_property(env,
18-
return_value,
19-
key,
20-
prop_value));
11+
NAPI_CALL_RETURN_VOID(env,
12+
napi_create_string_utf8(env,
13+
(p_last_error->error_message == NULL ?
14+
"napi_ok" :
15+
p_last_error->error_message),
16+
NAPI_AUTO_LENGTH,
17+
&prop_value));
18+
NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env,
19+
return_value,
20+
key,
21+
prop_value));
2122
}
2223

2324
static napi_value TestDefineClass(napi_env env,
2425
napi_callback_info info) {
2526

27+
napi_value prop_value;
2628
napi_value result, return_value;
29+
napi_status status;
2730

2831
napi_property_descriptor property_descriptor = {
2932
"TestDefineClass",
@@ -37,18 +40,26 @@ static napi_value TestDefineClass(napi_env env,
3740

3841
NAPI_CALL(env, napi_create_object(env, &return_value));
3942

40-
napi_define_class(NULL,
41-
"TrackedFunction",
42-
NAPI_AUTO_LENGTH,
43-
TestDefineClass,
44-
NULL,
45-
1,
46-
&property_descriptor,
47-
&result);
48-
49-
add_named_property(env, "envIsNull", return_value);
50-
51-
napi_define_class(env,
43+
status = napi_define_class(NULL,
44+
"TrackedFunction",
45+
NAPI_AUTO_LENGTH,
46+
TestDefineClass,
47+
NULL,
48+
1,
49+
&property_descriptor,
50+
&result);
51+
52+
NAPI_CALL_RETURN_VOID(env,
53+
napi_create_string_utf8(env,
54+
"napi_env_null_is_ok",
55+
NAPI_AUTO_LENGTH,
56+
&prop_value));
57+
NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env,
58+
return_value,
59+
"envIsNull",
60+
prop_value));
61+
62+
napi_define_class(env,
5263
NULL,
5364
NAPI_AUTO_LENGTH,
5465
TestDefineClass,

0 commit comments

Comments
 (0)