Skip to content

Commit 94a120c

Browse files
committed
test: add coverage for error apis
Add coverage for N-API functions related to throwing and creating errors. A number of these are currently showing as not having any coverage in the nightly code coverage reports. PR-URL: #12729 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 1c93e8c commit 94a120c

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

test/addons-napi/test_error/test.js

+34
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,37 @@ assert.strictEqual(test_error.checkError({}), false,
5555
// Test that non-error primitive is correctly classed
5656
assert.strictEqual(test_error.checkError('non-object'), false,
5757
'Non-error primitive correctly classed by napi_is_error');
58+
59+
assert.throws(() => {
60+
test_error.throwExistingError();
61+
}, /^Error: existing error$/);
62+
63+
assert.throws(() => {
64+
test_error.throwError();
65+
}, /^Error: error$/);
66+
67+
assert.throws(() => {
68+
test_error.throwRangeError();
69+
}, /^RangeError: range error$/);
70+
71+
assert.throws(() => {
72+
test_error.throwTypeError();
73+
}, /^TypeError: type error$/);
74+
75+
let error = test_error.createError();
76+
assert.ok(error instanceof Error, 'expected error to be an instance of Error');
77+
assert.strictEqual(error.message, 'error', 'expected message to be "error"');
78+
79+
error = test_error.createRangeError();
80+
assert.ok(error instanceof RangeError,
81+
'expected error to be an instance of RangeError');
82+
assert.strictEqual(error.message,
83+
'range error',
84+
'expected message to be "range error"');
85+
86+
error = test_error.createTypeError();
87+
assert.ok(error instanceof TypeError,
88+
'expected error to be an instance of TypeError');
89+
assert.strictEqual(error.message,
90+
'type error',
91+
'expected message to be "type error"');

test/addons-napi/test_error/test_error.cc

+55
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,64 @@ napi_value checkError(napi_env env, napi_callback_info info) {
1515
return result;
1616
}
1717

18+
napi_value throwExistingError(napi_env env, napi_callback_info info) {
19+
napi_value message;
20+
napi_value error;
21+
NAPI_CALL(env, napi_create_string_utf8(env, "existing error", -1, &message));
22+
NAPI_CALL(env, napi_create_error(env, message, &error));
23+
NAPI_CALL(env, napi_throw(env, error));
24+
return nullptr;
25+
}
26+
27+
napi_value throwError(napi_env env, napi_callback_info info) {
28+
NAPI_CALL(env, napi_throw_error(env, "error"));
29+
return nullptr;
30+
}
31+
32+
napi_value throwRangeError(napi_env env, napi_callback_info info) {
33+
NAPI_CALL(env, napi_throw_range_error(env, "range error"));
34+
return nullptr;
35+
}
36+
37+
napi_value throwTypeError(napi_env env, napi_callback_info info) {
38+
NAPI_CALL(env, napi_throw_type_error(env, "type error"));
39+
return nullptr;
40+
}
41+
42+
napi_value createError(napi_env env, napi_callback_info info) {
43+
napi_value result;
44+
napi_value message;
45+
NAPI_CALL(env, napi_create_string_utf8(env, "error", -1, &message));
46+
NAPI_CALL(env, napi_create_error(env, message, &result));
47+
return result;
48+
}
49+
50+
napi_value createRangeError(napi_env env, napi_callback_info info) {
51+
napi_value result;
52+
napi_value message;
53+
NAPI_CALL(env, napi_create_string_utf8(env, "range error", -1, &message));
54+
NAPI_CALL(env, napi_create_range_error(env, message, &result));
55+
return result;
56+
}
57+
58+
napi_value createTypeError(napi_env env, napi_callback_info info) {
59+
napi_value result;
60+
napi_value message;
61+
NAPI_CALL(env, napi_create_string_utf8(env, "type error", -1, &message));
62+
NAPI_CALL(env, napi_create_type_error(env, message, &result));
63+
return result;
64+
}
65+
1866
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
1967
napi_property_descriptor descriptors[] = {
2068
DECLARE_NAPI_PROPERTY("checkError", checkError),
69+
DECLARE_NAPI_PROPERTY("throwExistingError", throwExistingError),
70+
DECLARE_NAPI_PROPERTY("throwError", throwError),
71+
DECLARE_NAPI_PROPERTY("throwRangeError", throwRangeError),
72+
DECLARE_NAPI_PROPERTY("throwTypeError", throwTypeError),
73+
DECLARE_NAPI_PROPERTY("createError", createError),
74+
DECLARE_NAPI_PROPERTY("createRangeError", createRangeError),
75+
DECLARE_NAPI_PROPERTY("createTypeError", createTypeError),
2176
};
2277

2378
NAPI_CALL_RETURN_VOID(env, napi_define_properties(

0 commit comments

Comments
 (0)