run-tests: wrap failures in an XUnit 'failure' element
This is closer to what most XUnit consumers can understand.
--- a/tests/run-tests.py Wed Jun 07 10:44:11 2017 +0100
+++ b/tests/run-tests.py Wed Jun 07 15:47:06 2017 -0700
@@ -2024,6 +2024,7 @@
@staticmethod
def _writexunit(result, outf):
+ # See http://llg.cubic.org/docs/junit/ for a reference.
timesd = dict((t[0], t[3]) for t in result.times)
doc = minidom.Document()
s = doc.createElement('testsuite')
@@ -2052,7 +2053,13 @@
# fail if string isn't ASCII.
err = cdatasafe(err).decode('utf-8', 'replace')
cd = doc.createCDATASection(err)
- t.appendChild(cd)
+ # Use 'failure' here instead of 'error' to match errors = 0,
+ # failures = len(result.failures) in the testsuite element.
+ failelem = doc.createElement('failure')
+ failelem.setAttribute('message', 'output changed')
+ failelem.setAttribute('type', 'output-mismatch')
+ failelem.appendChild(cd)
+ t.appendChild(failelem)
s.appendChild(t)
outf.write(doc.toprettyxml(indent=' ', encoding='utf-8'))
--- a/tests/test-run-tests.t Wed Jun 07 10:44:11 2017 +0100
+++ b/tests/test-run-tests.t Wed Jun 07 15:47:06 2017 -0700
@@ -200,14 +200,17 @@
<testsuite errors="0" failures="2" name="run-tests" skipped="0" tests="3">
<testcase name="test-success.t" time="*"/> (glob)
<testcase name="test-failure-unicode.t" time="*"> (glob)
+ <failure message="output changed" type="output-mismatch">
<![CDATA[--- $TESTTMP/test-failure-unicode.t
+++ $TESTTMP/test-failure-unicode.t.err
@@ -1,2 +1,2 @@
$ echo babar\xce\xb1 (esc)
- l\xce\xb5\xce\xb5t (esc)
+ babar\xce\xb1 (esc)
- ]]> </testcase>
+ ]]> </failure>
+ </testcase>
<testcase name="test-failure.t" time="*"> (glob)
+ <failure message="output changed" type="output-mismatch">
<![CDATA[--- $TESTTMP/test-failure.t
+++ $TESTTMP/test-failure.t.err
@@ -1,5 +1,5 @@
@@ -217,7 +220,8 @@
This is a noop statement so that
this test is still more bytes than success.
pad pad pad pad............................................................
- ]]> </testcase>
+ ]]> </failure>
+ </testcase>
</testsuite>
$ cat .testtimes