summaryrefslogtreecommitdiff
path: root/tests/test_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_util.py')
-rw-r--r--tests/test_util.py23
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)