Patchwork [2,of,2] run-tests: add information about skipped tests to XUnit output

login
register
mail settings
Submitter Siddharth Agarwal
Date June 7, 2017, 10:47 p.m.
Message ID <8e05986478080f8eefd5.1496875638@devvm31800.prn1.facebook.com>
Download mbox | patch
Permalink /patch/21237/
State Accepted
Headers show

Comments

Siddharth Agarwal - June 7, 2017, 10:47 p.m.
# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1496875626 25200
#      Wed Jun 07 15:47:06 2017 -0700
# Node ID 8e05986478080f8eefd5f645166020d7802175e8
# Parent  0bdfd2f0e15b0d4a20ea4d288e0b4e04f37f25b4
run-tests: add information about skipped tests to XUnit output

The XUnit spec supports skipped tests.

Patch

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -2061,6 +2061,17 @@  class TextTestRunner(unittest.TextTestRu
             failelem.appendChild(cd)
             t.appendChild(failelem)
             s.appendChild(t)
+        for tc, message in result.skipped:
+            # According to the schema, 'skipped' has no attributes. So store
+            # the skip message as a text node instead.
+            t = doc.createElement('testcase')
+            t.setAttribute('name', tc.name)
+            message = cdatasafe(message).decode('utf-8', 'replace')
+            cd = doc.createCDATASection(message)
+            skipelem = doc.createElement('skipped')
+            skipelem.appendChild(cd)
+            t.appendChild(skipelem)
+            s.appendChild(t)
         outf.write(doc.toprettyxml(indent='  ', encoding='utf-8'))
 
     @staticmethod
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -676,6 +676,10 @@  Skips with xml
   <?xml version="1.0" encoding="utf-8"?>
   <testsuite errors="0" failures="0" name="run-tests" skipped="2" tests="2">
     <testcase name="test-success.t" time="*"/> (glob)
+    <testcase name="test-skip.t">
+      <skipped>
+  <![CDATA[missing feature: nail clipper]]>    </skipped>
+    </testcase>
   </testsuite>
 
 Missing skips or blacklisted skips don't count as executed: