@@ -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 , 0 , 0 )):
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,33 @@ 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 , required_version ):
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 < required_version :
1060
+ return False
1061
+
1062
+ self .js_engines = [nodejs ]
1063
+ return True
1064
+
1065
+ def require_node_version (self , required_version , name ):
1066
+ if self .is_browser_test ():
1067
+ return
1068
+
1069
+ if not self .try_require_node_version (required_version ):
1070
+ if f'EMTEST_SKIP_{ name } ' in os .environ :
1071
+ self .skipTest (f'test requires node { required_version } and EMTEST_SKIP_{ name } is set' )
1072
+ else :
1073
+ self .fail (f'node canary required to run this test. Use EMTEST_SKIP_{ name } to skip' )
1074
+
1058
1075
def require_simd (self ):
1059
1076
if self .is_browser_test ():
1060
1077
return
1061
1078
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
1079
+ if self .try_require_node_version ((16 , 0 , 0 )):
1080
+ return
1068
1081
1069
1082
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1070
1083
self .emcc_args .append ('-sENVIRONMENT=shell' )
@@ -1079,11 +1092,8 @@ def require_simd(self):
1079
1092
def require_wasm_legacy_eh (self ):
1080
1093
self .set_setting ('WASM_LEGACY_EXCEPTIONS' )
1081
1094
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
1095
+ if self .try_require_node_version ((17 , 0 , 0 )):
1096
+ return
1087
1097
1088
1098
if config .V8_ENGINE and config .V8_ENGINE in self .js_engines :
1089
1099
self .emcc_args .append ('-sENVIRONMENT=shell' )
0 commit comments