| import os | |
| import unittest | |
| from scripts.test import shared | |
| class BinaryenTestCase(unittest.TestCase): | |
| def input_path(self, filename): | |
| return os.path.join(shared.options.binaryen_test, 'unit', 'input', | |
| filename) | |
| def roundtrip(self, filename, opts=None, debug=True): | |
| opts = opts if opts is not None else [] | |
| opts = ['--mvp-features'] + opts | |
| if debug: | |
| opts.append('-g') | |
| path = self.input_path(filename) | |
| shared.run_process(shared.WASM_OPT + ['-o', 'a.wasm', path] + opts) | |
| with open(path, 'rb') as f: | |
| with open('a.wasm', 'rb') as g: | |
| self.assertEqual(g.read(), f.read()) | |
| def disassemble(self, filename): | |
| path = self.input_path(filename) | |
| p = shared.run_process(shared.WASM_OPT + | |
| ['--print', '-o', os.devnull, path], | |
| capture_output=True) | |
| self.assertEqual(p.stderr, '') | |
| return p.stdout | |
| def check_features(self, filename, features, opts=[]): | |
| path = self.input_path(filename) | |
| cmd = shared.WASM_OPT + \ | |
| ['--mvp-features', '--print-features', '-o', os.devnull, path] + opts | |
| p = shared.run_process(cmd, check=False, capture_output=True) | |
| self.assertEqual(p.returncode, 0) | |
| self.assertEqual(p.stderr, '') | |
| self.assertEqual(p.stdout.splitlines(), | |
| ['--enable-' + f for f in features]) | |
| # similar to assertEqual, but while ignoring line ending differences such | |
| # as those between windows and unix | |
| def assert_equal_ignoring_line_endings(self, left, right): | |
| left = left.replace('\r\n', '\n') | |
| right = right.replace('\r\n', '\n') | |
| self.assertEqual(left, right) |