Skip to content

Commit c17479b

Browse files
authored
[test] Add new decorators for running tests under different FS backends (#23177)
- @with_all_fs - @also_with_nodefs - @also_with_nodefs_both
1 parent 6fa576b commit c17479b

File tree

5 files changed

+144
-145
lines changed

5 files changed

+144
-145
lines changed

src/polyfill/atob.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
if (typeof atob == 'undefined') {
1616
if (typeof global != 'undefined' && typeof globalThis == 'undefined') {
17+
/** @suppress{checkTypes} */
1718
globalThis = global;
1819
}
1920

test/common.py

Lines changed: 81 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -379,15 +379,78 @@ def metafunc(self, wasmfs, *args, **kwargs):
379379
if DEBUG:
380380
print('parameterize:wasmfs=%d' % wasmfs)
381381
if wasmfs:
382-
self.set_setting('WASMFS')
383-
self.emcc_args.append('-DWASMFS')
382+
self.setup_wasmfs_test()
383+
else:
384+
self.emcc_args += ['-DMEMFS']
384385
f(self, *args, **kwargs)
385386

386387
parameterize(metafunc, {'': (False,),
387388
'wasmfs': (True,)})
388389
return metafunc
389390

390391

392+
def also_with_nodefs(func):
393+
@wraps(func)
394+
def metafunc(self, fs, *args, **kwargs):
395+
if DEBUG:
396+
print('parameterize:fs=%s' % (fs))
397+
if fs == 'nodefs':
398+
self.setup_nodefs_test()
399+
else:
400+
self.emcc_args += ['-DMEMFS']
401+
assert fs is None
402+
func(self, *args, **kwargs)
403+
404+
parameterize(metafunc, {'': (None,),
405+
'nodefs': ('nodefs',)})
406+
return metafunc
407+
408+
409+
def also_with_nodefs_both(func):
410+
@wraps(func)
411+
def metafunc(self, fs, *args, **kwargs):
412+
if DEBUG:
413+
print('parameterize:fs=%s' % (fs))
414+
if fs == 'nodefs':
415+
self.setup_nodefs_test()
416+
elif fs == 'rawfs':
417+
self.setup_noderawfs_test()
418+
else:
419+
self.emcc_args += ['-DMEMFS']
420+
assert fs is None
421+
func(self, *args, **kwargs)
422+
423+
parameterize(metafunc, {'': (None,),
424+
'nodefs': ('nodefs',),
425+
'rawfs': ('rawfs',)})
426+
return metafunc
427+
428+
429+
def with_all_fs(func):
430+
@wraps(func)
431+
def metafunc(self, fs, *args, **kwargs):
432+
if DEBUG:
433+
print('parameterize:fs=%s' % (fs))
434+
if fs == 'nodefs':
435+
self.setup_nodefs_test()
436+
elif fs == 'rawfs':
437+
self.setup_noderawfs_test()
438+
elif fs == 'wasmfs':
439+
self.setup_wasmfs_test()
440+
else:
441+
self.emcc_args += ['-DMEMFS']
442+
assert fs is None
443+
func(self, *args, **kwargs)
444+
445+
# TODO(sbc): rather than treat WASMFS as orthogonal we should
446+
# probably make it combinatorial with nodefs and noderawfs.
447+
parameterize(metafunc, {'': (None,),
448+
'nodefs': ('nodefs',),
449+
'rawfs': ('rawfs',),
450+
'wasmfs': ('wasmfs',)})
451+
return metafunc
452+
453+
391454
def also_with_noderawfs(func):
392455
assert callable(func)
393456

@@ -396,9 +459,9 @@ def metafunc(self, rawfs, *args, **kwargs):
396459
if DEBUG:
397460
print('parameterize:rawfs=%d' % rawfs)
398461
if rawfs:
399-
self.require_node()
400-
self.emcc_args += ['-DNODERAWFS']
401-
self.set_setting('NODERAWFS')
462+
self.setup_noderawfs_test()
463+
else:
464+
self.emcc_args += ['-DMEMFS']
402465
func(self, *args, **kwargs)
403466

404467
parameterize(metafunc, {'': (False,),
@@ -1025,7 +1088,19 @@ def require_wasm2js(self):
10251088

10261089
def setup_nodefs_test(self):
10271090
self.require_node()
1028-
self.emcc_args += ['-lnodefs.js', '--pre-js', test_file('setup_nodefs.js')]
1091+
if self.get_setting('WASMFS'):
1092+
# without this the JS setup code in setup_nodefs.js doesn't work
1093+
self.set_setting('FORCE_FILESYSTEM')
1094+
self.emcc_args += ['-DNODEFS', '-lnodefs.js', '--pre-js', test_file('setup_nodefs.js')]
1095+
1096+
def setup_noderawfs_test(self):
1097+
self.require_node()
1098+
self.emcc_args += ['-DNODERAWFS']
1099+
self.set_setting('NODERAWFS')
1100+
1101+
def setup_wasmfs_test(self):
1102+
self.set_setting('WASMFS')
1103+
self.emcc_args += ['-DWASMFS']
10291104

10301105
def setup_node_pthreads(self):
10311106
self.require_node()

0 commit comments

Comments
 (0)