[PATCH] D38589: [Analyzer] Run tests until the end, do not stop at the first failure

George Karpenkov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 5 10:33:55 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL314992: [Analyzer Tests] Run static analyzer integration tests until the end, (authored by george.karpenkov).

Changed prior to commit:
  https://reviews.llvm.org/D38589?vs=117847&id=117848#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D38589

Files:
  cfe/trunk/utils/analyzer/SATestBuild.py


Index: cfe/trunk/utils/analyzer/SATestBuild.py
===================================================================
--- cfe/trunk/utils/analyzer/SATestBuild.py
+++ cfe/trunk/utils/analyzer/SATestBuild.py
@@ -570,7 +570,11 @@
       0 - success if there are no crashes or analyzer failure.
       1 - success if there are no difference in the number of reported bugs.
       2 - success if all the bug reports are identical.
+
+    :return success: Whether tests pass according to the Strictness
+    criteria.
     """
+    TestsPassed = True
     TBegin = time.time()
 
     RefDir = os.path.join(Dir, SBOutputDirReferencePrefix + SBOutputDirName)
@@ -586,8 +590,6 @@
         RefList.remove(RefLogDir)
     NewList.remove(os.path.join(NewDir, LogFolderName))
 
-    if len(RefList) == 0 or len(NewList) == 0:
-        return False
     assert(len(RefList) == len(NewList))
 
     # There might be more then one folder underneath - one per each scan-build
@@ -624,15 +626,15 @@
                   (NumDiffs, DiffsPath,)
         if Strictness >= 2 and NumDiffs > 0:
             print "Error: Diffs found in strict mode (2)."
-            sys.exit(-1)
+            TestsPassed = False
         elif Strictness >= 1 and ReportsInRef != ReportsInNew:
             print "Error: The number of results are different in "\
                   "strict mode (1)."
-            sys.exit(-1)
+            TestsPassed = False
 
     print "Diagnostic comparison complete (time: %.2f)." % (
           time.time() - TBegin)
-    return (NumDiffs > 0)
+    return TestsPassed
 
 
 def cleanupReferenceResults(SBOutputDir):
@@ -686,6 +688,11 @@
 
 
 def testProject(ID, ProjectBuildMode, IsReferenceBuild=False, Strictness=0):
+    """
+    Test a given project.
+    :return TestsPassed: Whether tests have passed according
+    to the :param Strictness: criteria.
+    """
     print " \n\n--- Building project %s" % (ID,)
 
     TBegin = time.time()
@@ -704,11 +711,13 @@
 
     if IsReferenceBuild:
         cleanupReferenceResults(SBOutputDir)
+        TestsPassed = True
     else:
-        runCmpResults(Dir, Strictness)
+        TestsPassed = runCmpResults(Dir, Strictness)
 
     print "Completed tests for project %s (time: %.2f)." % \
           (ID, (time.time() - TBegin))
+    return TestsPassed
 
 
 def isCommentCSVLine(Entries):
@@ -749,6 +758,7 @@
 
 
 def testAll(IsReferenceBuild=False, UpdateSVN=False, Strictness=0):
+    TestsPassed = True
     with projectFileHandler() as PMapFile:
         validateProjectFile(PMapFile)
 
@@ -760,7 +770,7 @@
 
         # Test the projects.
         for (ProjName, ProjBuildMode) in iterateOverProjects(PMapFile):
-            testProject(
+            TestsPassed &= testProject(
                 ProjName, int(ProjBuildMode), IsReferenceBuild, Strictness)
 
         # Re-add reference results to SVN.
@@ -793,4 +803,6 @@
         IsReference = True
         UpdateSVN = True
 
-    testAll(IsReference, UpdateSVN, Strictness)
+    TestsPassed = testAll(IsReference, UpdateSVN, Strictness)
+    if not TestsPassed:
+        sys.exit(-1)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38589.117848.patch
Type: text/x-patch
Size: 3084 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20171005/4476d7d7/attachment-0001.bin>


More information about the cfe-commits mailing list