[PATCH] D84235: [lit][xunit output] Don't include tests skipped due to sharding

Alexander Richardson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 22 09:56:08 PDT 2020


arichardson updated this revision to Diff 279865.
arichardson added a comment.

fix tests and remove debug output


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84235/new/

https://reviews.llvm.org/D84235

Files:
  llvm/utils/lit/lit/main.py
  llvm/utils/lit/lit/reports.py
  llvm/utils/lit/tests/xunit-output.py


Index: llvm/utils/lit/tests/xunit-output.py
===================================================================
--- llvm/utils/lit/tests/xunit-output.py
+++ llvm/utils/lit/tests/xunit-output.py
@@ -14,7 +14,7 @@
 # CHECK-NEXT:   <failure><![CDATA[& < > ]]]]><![CDATA[> &"]]></failure>
 # CHECK-NEXT: </testcase>
 # CHECK-NEXT: <testcase classname="test-data.test-data" name="excluded.ini" time="{{[0-1]\.[0-9]+}}">
-# CHECK-NEXT:   <skipped message="Test not selected (--filter, --max-tests, --run-shard)"/>
+# CHECK-NEXT:   <skipped message="Test not selected (--filter, --max-tests)"/>
 # CHECK-NEXT: </testcase>
 # CHECK-NEXT: <testcase classname="test-data.test-data" name="missing_feature.ini" time="{{[0-1]\.[0-9]+}}">
 # CHECK-NEXT:   <skipped message="Missing required feature(s): dummy_feature"/>
Index: llvm/utils/lit/lit/reports.py
===================================================================
--- llvm/utils/lit/lit/reports.py
+++ llvm/utils/lit/lit/reports.py
@@ -16,7 +16,7 @@
     def __init__(self, output_file):
         self.output_file = output_file
 
-    def write_results(self, tests, elapsed):
+    def write_results(self, tests, elapsed, shard):
         unexecuted_codes = {lit.Test.EXCLUDED, lit.Test.SKIPPED}
         tests = [t for t in tests if t.result.code not in unexecuted_codes]
         # Construct the data we will write.
@@ -86,7 +86,7 @@
         self.skipped_codes = {lit.Test.EXCLUDED,
                               lit.Test.SKIPPED, lit.Test.UNSUPPORTED}
 
-    def write_results(self, tests, elapsed):
+    def write_results(self, tests, elapsed, shard):
         tests.sort(key=by_suite_and_test_path)
         tests_by_suite = itertools.groupby(tests, lambda t: t.suite)
 
@@ -94,10 +94,14 @@
             file.write('<?xml version="1.0" encoding="UTF-8"?>\n')
             file.write('<testsuites time="{time:.2f}">\n'.format(time=elapsed))
             for suite, test_iter in tests_by_suite:
-                self._write_testsuite(file, suite, list(test_iter))
+                self._write_testsuite(file, suite, list(test_iter), shard)
             file.write('</testsuites>\n')
 
-    def _write_testsuite(self, file, suite, tests):
+    def _write_testsuite(self, file, suite, tests, shard):
+        # When running multiple shards, don't include skipped tests in the
+        # xunit output since merging the files will result in duplicates.
+        if shard is not None:
+            tests = [t for t in tests if t.result.code != lit.Test.EXCLUDED]
         skipped = sum(1 for t in tests if t.result.code in self.skipped_codes)
         failures = sum(1 for t in tests if t.isFailure())
 
@@ -144,7 +148,7 @@
     def _get_skip_reason(self, test):
         code = test.result.code
         if code == lit.Test.EXCLUDED:
-            return 'Test not selected (--filter, --max-tests, --run-shard)'
+            return 'Test not selected (--filter, --max-tests)'
         if code == lit.Test.SKIPPED:
             return 'User interrupt'
 
Index: llvm/utils/lit/lit/main.py
===================================================================
--- llvm/utils/lit/lit/main.py
+++ llvm/utils/lit/lit/main.py
@@ -102,7 +102,7 @@
     print_results(discovered_tests, elapsed, opts)
 
     for report in opts.reports:
-        report.write_results(discovered_tests, elapsed)
+        report.write_results(discovered_tests, elapsed, opts.runShard)
 
     if lit_config.numErrors:
         sys.stderr.write('\n%d error(s) in tests\n' % lit_config.numErrors)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84235.279865.patch
Type: text/x-patch
Size: 3508 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200722/f50d43b6/attachment.bin>


More information about the llvm-commits mailing list