From c6a5fc2ac76c5ab709896ee1b0edd33685a67ed1 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 31 May 2023 16:25:10 -0700 Subject: [PATCH] decodetree: Add --output-null for meson testing Using "-o /dev/null" fails on Windows. Rather that working around this in meson, add a separate command-line option so that we can use python's os.devnull. Reported-by: Thomas Huth Fixes: 656666dc7d1b ("tests/decode: Convert tests to meson") Signed-off-by: Richard Henderson Reviewed-by: Thomas Huth Message-Id: <20230531232510.66985-1-richard.henderson@linaro.org> --- scripts/decodetree.py | 18 ++++++++++-------- tests/decode/meson.build | 4 ++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/scripts/decodetree.py b/scripts/decodetree.py index 13db585d04..a8a6cb69cd 100644 --- a/scripts/decodetree.py +++ b/scripts/decodetree.py @@ -42,6 +42,7 @@ translate_scope = 'static ' input_file = '' output_file = None output_fd = None +output_null = False insntype = 'uint32_t' decode_function = 'decode' @@ -145,12 +146,7 @@ def error_with_file(file, lineno, *args): if output_file and output_fd: output_fd.close() - # Do not try to remove e.g. -o /dev/null - if not output_file.startswith("/dev"): - try: - os.remove(output_file) - except PermissionError: - pass + os.remove(output_file) exit(0 if testforerror else 1) # end error_with_file @@ -1501,6 +1497,7 @@ def main(): global translate_prefix global output_fd global output_file + global output_null global input_file global insnwidth global insntype @@ -1514,7 +1511,8 @@ def main(): decode_scope = 'static ' long_opts = ['decode=', 'translate=', 'output=', 'insnwidth=', - 'static-decode=', 'varinsnwidth=', 'test-for-error'] + 'static-decode=', 'varinsnwidth=', 'test-for-error', + 'output-null'] try: (opts, args) = getopt.gnu_getopt(sys.argv[1:], 'o:vw:', long_opts) except getopt.GetoptError as err: @@ -1545,6 +1543,8 @@ def main(): error(0, 'cannot handle insns of width', insnwidth) elif o == '--test-for-error': testforerror = True + elif o == '--output-null': + output_null = True else: assert False, 'unhandled option' @@ -1574,7 +1574,9 @@ def main(): stree = build_size_tree(toppat.pats, 8, 0, 0) prop_size(stree) - if output_file: + if output_null: + output_fd = open(os.devnull, 'wt', encoding='utf-8', errors="ignore") + elif output_file: output_fd = open(output_file, 'wt', encoding='utf-8') else: output_fd = io.TextIOWrapper(sys.stdout.buffer, diff --git a/tests/decode/meson.build b/tests/decode/meson.build index 38a0629d67..b13fada980 100644 --- a/tests/decode/meson.build +++ b/tests/decode/meson.build @@ -53,12 +53,12 @@ decodetree = find_program(meson.project_source_root() / 'scripts/decodetree.py') foreach t: err_tests test(fs.replace_suffix(t, ''), - decodetree, args: ['-o', '/dev/null', '--test-for-error', files(t)], + decodetree, args: ['--output-null', '--test-for-error', files(t)], suite: suite) endforeach foreach t: succ_tests test(fs.replace_suffix(t, ''), - decodetree, args: ['-o', '/dev/null', files(t)], + decodetree, args: ['--output-null', files(t)], suite: suite) endforeach -- 2.11.0