| import os |
| |
| from scripts.test import shared |
| from . import utils |
| |
| |
| class ErrorsTest(utils.BinaryenTestCase): |
| def test_parsing_error_msg(self): |
| module = ''' |
| (module |
| (func $foo |
| (abc) |
| ) |
| ) |
| ''' |
| p = shared.run_process(shared.WASM_OPT + ['--print', '-o', os.devnull], |
| input=module, check=False, capture_output=True) |
| self.assertNotEqual(p.returncode, 0) |
| self.assertIn("parse exception: abc (at 4:4)", p.stderr) |
| |
| def test_validation_error_msg(self): |
| def test(args=[], extra_expected=None): |
| module = ''' |
| (module |
| (memory (shared 10 20)) |
| ) |
| ''' |
| p = shared.run_process(shared.WASM_OPT + ['-o', os.devnull] + args, |
| input=module, check=False, capture_output=True) |
| self.assertNotEqual(p.returncode, 0) |
| self.assertIn('memory is shared, but atomics are disabled', p.stderr) |
| if extra_expected: |
| self.assertIn(extra_expected, p.stdout) |
| |
| test() |
| # when the user asks to print the module, we print it even if it is |
| # invalid, for debugging (otherwise, an invalid module would not reach |
| # the stage of runnning passes, and print is a pass, so nothing would |
| # be printed) |
| test(['--print'], '(module') |