@@ -137,6 +137,32 @@ def run_wasm_metadce_tests():
137137 shared .fail_if_not_identical_to_file (stdout , expected + '.stdout' )
138138
139139
140+ def run_one_wasm_reduce_test (t , stdout = None ):
141+ base_name = os .path .splitext (os .path .basename (t ))[0 ]
142+ print ('..' , os .path .basename (t ), file = stdout )
143+ a_wasm = f'reduce_{ base_name } _a.wasm'
144+ b_wasm = f'reduce_{ base_name } _b.wasm'
145+ c_wasm = f'reduce_{ base_name } _c.wasm'
146+ a_wat = f'reduce_{ base_name } _a.wat'
147+ try :
148+ support .run_command (shared .WASM_AS + [t , '-o' , a_wasm , '-all' ], stdout = stdout )
149+ cmd = shared .WASM_OPT [0 ]
150+ support .run_command (
151+ shared .WASM_REDUCE + [a_wasm , f'--command={ cmd } { b_wasm } --fuzz-exec -all' , '-t' , b_wasm , '-w' , c_wasm , '--timeout=4' ],
152+ stdout = stdout ,
153+ stderr = subprocess .PIPE ,
154+ )
155+ expected = t + '.txt'
156+ support .run_command (shared .WASM_DIS + [c_wasm , '-o' , a_wat ], stdout = stdout )
157+ with open (a_wat ) as seen :
158+ shared .fail_if_not_identical_to_file (seen .read (), expected )
159+ finally :
160+ shared .delete_from_orbit (a_wasm )
161+ shared .delete_from_orbit (b_wasm )
162+ shared .delete_from_orbit (c_wasm )
163+ shared .delete_from_orbit (a_wat )
164+
165+
140166def run_wasm_reduce_tests ():
141167 if not shared .has_shell_timeout ():
142168 print_heading ('skipping wasm-reduce testcases' )
@@ -145,16 +171,8 @@ def run_wasm_reduce_tests():
145171 print_heading ('checking wasm-reduce testcases' )
146172
147173 # fixed testcases
148- for t in shared .get_tests (shared .get_test_dir ('reduce' ), ['.wast' ]):
149- print ('..' , os .path .basename (t ))
150- # convert to wasm
151- support .run_command (shared .WASM_AS + [t , '-o' , 'a.wasm' , '-all' ])
152- cmd = shared .WASM_OPT [0 ]
153- support .run_command (shared .WASM_REDUCE + ['a.wasm' , f'--command={ cmd } b.wasm --fuzz-exec -all ' , '-t' , 'b.wasm' , '-w' , 'c.wasm' , '--timeout=4' ])
154- expected = t + '.txt'
155- support .run_command (shared .WASM_DIS + ['c.wasm' , '-o' , 'a.wat' ])
156- with open ('a.wat' ) as seen :
157- shared .fail_if_not_identical_to_file (seen .read (), expected )
174+ tests = shared .get_tests (shared .get_test_dir ('reduce' ), ['.wast' ])
175+ shared .run_parallel_tests (run_one_wasm_reduce_test , tests )
158176
159177 # run on a nontrivial fuzz testcase, for general coverage
160178 # this is very slow in ThreadSanitizer, so avoid it there
0 commit comments