Skip to content

Commit

Permalink
test: fix unreliable assumption in js-native-api/test_cannot_run_js (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
toyobayashi authored Mar 9, 2024
1 parent b53831a commit c11fe4f
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions packages/test/runjs/binding.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,32 @@ void free(void* p);
static void Finalize(napi_env env, void* data, void* hint) {
napi_value global, set_timeout;
napi_ref* ref = data;

NODE_API_NOGC_ASSERT_RETURN_VOID(
napi_delete_reference(env, *ref) == napi_ok,
"deleting reference in finalizer should succeed");
NODE_API_NOGC_ASSERT_RETURN_VOID(
napi_get_global(env, &global) == napi_ok,
"getting global reference in finalizer should succeed");
napi_status result =
napi_get_named_property(env, global, "setTimeout", &set_timeout);

// The finalizer could be invoked either from check callbacks (as native
// immediates) if the event loop is still running (where napi_ok is returned)
// or during environment shutdown (where napi_cannot_run_js or
// napi_pending_exception is returned). This is not deterministic from
// the point of view of the addon.
#ifdef NAPI_EXPERIMENTAL
napi_status expected_status = napi_cannot_run_js;
NODE_API_NOGC_ASSERT_RETURN_VOID(
result == napi_cannot_run_js || result == napi_ok,
"getting named property from global in finalizer should succeed "
"or return napi_cannot_run_js");
#else
napi_status expected_status = napi_pending_exception;
NODE_API_NOGC_ASSERT_RETURN_VOID(
result == napi_pending_exception || result == napi_ok,
"getting named property from global in finalizer should succeed "
"or return napi_pending_exception");
#endif // NAPI_EXPERIMENTAL

if (napi_delete_reference(env, *ref) != napi_ok) abort();
if (napi_get_global(env, &global) != napi_ok) abort();
if (napi_get_named_property(env, global, "setTimeout", &set_timeout) !=
expected_status)
abort();
free(ref);
}

Expand Down

0 comments on commit c11fe4f

Please sign in to comment.