8383WASM_DIS = Path (building .get_binaryen_bin (), 'wasm-dis' )
8484LLVM_OBJDUMP = os .path .expanduser (shared .build_llvm_tool_path (shared .exe_suffix ('llvm-objdump' )))
8585PYTHON = sys .executable
86+ if not config .NODE_JS_TEST :
87+ config .NODE_JS_TEST = config .NODE_JS
8688
8789
8890def test_file (* path_components ):
@@ -317,7 +319,8 @@ def metafunc(self, with_bigint):
317319 if self .get_setting ('WASM_BIGINT' ) is not None :
318320 self .skipTest ('redundant in bigint test config' )
319321 self .set_setting ('WASM_BIGINT' )
320- self .node_args += shared .node_bigint_flags ()
322+ nodejs = self .require_node ()
323+ self .node_args += shared .node_bigint_flags (nodejs )
321324 f (self )
322325 else :
323326 f (self )
@@ -381,7 +384,8 @@ def metafunc(self, standalone):
381384 # if we are impure, disallow all wasm engines
382385 if impure :
383386 self .wasm_engines = []
384- self .node_args += shared .node_bigint_flags ()
387+ nodejs = self .require_node ()
388+ self .node_args += shared .node_bigint_flags (nodejs )
385389 func (self )
386390
387391 metafunc ._parameterize = {'' : (False ,),
@@ -606,19 +610,27 @@ def require_v8(self):
606610 self .require_engine (config .V8_ENGINE )
607611 self .emcc_args .append ('-sENVIRONMENT=shell' )
608612
613+ def get_nodejs (self ):
614+ if config .NODE_JS_TEST not in self .js_engines :
615+ return None
616+ return config .NODE_JS_TEST
617+
609618 def require_node (self ):
610- if not config .NODE_JS or config .NODE_JS not in config .JS_ENGINES :
619+ nodejs = self .get_nodejs ()
620+ if not nodejs :
611621 if 'EMTEST_SKIP_NODE' in os .environ :
612622 self .skipTest ('test requires node and EMTEST_SKIP_NODE is set' )
613623 else :
614624 self .fail ('node required to run this test. Use EMTEST_SKIP_NODE to skip' )
615- self .require_engine (config .NODE_JS )
625+ self .require_engine (nodejs )
626+ return nodejs
616627
617628 def require_node_canary (self ):
618- if config .NODE_JS or config .NODE_JS in config .JS_ENGINES :
619- version = shared .check_node_version ()
629+ nodejs = self .get_nodejs ()
630+ if nodejs :
631+ version = shared .get_node_version (nodejs )
620632 if version >= (20 , 0 , 0 ):
621- self .require_engine (config . NODE_JS )
633+ self .require_engine (nodejs )
622634 return
623635
624636 if 'EMTEST_SKIP_NODE_CANARY' in os .environ :
@@ -635,10 +647,11 @@ def require_engine(self, engine):
635647 self .wasm_engines = []
636648
637649 def require_wasm64 (self ):
638- if config .NODE_JS and config .NODE_JS in self .js_engines :
639- version = shared .check_node_version ()
650+ nodejs = self .get_nodejs ()
651+ if nodejs :
652+ version = shared .get_node_version (nodejs )
640653 if version >= (16 , 0 , 0 ):
641- self .js_engines = [config . NODE_JS ]
654+ self .js_engines = [nodejs ]
642655 self .node_args += shared .node_memory64_flags ()
643656 return
644657
@@ -654,10 +667,11 @@ def require_wasm64(self):
654667 self .fail ('either d8 or node >= 16 required to run wasm64 tests. Use EMTEST_SKIP_WASM64 to skip' )
655668
656669 def require_simd (self ):
657- if config .NODE_JS and config .NODE_JS in self .js_engines :
658- version = shared .check_node_version ()
670+ nodejs = self .get_nodejs ()
671+ if nodejs :
672+ version = shared .get_node_version (nodejs )
659673 if version >= (16 , 0 , 0 ):
660- self .js_engines = [config . NODE_JS ]
674+ self .js_engines = [nodejs ]
661675 return
662676
663677 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
@@ -671,10 +685,11 @@ def require_simd(self):
671685 self .fail ('either d8 or node >= 16 required to run wasm64 tests. Use EMTEST_SKIP_SIMD to skip' )
672686
673687 def require_wasm_eh (self ):
674- if config .NODE_JS and config .NODE_JS in self .js_engines :
675- version = shared .check_node_version ()
688+ nodejs = self .get_nodejs ()
689+ if nodejs :
690+ version = shared .get_node_version (nodejs )
676691 if version >= (17 , 0 , 0 ):
677- self .js_engines = [config . NODE_JS ]
692+ self .js_engines = [nodejs ]
678693 return
679694
680695 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
@@ -701,12 +716,13 @@ def require_jspi(self):
701716 return
702717
703718 exp_args = ['--experimental-wasm-stack-switching' , '--experimental-wasm-type-reflection' ]
704- if config .NODE_JS and config .NODE_JS in self .js_engines :
705- version = shared .check_node_version ()
719+ nodejs = self .get_nodejs ()
720+ if nodejs :
721+ version = shared .get_node_version (nodejs )
706722 # Support for JSPI came earlier than 19, but 19 is what currently works
707723 # with emscripten's implementation.
708724 if version >= (19 , 0 , 0 ):
709- self .js_engines = [config . NODE_JS ]
725+ self .js_engines = [nodejs ]
710726 self .node_args += exp_args
711727 return
712728
@@ -726,8 +742,9 @@ def setup_node_pthreads(self):
726742 self .emcc_args += ['-Wno-pthreads-mem-growth' , '-pthread' ]
727743 if self .get_setting ('MINIMAL_RUNTIME' ):
728744 self .skipTest ('node pthreads not yet supported with MINIMAL_RUNTIME' )
729- self .js_engines = [config .NODE_JS ]
730- self .node_args += shared .node_pthread_flags ()
745+ nodejs = self .get_nodejs ()
746+ self .js_engines = [nodejs ]
747+ self .node_args += shared .node_pthread_flags (nodejs )
731748
732749 def uses_memory_init_file (self ):
733750 if self .get_setting ('SIDE_MODULE' ) or (self .is_wasm () and not self .get_setting ('WASM2JS' )):
@@ -753,14 +770,16 @@ def setUpClass(cls):
753770
754771 def setUp (self ):
755772 super ().setUp ()
773+ self .js_engines = config .JS_ENGINES .copy ()
756774 self .settings_mods = {}
757775 self .emcc_args = ['-Wclosure' , '-Werror' , '-Wno-limited-postlink-optimizations' ]
758776 self .ldflags = []
759777 # Increate stack trace limit to maximise usefulness of test failure reports
760778 self .node_args = ['--stack-trace-limit=50' ]
761779
762- node_version = shared .check_node_version ()
763- if node_version :
780+ nodejs = self .get_nodejs ()
781+ if nodejs :
782+ node_version = shared .get_node_version (nodejs )
764783 if node_version < (11 , 0 , 0 ):
765784 self .node_args .append ('--unhandled-rejections=strict' )
766785 self .node_args .append ('--experimental-wasm-se' )
@@ -787,11 +806,10 @@ def setUp(self):
787806 self .env = {}
788807 self .temp_files_before_run = []
789808 self .uses_es6 = False
790- self .js_engines = config .JS_ENGINES .copy ()
791809 self .required_engine = None
792810 self .wasm_engines = config .WASM_ENGINES .copy ()
793811 self .use_all_engines = EMTEST_ALL_ENGINES
794- if self .js_engines [0 ] != config .NODE_JS :
812+ if self .js_engines [0 ] != config .NODE_JS_TEST :
795813 # If our primary JS engine is something other than node then enable
796814 # shell support.
797815 default_envs = 'web,webview,worker,node'
@@ -935,7 +953,7 @@ def verify_es5(self, filename):
935953 # use --quiet once its available
936954 # See: https://github.com/dollarshaveclub/es-check/pull/126/
937955 es_check_env = os .environ .copy ()
938- es_check_env ['PATH' ] = os .path .dirname (config .NODE_JS [0 ]) + os .pathsep + es_check_env ['PATH' ]
956+ es_check_env ['PATH' ] = os .path .dirname (config .NODE_JS_TEST [0 ]) + os .pathsep + es_check_env ['PATH' ]
939957 inputfile = os .path .abspath (filename )
940958 # For some reason es-check requires unix paths, even on windows
941959 if WINDOWS :
@@ -1091,7 +1109,7 @@ def run_js(self, filename, engine=None, args=None,
10911109 timeout_error = None
10921110 if not engine :
10931111 engine = self .js_engines [0 ]
1094- if engine == config .NODE_JS :
1112+ if engine == config .NODE_JS_TEST :
10951113 engine = engine + self .node_args
10961114 if engine == config .V8_ENGINE :
10971115 engine = engine + self .v8_args
@@ -2103,8 +2121,8 @@ def btest(self, filename, expected=None, reference=None,
21032121 if not isinstance (expected , list ):
21042122 expected = [expected ]
21052123 if EMTEST_BROWSER == 'node' :
2106- self .require_node ()
2107- self .node_args += shared .node_pthread_flags ()
2124+ nodejs = self .require_node ()
2125+ self .node_args += shared .node_pthread_flags (nodejs )
21082126 output = self .run_js ('test.js' )
21092127 self .assertContained ('RESULT: ' + expected [0 ], output )
21102128 else :
0 commit comments