@@ -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+
391454def 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