mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
42d8143ce5
This ensures that we only create one IsolateData for each isolate inthe cctest, since IsolateData are meant to be per-isolate. We need to make the isolate and isolate_data static in the test fixtures as a result, similar to how the event loops and array buffer allocators are managed in the NodeZeroIsolateTestFixture but it is fine because gtest ensures that the Setup() and TearDown() of the fixtures are always run in order and would never overlap in one process. PR-URL: https://github.com/nodejs/node/pull/48450 Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#include <stdio.h>
|
|
#include <cstdio>
|
|
#include <string>
|
|
#include "env-inl.h"
|
|
#include "gtest/gtest.h"
|
|
#include "node_api_internals.h"
|
|
#include "node_binding.h"
|
|
#include "node_test_fixture.h"
|
|
|
|
using v8::Local;
|
|
using v8::Object;
|
|
|
|
static napi_env addon_env;
|
|
|
|
class NodeApiTest : public EnvironmentTestFixture {
|
|
private:
|
|
void SetUp() override { EnvironmentTestFixture::SetUp(); }
|
|
|
|
void TearDown() override { EnvironmentTestFixture::TearDown(); }
|
|
};
|
|
|
|
TEST_F(NodeApiTest, CreateNodeApiEnv) {
|
|
const v8::HandleScope handle_scope(isolate_);
|
|
Argv argv;
|
|
|
|
Env test_env{handle_scope, argv};
|
|
|
|
node::Environment* env = *test_env;
|
|
node::LoadEnvironment(env, "");
|
|
|
|
napi_addon_register_func init = [](napi_env env, napi_value exports) {
|
|
addon_env = env;
|
|
return exports;
|
|
};
|
|
Local<Object> module_obj = Object::New(isolate_);
|
|
Local<Object> exports_obj = Object::New(isolate_);
|
|
napi_module_register_by_symbol(
|
|
exports_obj, module_obj, env->context(), init, NAPI_VERSION);
|
|
ASSERT_NE(addon_env, nullptr);
|
|
node_napi_env internal_env = reinterpret_cast<node_napi_env>(addon_env);
|
|
EXPECT_EQ(internal_env->node_env(), env);
|
|
}
|