@@ -32,6 +32,56 @@ class EnvironmentTest : public EnvironmentTestFixture {
32
32
}
33
33
};
34
34
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
+
35
85
TEST_F (EnvironmentTest, PreExecutionPreparation) {
36
86
const v8::HandleScope handle_scope (isolate_);
37
87
const Argv argv;
0 commit comments