aboutsummaryrefslogtreecommitdiff
path: root/run_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_tests.py')
-rwxr-xr-xrun_tests.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/run_tests.py b/run_tests.py
index 196307b..d830fe1 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -20,7 +20,7 @@ from io import StringIO
import sys
import environment
import mesonlib
-import meson
+import meson, meson_test
import argparse
import xml.etree.ElementTree as ET
import time
@@ -147,7 +147,7 @@ def log_text_file(logfile, testdir, msg, stdo, stde):
if stop:
raise StopException()
-def run_test_inprocess(commandlist):
+def run_configure_inprocess(commandlist):
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
old_stderr = sys.stderr
@@ -157,6 +157,20 @@ def run_test_inprocess(commandlist):
sys.stderr = old_stderr
return (returncode, mystdout.getvalue(), mystderr.getvalue())
+def run_test_inprocess(testdir):
+ old_stdout = sys.stdout
+ sys.stdout = mystdout = StringIO()
+ old_stderr = sys.stderr
+ sys.stderr = mystderr = StringIO()
+ old_cwd = os.getcwd()
+ os.chdir(testdir)
+ returncode = meson_test.run(['meson-private/meson_test_setup.dat'])
+ sys.stdout = old_stdout
+ sys.stderr = old_stderr
+ os.chdir(old_cwd)
+ return (returncode, mystdout.getvalue(), mystderr.getvalue())
+
+
def run_test(testdir, should_succeed):
global compile_commands
shutil.rmtree(test_build_dir)
@@ -167,7 +181,7 @@ def run_test(testdir, should_succeed):
gen_start = time.time()
gen_command = [meson_command, '--prefix', '/usr', '--libdir', 'lib', testdir, test_build_dir]\
+ unity_flags + backend_flags
- (returncode, stdo, stde) = run_test_inprocess(gen_command)
+ (returncode, stdo, stde) = run_configure_inprocess(gen_command)
gen_time = time.time() - gen_start
if not should_succeed:
if returncode != 0:
@@ -190,13 +204,14 @@ def run_test(testdir, should_succeed):
if pc.returncode != 0:
return TestResult('Compiling source code failed.', stdo, stde, gen_time, build_time)
test_start = time.time()
- pt = subprocess.Popen(test_commands, cwd=test_build_dir,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- (o, e) = pt.communicate()
+ # Note that we don't test that running e.g. 'ninja test' actually
+ # works. One hopes that this is a common enough happening that
+ # it is picked up immediately on development.
+ (returncode, tstdo, tstde) = run_test_inprocess(test_build_dir)
test_time = time.time() - test_start
- stdo += o.decode('utf-8')
- stde += e.decode('utf-8')
- if pt.returncode != 0:
+ stdo += tstdo
+ stde += tstde
+ if returncode != 0:
return TestResult('Running unit tests failed.', stdo, stde, gen_time, build_time, test_time)
if len(install_commands) == 0:
print("Skipping install test")