Made run_tests.py output test results in junit xml to allow better integration with CI tools.

pull/79/head
Jussi Pakkanen 10 years ago
parent bb28b6b51c
commit fd30a81fa9
  1. 1
      .gitignore
  2. 12
      run_tests.py

1
.gitignore vendored

@ -6,6 +6,7 @@ __pycache__
/work area
/meson-test-run.txt
/meson-test-run.xml
.DS_Store
*~

@ -19,6 +19,7 @@ import os, subprocess, shutil, sys, platform, signal
import environment
import mesonlib
import argparse
import xml.etree.ElementTree as ET
from meson import backendlist
@ -237,6 +238,7 @@ def detect_tests_to_run():
def run_tests():
all_tests = detect_tests_to_run()
logfile = open('meson-test-run.txt', 'w')
junit_root = ET.Element('testsuites')
try:
os.mkdir(test_build_dir)
except OSError:
@ -250,10 +252,20 @@ def run_tests():
if len(test_cases) == 0:
print('\nNot running %s tests.\n' % name)
else:
current_suite = ET.SubElement(junit_root, 'testsuite', {'name' : name})
print('\nRunning %s tests.\n' % name)
for t in test_cases:
(msg, stdo, stde) = run_test(t, name != 'failing')
log_text_file(logfile, t, msg, stdo, stde)
current_test = ET.SubElement(current_suite, 'testcase', {'name' : os.path.split(t)[-1]})
if msg != '':
failure = ET.SubElement(current_test, 'failure')
failure.text = msg
stdoel = ET.SubElement(current_test, 'system-out')
stdoel.text = stdo
stdeel = ET.SubElement(current_test, 'system-err')
stdeel.text = stde
ET.ElementTree(element=junit_root).write('meson-test-run.xml', xml_declaration=True, encoding='UTF-8')
def check_file(fname):
linenum = 1

Loading…
Cancel
Save