diff options
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) |