Skip to content

Commit 9e61990

Browse files
authored
Update require_node_canary, make require_jspi and exnref use it (#22024)
This PR does 2 things: 1. It updates `require_node_canary` to check the path of the node binary for the string 'canary'. This is hacky but the only known way to distinguish a canary build (which has a bleeding-edge v8 version) from a release build. 2. Updates `require_jspi` and `require_wasm_exnref` to check for the canary version instead of v19, because we now require the Suspender-free API update. This update is not yet in any release, so we require canary.
1 parent 7eec749 commit 9e61990

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

test/common.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -821,11 +821,12 @@ def require_node(self):
821821
self.require_engine(nodejs)
822822
return nodejs
823823

824+
def node_is_canary(self, nodejs):
825+
return nodejs and nodejs[0] and 'canary' in nodejs[0]
826+
824827
def require_node_canary(self):
825828
nodejs = self.get_nodejs()
826-
if nodejs:
827-
version = shared.get_node_version(nodejs)
828-
if version >= (20, 0, 0):
829+
if self.node_is_canary(nodejs):
829830
self.require_engine(nodejs)
830831
return
831832

@@ -901,8 +902,7 @@ def require_wasm_eh(self):
901902
def require_wasm_exnref(self):
902903
nodejs = self.get_nodejs()
903904
if nodejs:
904-
version = shared.get_node_version(nodejs)
905-
if version >= (22, 0, 0):
905+
if self.node_is_canary(nodejs):
906906
self.js_engines = [nodejs]
907907
self.node_args.append('--experimental-wasm-exnref')
908908
return
@@ -914,9 +914,9 @@ def require_wasm_exnref(self):
914914
return
915915

916916
if 'EMTEST_SKIP_EH' in os.environ:
917-
self.skipTest('test requires node >= 22 or d8 (and EMTEST_SKIP_EH is set)')
917+
self.skipTest('test requires canary or d8 (and EMTEST_SKIP_EH is set)')
918918
else:
919-
self.fail('either d8 or node >= 22 required to run wasm-eh tests. Use EMTEST_SKIP_EH to skip')
919+
self.fail('either d8 or node canary required to run wasm-eh tests. Use EMTEST_SKIP_EH to skip')
920920

921921
def require_jspi(self):
922922
# emcc warns about stack switching being experimental, and we build with
@@ -934,10 +934,8 @@ def require_jspi(self):
934934
exp_args = ['--experimental-wasm-stack-switching', '--experimental-wasm-type-reflection']
935935
nodejs = self.get_nodejs()
936936
if nodejs:
937-
version = shared.get_node_version(nodejs)
938-
# Support for JSPI came earlier than 19, but 19 is what currently works
939-
# with emscripten's implementation.
940-
if version >= (19, 0, 0):
937+
# Support for JSPI came earlier than 22, but the new API changes are not yet in any node
938+
if self.node_is_canary(nodejs):
941939
self.js_engines = [nodejs]
942940
self.node_args += exp_args
943941
return
@@ -949,9 +947,9 @@ def require_jspi(self):
949947
return
950948

951949
if 'EMTEST_SKIP_JSPI' in os.environ:
952-
self.skipTest('test requires node >= 19 or d8 (and EMTEST_SKIP_JSPI is set)')
950+
self.skipTest('test requires node canary or d8 (and EMTEST_SKIP_JSPI is set)')
953951
else:
954-
self.fail('either d8 or node >= 19 required to run JSPI tests. Use EMTEST_SKIP_JSPI to skip')
952+
self.fail('either d8 or node canary required to run JSPI tests. Use EMTEST_SKIP_JSPI to skip')
955953

956954
def require_wasm2js(self):
957955
if self.is_wasm64():

0 commit comments

Comments
 (0)