[PATCH] D45567: [lit] Fix a bug where UNRESOLVED tests were not handled in the XUnit XML printer.

Dan Liew via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 12 06:21:35 PDT 2018


delcypher created this revision.
delcypher added reviewers: kubamracek, george.karpenkov, ddunbar, cmatthews, theraven.

[lit] Fix a bug where UNRESOLVED tests were not handled in the XUnit
XML printer.

A test has been added that tries to comprehensively test emitting
XUnit XML output for shell tests.


Repository:
  rL LLVM

https://reviews.llvm.org/D45567

Files:
  utils/lit/lit/Test.py
  utils/lit/tests/shtest-xunit-output.py


Index: utils/lit/tests/shtest-xunit-output.py
===================================================================
--- /dev/null
+++ utils/lit/tests/shtest-xunit-output.py
@@ -0,0 +1,78 @@
+# RUN: not %{lit} -j 1 -v %{inputs}/shtest-format - --xunit-xml-output %t.xml
+# RUN: FileCheck < %t.xml %s
+
+# CHECK: <?xml version="1.0" encoding="UTF-8" ?>
+# CHECK-NEXT: <testsuites>
+# CHECK-NEXT: <testsuite name='shtest-format' tests='23' failures='7'>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='argv0.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.external_shell' name='fail.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+
+# CHECK: <testcase classname='shtest-format.external_shell' name='fail_with_bad_encoding.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+# CHECK: <testcase classname='shtest-format.external_shell' name='pass.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='fail.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='no-test-line.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='pass.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-any-missing.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-any-present.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-missing.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-present.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-star.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='requires-triple.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='unsupported-expr-false.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='unsupported-expr-true.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='unsupported-star.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+# CHECK: <testcase classname='shtest-format.unsupported_dir' name='some-test.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xfail-expr-false.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xfail-expr-true.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xfail-feature.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xfail-target.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xfail.txt' time='{{[0-9]+\.[0-9]+}}'/>
+
+# CHECK: <testcase classname='shtest-format.shtest-format' name='xpass.txt' time='{{[0-9]+\.[0-9]+}}'>
+# CHECK-NEXT: <failure{{[ ]*}}>
+# CHECK: </failure>
+# CHECK-NEXT: </testcase>
+
+# CHECK: </testsuite>
+# CHECK-NEXT: </testsuites>
Index: utils/lit/lit/Test.py
===================================================================
--- utils/lit/lit/Test.py
+++ utils/lit/lit/Test.py
@@ -373,7 +373,8 @@
 
         xml = "<testcase classname='" + class_name + "' name='" + \
             test_name + "'"
-        xml += " time='%.2f'" % (self.result.elapsed,)
+        xml += " time='{:.2f}'".format(
+            self.result.elapsed if self.result.elapsed is not None else 0.0)
         if self.result.code.isFailure:
             xml += ">\n\t<failure >\n" + escape(self.result.output)
             xml += "\n\t</failure>\n</testcase>"


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45567.142162.patch
Type: text/x-patch
Size: 4310 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180412/48d08819/attachment.bin>


More information about the llvm-commits mailing list