import os import subprocess from scripts.test import shared from . import utils class DWARFTest(utils.BinaryenTestCase): def test_no_crash(self): # run dwarf processing on some interesting large files, too big to be # worth putting in passes where the text output would be massive. We # just check that no assertion are hit. path = self.input_path('dwarf') for name in os.listdir(path): args = [os.path.join(path, name)] + \ ['-g', '--dwarfdump', '--roundtrip', '--dwarfdump'] shared.run_process(shared.WASM_OPT + args, capture_output=True) def test_dwarf_incompatibility(self): warning = 'not fully compatible with DWARF' path = self.input_path(os.path.join('dwarf', 'cubescript.wasm')) args = [path, '-g'] # flatten warns err = shared.run_process(shared.WASM_OPT + args + ['--flatten'], stderr=subprocess.PIPE).stderr self.assertIn(warning, err) # safe passes do not err = shared.run_process(shared.WASM_OPT + args + ['--metrics'], stderr=subprocess.PIPE).stderr self.assertNotIn(warning, err)