run-tests: wrap failures in an XUnit 'failure' element
authorSiddharth Agarwal <sid0@fb.com>
Wed, 07 Jun 2017 15:47:06 -0700
changeset 32714 ef8d24539612
parent 32713 28240b75e880
child 32715 a4d0e816a672
run-tests: wrap failures in an XUnit 'failure' element This is closer to what most XUnit consumers can understand.
tests/run-tests.py
tests/test-run-tests.t
--- 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