summaryrefslogtreecommitdiff
path: root/test/run-roundtrip.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/run-roundtrip.py')
-rwxr-xr-xtest/run-roundtrip.py303
1 files changed, 152 insertions, 151 deletions
diff --git a/test/run-roundtrip.py b/test/run-roundtrip.py
index e64febe8..61c01533 100755
--- a/test/run-roundtrip.py
+++ b/test/run-roundtrip.py
@@ -30,166 +30,167 @@ SKIPPED = 2
def FilesAreEqual(filename1, filename2, verbose=False):
- try:
- with open(filename1, 'rb') as file1:
- data1 = file1.read()
-
- with open(filename2, 'rb') as file2:
- data2 = file2.read()
- except OSError as e:
- return (ERROR, str(e))
-
- if data1 != data2:
- msg = 'files differ'
- if verbose:
- hexdump1 = utils.Hexdump(data1)
- hexdump2 = utils.Hexdump(data2)
- diff_lines = []
- for line in (difflib.unified_diff(hexdump1, hexdump2, fromfile=filename1,
- tofile=filename2)):
- diff_lines.append(line)
- msg += ''.join(diff_lines)
- msg += '\n'
- return (ERROR, msg)
- return (OK, '')
+ try:
+ with open(filename1, 'rb') as file1:
+ data1 = file1.read()
+
+ with open(filename2, 'rb') as file2:
+ data2 = file2.read()
+ except OSError as e:
+ return (ERROR, str(e))
+
+ if data1 != data2:
+ msg = 'files differ'
+ if verbose:
+ hexdump1 = utils.Hexdump(data1)
+ hexdump2 = utils.Hexdump(data2)
+ diff_lines = []
+ for line in difflib.unified_diff(hexdump1, hexdump2,
+ fromfile=filename1,
+ tofile=filename2):
+ diff_lines.append(line)
+ msg += ''.join(diff_lines)
+ msg += '\n'
+ return (ERROR, msg)
+ return (OK, '')
def TwoRoundtrips(wat2wasm, wasm2wat, out_dir, filename, verbose):
- basename = os.path.basename(filename)
- basename_noext = os.path.splitext(basename)[0]
- wasm1_file = os.path.join(out_dir, basename_noext + '-1.wasm')
- wast2_file = os.path.join(out_dir, basename_noext + '-2.wast')
- wasm3_file = os.path.join(out_dir, basename_noext + '-3.wasm')
- try:
- wat2wasm.RunWithArgs('-o', wasm1_file, filename)
- except Error:
- # if the file doesn't parse properly, just skip it (it may be a "bad-*"
- # test)
- return (SKIPPED, None)
- try:
- wasm2wat.RunWithArgs('-o', wast2_file, wasm1_file)
- wat2wasm.RunWithArgs('-o', wasm3_file, wast2_file)
- except Error as e:
- return (ERROR, str(e))
- return FilesAreEqual(wasm1_file, wasm3_file, verbose)
+ basename = os.path.basename(filename)
+ basename_noext = os.path.splitext(basename)[0]
+ wasm1_file = os.path.join(out_dir, basename_noext + '-1.wasm')
+ wast2_file = os.path.join(out_dir, basename_noext + '-2.wast')
+ wasm3_file = os.path.join(out_dir, basename_noext + '-3.wasm')
+ try:
+ wat2wasm.RunWithArgs('-o', wasm1_file, filename)
+ except Error:
+ # if the file doesn't parse properly, just skip it (it may be a "bad-*"
+ # test)
+ return (SKIPPED, None)
+ try:
+ wasm2wat.RunWithArgs('-o', wast2_file, wasm1_file)
+ wat2wasm.RunWithArgs('-o', wasm3_file, wast2_file)
+ except Error as e:
+ return (ERROR, str(e))
+ return FilesAreEqual(wasm1_file, wasm3_file, verbose)
def OneRoundtripToStdout(wat2wasm, wasm2wat, out_dir, filename, verbose):
- basename = os.path.basename(filename)
- basename_noext = os.path.splitext(basename)[0]
- wasm_file = os.path.join(out_dir, basename_noext + '.wasm')
- try:
- wat2wasm.RunWithArgs('-o', wasm_file, filename)
- except Error:
- # if the file doesn't parse properly, just skip it (it may be a "bad-*"
- # test)
- return (SKIPPED, None)
- try:
- wasm2wat.RunWithArgs(wasm_file)
- except Error as e:
- return (ERROR, str(e))
- return (OK, '')
+ basename = os.path.basename(filename)
+ basename_noext = os.path.splitext(basename)[0]
+ wasm_file = os.path.join(out_dir, basename_noext + '.wasm')
+ try:
+ wat2wasm.RunWithArgs('-o', wasm_file, filename)
+ except Error:
+ # if the file doesn't parse properly, just skip it (it may be a "bad-*"
+ # test)
+ return (SKIPPED, None)
+ try:
+ wasm2wat.RunWithArgs(wasm_file)
+ except Error as e:
+ return (ERROR, str(e))
+ return (OK, '')
def main(args):
- parser = argparse.ArgumentParser()
- parser.add_argument('-v', '--verbose', help='print more diagnotic messages.',
- action='store_true')
- parser.add_argument('-o', '--out-dir', metavar='PATH',
- help='output directory for files.')
- parser.add_argument('--bindir', metavar='PATH',
- default=find_exe.GetDefaultPath(),
- help='directory to search for all executables.')
- parser.add_argument('--stdout', action='store_true',
- help='do one roundtrip and write wast output to stdout')
- parser.add_argument('--no-error-cmdline',
- help='don\'t display the subprocess\'s commandline when '
- 'an error occurs', dest='error_cmdline',
- action='store_false')
- parser.add_argument('-p', '--print-cmd',
- help='print the commands that are run.',
- action='store_true')
- parser.add_argument('--no-check', action='store_true')
- parser.add_argument('--debug-names', action='store_true')
- parser.add_argument('--generate-names', action='store_true')
- parser.add_argument('--fold-exprs', action='store_true')
- parser.add_argument('--enable-exceptions', action='store_true')
- parser.add_argument('--enable-saturating-float-to-int', action='store_true')
- parser.add_argument('--enable-threads', action='store_true')
- parser.add_argument('--enable-simd', action='store_true')
- parser.add_argument('--enable-sign-extension', action='store_true')
- parser.add_argument('--enable-multi-value', action='store_true')
- parser.add_argument('--enable-bulk-memory', action='store_true')
- parser.add_argument('--enable-tail-call', action='store_true')
- parser.add_argument('--enable-reference-types', action='store_true')
- parser.add_argument('--inline-exports', action='store_true')
- parser.add_argument('--inline-imports', action='store_true')
- parser.add_argument('file', help='test file.')
- options = parser.parse_args(args)
-
- wat2wasm = utils.Executable(
- find_exe.GetWat2WasmExecutable(options.bindir),
- error_cmdline=options.error_cmdline)
- wat2wasm.AppendOptionalArgs({
- '--debug-names': options.debug_names,
- '--enable-exceptions': options.enable_exceptions,
- '--enable-multi-value': options.enable_multi_value,
- '--enable-saturating-float-to-int':
- options.enable_saturating_float_to_int,
- '--enable-sign-extension': options.enable_sign_extension,
- '--enable-simd': options.enable_simd,
- '--enable-threads': options.enable_threads,
- '--enable-bulk-memory': options.enable_bulk_memory,
- '--enable-tail-call': options.enable_tail_call,
- '--enable-reference-types': options.enable_reference_types,
- '--no-check': options.no_check,
- })
-
- wasm2wat = utils.Executable(
- find_exe.GetWasm2WatExecutable(options.bindir),
- error_cmdline=options.error_cmdline)
- wasm2wat.AppendOptionalArgs({
- '--fold-exprs': options.fold_exprs,
- '--enable-exceptions': options.enable_exceptions,
- '--enable-multi-value': options.enable_multi_value,
- '--enable-saturating-float-to-int':
- options.enable_saturating_float_to_int,
- '--enable-sign-extension': options.enable_sign_extension,
- '--enable-simd': options.enable_simd,
- '--enable-bulk-memory': options.enable_bulk_memory,
- '--enable-tail-call': options.enable_tail_call,
- '--enable-reference-types': options.enable_reference_types,
- '--enable-threads': options.enable_threads,
- '--inline-exports': options.inline_exports,
- '--inline-imports': options.inline_imports,
- '--no-debug-names': not options.debug_names,
- '--generate-names': options.generate_names,
- '--no-check': options.no_check,
- })
-
- wat2wasm.verbose = options.print_cmd
- wasm2wat.verbose = options.print_cmd
-
- filename = options.file
- if not os.path.exists(filename):
- sys.stderr.write('File not found: %s\n' % filename)
- return ERROR
-
- with utils.TempDirectory(options.out_dir, 'roundtrip-') as out_dir:
- if options.stdout:
- result, msg = OneRoundtripToStdout(wat2wasm, wasm2wat, out_dir,
- filename, options.verbose)
- else:
- result, msg = TwoRoundtrips(wat2wasm, wasm2wat, out_dir, filename,
- options.verbose)
- if result == ERROR:
- sys.stderr.write(msg)
- return result
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-v', '--verbose', help='print more diagnotic messages.',
+ action='store_true')
+ parser.add_argument('-o', '--out-dir', metavar='PATH',
+ help='output directory for files.')
+ parser.add_argument('--bindir', metavar='PATH',
+ default=find_exe.GetDefaultPath(),
+ help='directory to search for all executables.')
+ parser.add_argument('--stdout', action='store_true',
+ help='do one roundtrip and write wast output to stdout')
+ parser.add_argument('--no-error-cmdline',
+ help='don\'t display the subprocess\'s commandline when '
+ 'an error occurs', dest='error_cmdline',
+ action='store_false')
+ parser.add_argument('-p', '--print-cmd',
+ help='print the commands that are run.',
+ action='store_true')
+ parser.add_argument('--no-check', action='store_true')
+ parser.add_argument('--debug-names', action='store_true')
+ parser.add_argument('--generate-names', action='store_true')
+ parser.add_argument('--fold-exprs', action='store_true')
+ parser.add_argument('--enable-exceptions', action='store_true')
+ parser.add_argument('--enable-saturating-float-to-int', action='store_true')
+ parser.add_argument('--enable-threads', action='store_true')
+ parser.add_argument('--enable-simd', action='store_true')
+ parser.add_argument('--enable-sign-extension', action='store_true')
+ parser.add_argument('--enable-multi-value', action='store_true')
+ parser.add_argument('--enable-bulk-memory', action='store_true')
+ parser.add_argument('--enable-tail-call', action='store_true')
+ parser.add_argument('--enable-reference-types', action='store_true')
+ parser.add_argument('--inline-exports', action='store_true')
+ parser.add_argument('--inline-imports', action='store_true')
+ parser.add_argument('file', help='test file.')
+ options = parser.parse_args(args)
+
+ wat2wasm = utils.Executable(
+ find_exe.GetWat2WasmExecutable(options.bindir),
+ error_cmdline=options.error_cmdline)
+ wat2wasm.AppendOptionalArgs({
+ '--debug-names': options.debug_names,
+ '--enable-exceptions': options.enable_exceptions,
+ '--enable-multi-value': options.enable_multi_value,
+ '--enable-saturating-float-to-int':
+ options.enable_saturating_float_to_int,
+ '--enable-sign-extension': options.enable_sign_extension,
+ '--enable-simd': options.enable_simd,
+ '--enable-threads': options.enable_threads,
+ '--enable-bulk-memory': options.enable_bulk_memory,
+ '--enable-tail-call': options.enable_tail_call,
+ '--enable-reference-types': options.enable_reference_types,
+ '--no-check': options.no_check,
+ })
+
+ wasm2wat = utils.Executable(
+ find_exe.GetWasm2WatExecutable(options.bindir),
+ error_cmdline=options.error_cmdline)
+ wasm2wat.AppendOptionalArgs({
+ '--fold-exprs': options.fold_exprs,
+ '--enable-exceptions': options.enable_exceptions,
+ '--enable-multi-value': options.enable_multi_value,
+ '--enable-saturating-float-to-int':
+ options.enable_saturating_float_to_int,
+ '--enable-sign-extension': options.enable_sign_extension,
+ '--enable-simd': options.enable_simd,
+ '--enable-bulk-memory': options.enable_bulk_memory,
+ '--enable-tail-call': options.enable_tail_call,
+ '--enable-reference-types': options.enable_reference_types,
+ '--enable-threads': options.enable_threads,
+ '--inline-exports': options.inline_exports,
+ '--inline-imports': options.inline_imports,
+ '--no-debug-names': not options.debug_names,
+ '--generate-names': options.generate_names,
+ '--no-check': options.no_check,
+ })
+
+ wat2wasm.verbose = options.print_cmd
+ wasm2wat.verbose = options.print_cmd
+
+ filename = options.file
+ if not os.path.exists(filename):
+ sys.stderr.write('File not found: %s\n' % filename)
+ return ERROR
+
+ with utils.TempDirectory(options.out_dir, 'roundtrip-') as out_dir:
+ if options.stdout:
+ result, msg = OneRoundtripToStdout(wat2wasm, wasm2wat, out_dir,
+ filename, options.verbose)
+ else:
+ result, msg = TwoRoundtrips(wat2wasm, wasm2wat, out_dir, filename,
+ options.verbose)
+ if result == ERROR:
+ sys.stderr.write(msg)
+ return result
if __name__ == '__main__':
- try:
- sys.exit(main(sys.argv[1:]))
- except Error as e:
- sys.stderr.write(str(e) + '\n')
- sys.exit(1)
+ try:
+ sys.exit(main(sys.argv[1:]))
+ except Error as e:
+ sys.stderr.write(str(e) + '\n')
+ sys.exit(1)