[LIT] Move xunit tests tests into their own location, and and add failures
authorChris Matthews <cmatthews5@apple.com>
Thu, 10 May 2018 22:51:28 +0000 (22:51 +0000)
committerChris Matthews <cmatthews5@apple.com>
Thu, 10 May 2018 22:51:28 +0000 (22:51 +0000)
Failures will increase coverage.

llvm-svn: 332056

llvm/utils/lit/tests/Inputs/xunit-output/bad&name.ini [moved from llvm/utils/lit/tests/Inputs/test-data/bad&name.ini with 61% similarity]
llvm/utils/lit/tests/Inputs/xunit-output/dummy_format.py [new file with mode: 0644]
llvm/utils/lit/tests/Inputs/xunit-output/lit.cfg [new file with mode: 0644]
llvm/utils/lit/tests/test-output.py
llvm/utils/lit/tests/xunit-output.py

diff --git a/llvm/utils/lit/tests/Inputs/xunit-output/dummy_format.py b/llvm/utils/lit/tests/Inputs/xunit-output/dummy_format.py
new file mode 100644 (file)
index 0000000..93e48ee
--- /dev/null
@@ -0,0 +1,38 @@
+import os
+try:
+    import ConfigParser
+except ImportError:
+    import configparser as ConfigParser
+
+import lit.formats
+import lit.Test
+
+class DummyFormat(lit.formats.FileBasedTest):
+    def execute(self, test, lit_config):
+        # In this dummy format, expect that each test file is actually just a
+        # .ini format dump of the results to report.
+
+        source_path = test.getSourcePath()
+
+        cfg = ConfigParser.ConfigParser()
+        cfg.read(source_path)
+
+        # Create the basic test result.
+        result_code = cfg.get('global', 'result_code')
+        result_output = cfg.get('global', 'result_output')
+        result = lit.Test.Result(getattr(lit.Test, result_code),
+                                 result_output)
+
+        # Load additional metrics.
+        for key,value_str in cfg.items('results'):
+            value = eval(value_str)
+            if isinstance(value, int):
+                metric = lit.Test.IntMetricValue(value)
+            elif isinstance(value, float):
+                metric = lit.Test.RealMetricValue(value)
+            else:
+                raise RuntimeError("unsupported result type")
+            result.addMetric(key, metric)
+
+        return result
+
diff --git a/llvm/utils/lit/tests/Inputs/xunit-output/lit.cfg b/llvm/utils/lit/tests/Inputs/xunit-output/lit.cfg
new file mode 100644 (file)
index 0000000..0191cc2
--- /dev/null
@@ -0,0 +1,10 @@
+import site
+site.addsitedir(os.path.dirname(__file__))
+import dummy_format
+
+config.name = 'test-data'
+config.suffixes = ['.ini']
+config.test_format = dummy_format.DummyFormat()
+config.test_source_root = None
+config.test_exec_root = None
+config.target_triple = None
index 2539367..a504427 100644 (file)
@@ -12,8 +12,8 @@
 # CHECK-NEXT:       "value0": 1,
 # CHECK-NEXT:       "value1": 2.3456
 # CHECK-NEXT:     }
-# CHECK:     "name": "test-data :: bad&name.ini",
-# CHECK:     "output": "& < > \""
-
-# CHECK: ]
+# CHECK-NEXT:     "name": "test-data :: metrics.ini",
+# CHECK-NEXT:     "output": "Test passed."
+# CHECK-NEXT:   }
+# CHECK-NEXT: ]
 # CHECK-NEXT: }
index 396f10e..d628429 100644 (file)
@@ -1,11 +1,13 @@
 # Check xunit output
-# RUN: %{lit} --xunit-xml-output %t.xunit.xml %{inputs}/test-data
+# RUN: %{lit} --xunit-xml-output %t.xunit.xml %{inputs}/xunit-output || true
 # RUN: FileCheck < %t.xunit.xml %s
 
 # CHECK: <?xml version="1.0" encoding="UTF-8" ?>
 # CHECK: <testsuites>
-# CHECK: <testsuite name='test-data' tests='2' failures='0'>
-# CHECK: <testcase classname='test-data.test-data' name='bad&amp;name.ini' time='{{[0-1]}}.{{[0-9]+}}'/>
-# CHECK: <testcase classname='test-data.test-data' name='metrics.ini' time='{{[0-1]}}.{{[0-9]+}}'/>
+# CHECK: <testsuite name='test-data' tests='1' failures='1'>
+# CHECK: <testcase classname='test-data.test-data' name='bad&amp;name.ini' time='{{[0-1]}}.{{[0-9]+}}'>
+# CHECK-NEXT:  <failure >
+# CHECK-NEXT:&amp; &lt; &gt; "
+# CHECK-NEXT:</failure>
 # CHECK: </testsuite>
 # CHECK: </testsuites>