@@ -32,6 +32,56 @@ class EnvironmentTest : public EnvironmentTestFixture {
3232 }
3333};
3434
35+ TEST_F (EnvironmentTest, EnvironmentWithESMLoader) {
36+ const v8::HandleScope handle_scope (isolate_);
37+ Argv argv;
38+ Env env {handle_scope, argv};
39+
40+ node::Environment* envi = *env;
41+ envi->options ()->experimental_vm_modules = true ;
42+
43+ SetProcessExitHandler (*env, [&](node::Environment* env_, int exit_code) {
44+ EXPECT_EQ (*env, env_);
45+ EXPECT_EQ (exit_code, 0 );
46+ node::Stop (*env);
47+ });
48+
49+ node::LoadEnvironment (
50+ *env,
51+ " const { SourceTextModule } = require('vm');"
52+ " try {"
53+ " new SourceTextModule('export const a = 1;');"
54+ " process.exit(0);"
55+ " } catch {"
56+ " process.exit(42);"
57+ " }" );
58+ }
59+
60+ TEST_F (EnvironmentTest, EnvironmentWithNoESMLoader) {
61+ const v8::HandleScope handle_scope (isolate_);
62+ Argv argv;
63+ Env env {handle_scope, argv, node::EnvironmentFlags::kNoRegisterESMLoader };
64+
65+ node::Environment* envi = *env;
66+ envi->options ()->experimental_vm_modules = true ;
67+
68+ SetProcessExitHandler (*env, [&](node::Environment* env_, int exit_code) {
69+ EXPECT_EQ (*env, env_);
70+ EXPECT_EQ (exit_code, 42 );
71+ node::Stop (*env);
72+ });
73+
74+ node::LoadEnvironment (
75+ *env,
76+ " const { SourceTextModule } = require('vm');"
77+ " try {"
78+ " new SourceTextModule('export const a = 1;');"
79+ " process.exit(0);"
80+ " } catch {"
81+ " process.exit(42);"
82+ " }" );
83+ }
84+
3585TEST_F (EnvironmentTest, PreExecutionPreparation) {
3686 const v8::HandleScope handle_scope (isolate_);
3787 const Argv argv;
0 commit comments