aboutsummaryrefslogtreecommitdiff
path: root/run_tests.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-11-09 00:59:06 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-11-20 23:08:17 +0200
commitb3dfb80c15cae24c66d07425bb7a327528438a55 (patch)
tree250ff7ed1623068bf28386ba203dfbec4be1e292 /run_tests.py
parent9d67e5030b6c86ce33f43ae7a5b827f299d68a3e (diff)
downloadmeson-b3dfb80c15cae24c66d07425bb7a327528438a55.zip
meson-b3dfb80c15cae24c66d07425bb7a327528438a55.tar.gz
meson-b3dfb80c15cae24c66d07425bb7a327528438a55.tar.bz2
Tests can be run with an external Meson command.
Diffstat (limited to 'run_tests.py')
-rwxr-xr-xrun_tests.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/run_tests.py b/run_tests.py
index 79c9639..4ac458c 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -31,6 +31,12 @@ from glob import glob
Backend = Enum('Backend', 'ninja vs xcode')
+if 'MESON_EXE' in os.environ:
+ import shlex
+ meson_exe = shlex.split(os.environ['MESON_EXE'])
+else:
+ meson_exe = None
+
if mesonlib.is_windows() or mesonlib.is_cygwin():
exe_suffix = '.exe'
else:
@@ -127,18 +133,28 @@ def get_fake_options(prefix):
def should_run_linux_cross_tests():
return shutil.which('arm-linux-gnueabihf-gcc-7') and not platform.machine().lower().startswith('arm')
-def run_configure_inprocess(commandlist):
+def run_configure_inprocess(meson_command, commandlist):
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
old_stderr = sys.stderr
sys.stderr = mystderr = StringIO()
try:
- returncode = mesonmain.run(commandlist[1:], commandlist[0])
+ returncode = mesonmain.run(commandlist, meson_command)
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr
return returncode, mystdout.getvalue(), mystderr.getvalue()
+def run_configure_external(full_command):
+ pc, o, e = mesonlib.Popen_safe(full_command)
+ return pc.returncode, o, e
+
+def run_configure(meson_command, commandlist):
+ global meson_exe
+ if meson_exe:
+ return run_configure_external(meson_exe + commandlist)
+ return run_configure_inprocess(meson_command, commandlist)
+
class FakeEnvironment(object):
def __init__(self):
self.cross_info = None