diff options
author | Anna Zaks <ganna@apple.com> | 2012-02-03 06:35:23 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-02-03 06:35:23 +0000 |
commit | 09e9cf0927641ee64bb0a354b0a6acca604361cc (patch) | |
tree | 6e11e6f96cb11914c10917b167c506ba178a207a /utils | |
parent | 71fd6cc843719cab528a5df0899ad3d15cb9297f (diff) |
[analyzer] Testing: add automated reference results reset.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149682 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/analyzer/SATestBuild.py | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/utils/analyzer/SATestBuild.py b/utils/analyzer/SATestBuild.py index e76bb217d5..c2649a322f 100755 --- a/utils/analyzer/SATestBuild.py +++ b/utils/analyzer/SATestBuild.py @@ -368,10 +368,36 @@ def runCmpResults(Dir): print "Diagnostic comparison complete (time: %.2f)." % (time.time()-TBegin) return (NumDiffs > 0) -def testProject(ID, InIsReferenceBuild, IsScanBuild , Dir=None): - global IsReferenceBuild - IsReferenceBuild = InIsReferenceBuild +def updateSVN(Mode, ProjectsMap): + try: + ProjectsMap.seek(0) + for I in csv.reader(ProjectsMap): + ProjName = I[0] + Path = os.path.join(ProjName, getSBOutputDirName()) + + if Mode == "delete": + Command = "svn delete %s" % (Path,) + else: + Command = "svn add %s" % (Path,) + if Verbose == 1: + print " Executing: %s" % (Command,) + check_call(Command, shell=True) + + if Mode == "delete": + CommitCommand = "svn commit -m \"[analyzer tests] Remove " \ + "reference results.\"" + else: + CommitCommand = "svn commit -m \"[analyzer tests] Add new " \ + "reference results.\"" + if Verbose == 1: + print " Executing: %s" % (CommitCommand,) + check_call(CommitCommand, shell=True) + except: + print "Error: SVN update failed." + sys.exit(-1) + +def testProject(ID, IsScanBuild, Dir=None): print " \n\n--- Building project %s" % (ID,) TBegin = time.time() @@ -382,8 +408,9 @@ def testProject(ID, InIsReferenceBuild, IsScanBuild , Dir=None): print " Build directory: %s." % (Dir,) # Set the build results directory. - SBOutputDir = os.path.join(Dir, getSBOutputDirName()) - + RelOutputDir = getSBOutputDirName() + SBOutputDir = os.path.join(Dir, RelOutputDir) + buildProject(Dir, SBOutputDir, IsScanBuild) checkBuild(SBOutputDir) @@ -394,19 +421,36 @@ def testProject(ID, InIsReferenceBuild, IsScanBuild , Dir=None): print "Completed tests for project %s (time: %.2f)." % \ (ID, (time.time()-TBegin)) -def testAll(InIsReferenceBuild = False): - +def testAll(InIsReferenceBuild = False, UpdateSVN = False): + global IsReferenceBuild + IsReferenceBuild = InIsReferenceBuild + PMapFile = open(getProjectMapPath(), "rb") - try: - PMapReader = csv.reader(PMapFile) - for I in PMapReader: + try: + # Validate the input. + for I in csv.reader(PMapFile): if (len(I) != 2) : print "Error: Rows in the ProjectMapFile should have 3 entries." raise Exception() if (not ((I[1] == "1") | (I[1] == "0"))): print "Error: Second entry in the ProjectMapFile should be 0 or 1." raise Exception() - testProject(I[0], InIsReferenceBuild, int(I[1])) + + # When we are regenerating the reference results, we might need to + # update svn. Remove reference results from SVN. + if UpdateSVN == True: + assert(InIsReferenceBuild == True); + updateSVN("delete", PMapFile); + + # Test the projects. + PMapFile.seek(0) + for I in csv.reader(PMapFile): + testProject(I[0], int(I[1])) + + # Add reference results to SVN. + if UpdateSVN == True: + updateSVN("add", PMapFile); + except: print "Error occurred. Premature termination." raise @@ -414,4 +458,18 @@ def testAll(InIsReferenceBuild = False): PMapFile.close() if __name__ == '__main__': - testAll() + IsReference = False + UpdateSVN = False + if len(sys.argv) >= 2: + if sys.argv[1] == "-r": + IsReference = True + elif sys.argv[1] == "-rs": + IsReference = True + UpdateSVN = True + else: + print >> sys.stderr, 'Usage: ', sys.argv[0],\ + '[-r|-rs]' \ + 'Use -r to regenerate reference output' \ + 'Use -rs to regenerate reference output and update svn' + + testAll(IsReference, UpdateSVN) |