Skip to content

Commit 456a782

Browse files
authored
Enable JSPI testing for node version 19. (#19486)
1 parent db910eb commit 456a782

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

test/common.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,28 @@ def require_wasm_eh(self):
571571
else:
572572
self.fail('either d8 or node >= 16 required to run wasm-eh tests. Use EMTEST_SKIP_EH to skip')
573573

574+
def require_jspi(self):
575+
exp_args = ['--experimental-wasm-stack-switching', '--experimental-wasm-type-reflection']
576+
if config.NODE_JS and config.NODE_JS in self.js_engines:
577+
version = shared.check_node_version()
578+
# Support for JSPI came earlier than 19, but 19 is what currently works
579+
# with emscripten's implementation.
580+
if version >= (19, 0, 0):
581+
self.js_engines = [config.NODE_JS]
582+
self.node_args += exp_args
583+
return
584+
585+
if config.V8_ENGINE and config.V8_ENGINE in self.js_engines:
586+
self.emcc_args.append('-sENVIRONMENT=shell')
587+
self.js_engines = [config.V8_ENGINE]
588+
self.v8_args += exp_args
589+
return
590+
591+
if 'EMTEST_SKIP_JSPI' in os.environ:
592+
self.skipTest('test requires node >= 19 or d8 (and EMTEST_SKIP_JSPI is set)')
593+
else:
594+
self.fail('either d8 or node >= 19 required to run JSPI tests. Use EMTEST_SKIP_JSPI to skip')
595+
574596
def setup_node_pthreads(self):
575597
self.require_node()
576598
self.emcc_args += ['-Wno-pthreads-mem-growth', '-pthread']

test/test_core.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,7 @@ def with_asyncify_and_stack_switching(f):
230230
def metafunc(self, stack_switching):
231231
if stack_switching:
232232
self.set_setting('ASYNCIFY', 2)
233-
self.require_v8()
234-
# enable stack switching and other relevant features (like reference types
235-
# for the return value of externref)
236-
self.v8_args.append('--experimental-wasm-stack-switching')
233+
self.require_jspi()
237234
if not self.is_wasm():
238235
self.skipTest('wasm2js does not support WebAssembly.Suspender yet')
239236
# emcc warns about stack switching being experimental, and we build with

0 commit comments

Comments
 (0)