@@ -1038,12 +1038,8 @@ def require_wasm64(self):
1038
1038
if self .is_browser_test ():
1039
1039
return
1040
1040
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
1047
1043
1048
1044
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1049
1045
self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1055,16 +1051,23 @@ def require_wasm64(self):
1055
1051
else :
1056
1052
self .fail ('either d8 or node >= 24 required to run wasm64 tests. Use EMTEST_SKIP_WASM64 to skip' )
1057
1053
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
+
1058
1065
def require_simd (self ):
1059
1066
if self .is_browser_test ():
1060
1067
return
1061
1068
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
1068
1071
1069
1072
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1070
1073
self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1078,12 +1081,8 @@ def require_simd(self):
1078
1081
1079
1082
def require_wasm_legacy_eh (self ):
1080
1083
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
1087
1086
1088
1087
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1089
1088
self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1097,12 +1096,9 @@ def require_wasm_legacy_eh(self):
1097
1096
1098
1097
def require_wasm_eh (self ):
1099
1098
self .set_setting ('WASM_LEGACY_EXCEPTIONS' , 0 )
1100
- nodejs = self .get_nodejs ()
1101
- if nodejs :
1102
- if self .node_is_canary (nodejs ):
1103
- self .js_engines = [nodejs ]
1104
- self .node_args .append ('--experimental-wasm-exnref' )
1105
- return
1099
+ if self .try_require_node_version (24 ):
1100
+ self .node_args .append ('--experimental-wasm-exnref' )
1101
+ return
1106
1102
1107
1103
if self .is_browser_test ():
1108
1104
return
@@ -1132,13 +1128,10 @@ def require_jspi(self):
1132
1128
return
1133
1129
1134
1130
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
1131
+ # Support for JSPI came earlier than 22, but the new API changes require v24
1132
+ if self .try_require_node_version (24 ):
1133
+ self .node_args += exp_args
1134
+ return
1142
1135
1143
1136
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1144
1137
self .emcc_args .append ('-sENVIRONMENT=shell' )
0 commit comments