=== Node.js Environment Tests === node_env_test.js: [INFO] init() Initializing findlib Loaded findlib_index findlib_index.json: 10 META files, 0 universes Parsed uri: ./lib/stdlib-shims/META Reading library: stdlib-shims Number of children: 0 Parsed uri: ./lib/sexplib0/META Reading library: sexplib0 Number of children: 0 Parsed uri: ./lib/ppxlib/META Reading library: ppxlib Number of children: 11 Found child: __private__ Reading library: ppxlib.__private__ Number of children: 1 Found child: ppx_foo_deriver Reading library: ppxlib.__private__.ppx_foo_deriver Number of children: 0 Found child: ast Reading library: ppxlib.ast Number of children: 0 Found child: astlib Reading library: ppxlib.astlib Number of children: 0 Found child: metaquot Reading library: ppxlib.metaquot Number of children: 0 Found child: metaquot_lifters Reading library: ppxlib.metaquot_lifters Number of children: 0 Found child: print_diff Reading library: ppxlib.print_diff Number of children: 0 Found child: runner Reading library: ppxlib.runner Number of children: 0 Found child: runner_as_ppx Reading library: ppxlib.runner_as_ppx Number of children: 0 Found child: stdppx Reading library: ppxlib.stdppx Number of children: 0 Found child: traverse Reading library: ppxlib.traverse Number of children: 0 Found child: traverse_builtins Reading library: ppxlib.traverse_builtins Number of children: 0 Parsed uri: ./lib/ppx_deriving/META Reading library: ppx_deriving Number of children: 12 Found child: api Reading library: ppx_deriving.api Number of children: 0 Found child: create Reading library: ppx_deriving.create Number of children: 0 Found child: enum Reading library: ppx_deriving.enum Number of children: 0 Found child: eq Reading library: ppx_deriving.eq Number of children: 0 Found child: fold Reading library: ppx_deriving.fold Number of children: 0 Found child: iter Reading library: ppx_deriving.iter Number of children: 0 Found child: make Reading library: ppx_deriving.make Number of children: 0 Found child: map Reading library: ppx_deriving.map Number of children: 0 Found child: ord Reading library: ppx_deriving.ord Number of children: 0 Found child: runtime Reading library: ppx_deriving.runtime Number of children: 0 Found child: show Reading library: ppx_deriving.show Number of children: 0 Found child: std Reading library: ppx_deriving.std Number of children: 0 Parsed uri: ./lib/ppx_derivers/META Reading library: ppx_derivers Number of children: 0 Parsed uri: ./lib/ocaml_intrinsics_kernel/META Reading library: ocaml_intrinsics_kernel Number of children: 0 Parsed uri: ./lib/ocaml/stdlib/META Reading library: stdlib Number of children: 0 Parsed uri: ./lib/ocaml/compiler-libs/META Reading library: compiler-libs Number of children: 5 Found child: common Reading library: compiler-libs.common Number of children: 0 Found child: bytecomp Reading library: compiler-libs.bytecomp Number of children: 0 Found child: optcomp Reading library: compiler-libs.optcomp Number of children: 0 Found child: toplevel Reading library: compiler-libs.toplevel Number of children: 0 Found child: native-toplevel Reading library: compiler-libs.native-toplevel Number of children: 0 Parsed uri: ./lib/ocaml-compiler-libs/META Reading library: ocaml-compiler-libs Number of children: 5 Found child: bytecomp Reading library: ocaml-compiler-libs.bytecomp Number of children: 0 Found child: common Reading library: ocaml-compiler-libs.common Number of children: 0 Found child: optcomp Reading library: ocaml-compiler-libs.optcomp Number of children: 0 Found child: shadow Reading library: ocaml-compiler-libs.shadow Number of children: 0 Found child: toplevel Reading library: ocaml-compiler-libs.toplevel Number of children: 0 Parsed uri: ./lib/base/META Reading library: base Number of children: 3 Found child: base_internalhash_types Reading library: base.base_internalhash_types Number of children: 0 Found child: md5 Reading library: base.md5 Number of children: 0 Found child: shadow_stdlib Reading library: base.shadow_stdlib Number of children: 0 node_env_test.js: [INFO] Adding toplevel modules for dynamic cmis from lib/ocaml/ node_env_test.js: [INFO] toplevel modules: CamlinternalFormat, CamlinternalLazy, CamlinternalFormatBasics, CamlinternalMod, Std_exit, Stdlib, CamlinternalOO node_env_test.js: [INFO] init() finished --- Section 1: Default Environment --- node_env_test.js: [INFO] setup() for env default... node_env_test.js: [INFO] Fetching stdlib__Format.cmi node_env_test.js: [INFO] Fetching stdlib__Sys.cmi error while evaluating #enable "pretty";; error while evaluating #disable "shortvar";; node_env_test.js: [INFO] Setup complete node_env_test.js: [INFO] setup() finished for env default [PASS] default_setup: Default environment setup [PASS] default_define: # let default_val = 42;; val default_val : int = 42 --- Section 2: Creating New Environments --- node_env_test.js: [INFO] create_env(env1) [PASS] create_env1: Created environment env1 node_env_test.js: [INFO] setup() for env env1... error while evaluating #enable "pretty";; error while evaluating #disable "shortvar";; node_env_test.js: [INFO] Setup complete node_env_test.js: [INFO] setup() finished for env env1 [PASS] setup_env1: Setup environment env1 [PASS] env1_define: # let env1_val = 100;; val env1_val : int = 100 --- Section 3: Environment Isolation --- Line 1, characters 0-11: Error: Unbound value default_val [PASS] isolation_default_from_env1: No leakage: # default_val;; Line 1, characters 0-8: Error: Unbound value env1_val [PASS] isolation_env1_from_default: No leakage: # env1_val;; [PASS] default_still_works: # default_val;; - : int = 42 --- Section 4: Multiple Environments --- node_env_test.js: [INFO] create_env(env2) node_env_test.js: [INFO] setup() for env env2... error while evaluating #enable "pretty";; error while evaluating #disable "shortvar";; node_env_test.js: [INFO] Setup complete node_env_test.js: [INFO] setup() finished for env env2 [PASS] create_and_setup_env2: Created and setup env2 [PASS] env2_define: # let env2_val = 200;; val env2_val : int = 200 Line 1, characters 0-8: Error: Unbound value env1_val Hint: Did you mean env2_val? [PASS] isolation_env1_from_env2: No leakage: # env1_val;; Line 1, characters 0-8: Error: Unbound value env2_val Hint: Did you mean env1_val? [PASS] isolation_env2_from_env1: No leakage: # env2_val;; --- Section 5: List Environments --- node_env_test.js: [INFO] list_envs() -> [env2, default, env1] [PASS] list_envs_count: Found 3 environments [PASS] list_envs_has_default: env2, default, env1 [PASS] list_envs_has_env1: env2, default, env1 [PASS] list_envs_has_env2: env2, default, env1 --- Section 6: Destroy Environment --- node_env_test.js: [INFO] destroy_env(env2) [PASS] destroy_env2: Destroyed env2 node_env_test.js: [INFO] list_envs() -> [default, env1] [PASS] env2_destroyed: default, env1 [PASS] env1_still_exists: default, env1 --- Section 7: Reuse Environment Name --- node_env_test.js: [INFO] create_env(env2) node_env_test.js: [INFO] setup() for env env2... error while evaluating #enable "pretty";; error while evaluating #disable "shortvar";; node_env_test.js: [INFO] Setup complete node_env_test.js: [INFO] setup() finished for env env2 Line 1, characters 0-8: Error: Unbound value env2_val [PASS] new_env2_clean: Old value gone: # env2_val;; [PASS] new_env2_define: # let new_env2_val = 999;; val new_env2_val : int = 999 === Results: 21/21 tests passed === SUCCESS: All environment tests passed!