diff options
author | Eli Bendersky <eliben@gmail.com> | 2021-10-29 09:50:16 -0700 |
---|---|---|
committer | Eli Bendersky <eliben@gmail.com> | 2021-10-29 09:50:16 -0700 |
commit | 7beef72dea11cf421f6ab7fce81d8592776cf79f (patch) | |
tree | 88fd6b4dd43585adea3da64d053ddf0a5c415125 /tests/test_util.py | |
parent | 615317a473f09b9b9d444313ac15e52e7763c7c1 (diff) | |
download | pycparser-7beef72dea11cf421f6ab7fce81d8592776cf79f.tar.gz |
Add test that runs all examples and makes sure they don't crash
Diffstat (limited to 'tests/test_util.py')
-rw-r--r-- | tests/test_util.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test_util.py b/tests/test_util.py index 3ac3886..435962d 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -7,7 +7,10 @@ # This file contributed by vit9696@users.noreply.github.com # License: BSD #------------------------------------------------------------------------------ +import os import platform +import subprocess +import sys def cpp_supported(): @@ -29,3 +32,23 @@ def cpp_args(args=[]): if platform.system() == 'Darwin': return ['-E'] + args return args + +def _bytes2str(b): + if sys.version_info[0] == 3: + return b.decode('latin-1') + else: + return b + +def run_exe(exe_path, args=[], echo=False): + """ Runs the given executable as a subprocess, given the + list of arguments. Captures its return code (rc) and stdout and + returns a pair: rc, stdout_str + """ + popen_cmd = [exe_path] + args + if os.path.splitext(exe_path)[1] == '.py': + popen_cmd.insert(0, sys.executable) + if echo: + print('[cmd]', ' '.join(popen_cmd)) + proc = subprocess.Popen(popen_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + proc_stdout = proc.communicate()[0] + return proc.returncode, _bytes2str(proc_stdout) |