@@ -1038,12 +1038,8 @@ def require_wasm64(self):
10381038 if self .is_browser_test ():
10391039 return
10401040
1041- nodejs = self .get_nodejs ()
1042- if nodejs :
1043- version = shared .get_node_version (nodejs )
1044- if version >= (24 , 0 , 0 ):
1045- self .js_engines = [nodejs ]
1046- return
1041+ if self .try_require_node_version (24 ):
1042+ return
10471043
10481044 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
10491045 self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1055,16 +1051,23 @@ def require_wasm64(self):
10551051 else :
10561052 self .fail ('either d8 or node >= 24 required to run wasm64 tests. Use EMTEST_SKIP_WASM64 to skip' )
10571053
1054+ def try_require_node_version (self , major , minor = 0 , revision = 0 ):
1055+ nodejs = self .get_nodejs ()
1056+ if not nodejs :
1057+ self .skipTest ('Test requires nodejs to run' )
1058+ version = shared .get_node_version (nodejs )
1059+ if version < (major , minor , revision ):
1060+ return False
1061+
1062+ self .js_engines = [nodejs ]
1063+ return True
1064+
10581065 def require_simd (self ):
10591066 if self .is_browser_test ():
10601067 return
10611068
1062- nodejs = self .get_nodejs ()
1063- if nodejs :
1064- version = shared .get_node_version (nodejs )
1065- if version >= (16 , 0 , 0 ):
1066- self .js_engines = [nodejs ]
1067- return
1069+ if self .try_require_node_version (16 ):
1070+ return
10681071
10691072 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
10701073 self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1078,12 +1081,8 @@ def require_simd(self):
10781081
10791082 def require_wasm_legacy_eh (self ):
10801083 self .set_setting ('WASM_LEGACY_EXCEPTIONS' )
1081- nodejs = self .get_nodejs ()
1082- if nodejs :
1083- version = shared .get_node_version (nodejs )
1084- if version >= (17 , 0 , 0 ):
1085- self .js_engines = [nodejs ]
1086- return
1084+ if self .try_require_node_version (17 ):
1085+ return
10871086
10881087 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
10891088 self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1132,13 +1131,10 @@ def require_jspi(self):
11321131 return
11331132
11341133 exp_args = ['--experimental-wasm-stack-switching' , '--experimental-wasm-type-reflection' ]
1135- nodejs = self .get_nodejs ()
1136- if nodejs :
1137- # Support for JSPI came earlier than 22, but the new API changes are not yet in any node
1138- if self .node_is_canary (nodejs ):
1139- self .js_engines = [nodejs ]
1140- self .node_args += exp_args
1141- return
1134+ # Support for JSPI came earlier than 22, but the new API changes require v24
1135+ if self .try_require_node_version (24 ):
1136+ self .node_args += exp_args
1137+ return
11421138
11431139 if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
11441140 self .emcc_args .append ('-sENVIRONMENT=shell' )
0 commit comments