Store and print test logs of executed projects.
@@ -283,14 +283,19 @@ def run_test_inprocess(testdir):
sys.stderr = mystderr = StringIO()
old_cwd = os.getcwd()
os.chdir(testdir)
+ test_log_fname = 'meson-logs/testlog.txt'
try:
returncode_test = mesontest.run(['--no-rebuild'])
+ if os.path.exists(test_log_fname):
+ test_log = open(test_log_fname, errors='ignore').read()
+ else:
+ test_log = ''
returncode_benchmark = mesontest.run(['--no-rebuild', '--benchmark', '--logbase', 'benchmarklog'])
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr
os.chdir(old_cwd)
- return max(returncode_test, returncode_benchmark), mystdout.getvalue(), mystderr.getvalue()
+ return max(returncode_test, returncode_benchmark), mystdout.getvalue(), mystderr.getvalue(), test_log
def parse_test_args(testdir):
args = []
@@ -357,10 +362,11 @@ def _run_test(testdir, test_build_dir, install_dir, extra_args, compiler, backen
os.utime(os.path.join(testdir, 'meson.build'))
test_start = time.time()
# Test in-process
- (returncode, tstdo, tstde) = run_test_inprocess(test_build_dir)
+ (returncode, tstdo, tstde, test_log) = run_test_inprocess(test_build_dir)
test_time = time.time() - test_start
stdo += tstdo
stde += tstde
+ mesonlog += test_log
if should_fail == 'test':
if returncode != 0:
return TestResult('', BuildStep.test, stdo, stde, mesonlog, gen_time)
