[llvm] 6b02c53 - [lit][unit] make sure to include failed shard in test summary report

Yuanfang Chen via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 15 15:44:09 PDT 2022


Author: Yuanfang Chen
Date: 2022-07-15T15:43:33-07:00
New Revision: 6b02c53936b9e77fee47eae038bbf3927b93325b

URL: https://github.com/llvm/llvm-project/commit/6b02c53936b9e77fee47eae038bbf3927b93325b
DIFF: https://github.com/llvm/llvm-project/commit/6b02c53936b9e77fee47eae038bbf3927b93325b.diff

LOG: [lit][unit] make sure to include failed shard in test summary report

For sanitizer only failures, the tests all pass but still need to
put the shard in failed test summary.

Added: 
    

Modified: 
    llvm/utils/lit/lit/formats/googletest.py
    llvm/utils/lit/lit/main.py

Removed: 
    


################################################################################
diff  --git a/llvm/utils/lit/lit/formats/googletest.py b/llvm/utils/lit/lit/formats/googletest.py
index d77547b73651..2383afcbddd2 100644
--- a/llvm/utils/lit/lit/formats/googletest.py
+++ b/llvm/utils/lit/lit/formats/googletest.py
@@ -226,20 +226,17 @@ def remove_gtest(tests):
         discovered_tests = remove_gtest(discovered_tests)
         gtests = [t for t in selected_tests if t.gtest_json_file]
         selected_tests = remove_gtest(selected_tests)
-        has_failure = False
         for test in gtests:
-            # In case gtest has bugs such that no JSON file was emitted. Or, a selected
-            # test is not found.
+            # In case gtest has bugs such that no JSON file was emitted.
             if not os.path.exists(test.gtest_json_file):
                 selected_tests.append(test)
                 discovered_tests.append(test)
                 continue
 
-            if test.isFailure():
-                has_failure = True
-
             start_time = test.result.start or 0.0
 
+            has_failure_in_shard = False
+
             # Load json file to retrieve results.
             with open(test.gtest_json_file, encoding='utf-8') as f:
                 testsuites = json.load(f)['testsuites']
@@ -262,6 +259,7 @@ def remove_gtest(tests):
                         if testinfo['result'] == 'SKIPPED':
                             returnCode = lit.Test.SKIPPED
                         elif 'failures' in testinfo:
+                            has_failure_in_shard = True
                             returnCode = lit.Test.FAIL
                             output = header
                             for fail in testinfo['failures']:
@@ -283,4 +281,8 @@ def remove_gtest(tests):
                         discovered_tests.append(subtest)
             os.remove(test.gtest_json_file)
 
-        return selected_tests, discovered_tests, has_failure
+            if not has_failure_in_shard and test.isFailure():
+                selected_tests.append(test)
+                discovered_tests.append(test)
+
+        return selected_tests, discovered_tests

diff  --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py
index 67d9efa11fb1..27bcef1b1d46 100755
--- a/llvm/utils/lit/lit/main.py
+++ b/llvm/utils/lit/lit/main.py
@@ -108,7 +108,7 @@ def main(builtin_params={}):
 
     record_test_times(selected_tests, lit_config)
 
-    selected_tests, discovered_tests, has_failure = GoogleTest.post_process_shard_results(
+    selected_tests, discovered_tests = GoogleTest.post_process_shard_results(
         selected_tests, discovered_tests)
 
     if opts.time_tests:
@@ -127,7 +127,7 @@ def main(builtin_params={}):
     if lit_config.numWarnings:
         sys.stderr.write('\n%d warning(s) in tests\n' % lit_config.numWarnings)
 
-    has_failure = has_failure or any(t.isFailure() for t in discovered_tests)
+    has_failure = any(t.isFailure() for t in discovered_tests)
     if has_failure:
         if opts.ignoreFail:
             sys.stderr.write("\nExiting with status 0 instead of 1 because "


        


More information about the llvm-commits mailing list