def runCmpResults(Dir): TBegin = time.time() RefDir = os.path.join(Dir, SBOutputDirReferencePrefix + SBOutputDirName) NewDir = os.path.join(Dir, SBOutputDirName) # We have to go one level down the directory tree. RefList = glob.glob(RefDir + "/*") NewList = glob.glob(NewDir + "/*") # Log folders are also located in the results dir, so ignore them. RefList.remove(os.path.join(RefDir, LogFolderName)) 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 # command (Ex: one for configure and one for make). if (len(RefList) > 1): # Assume that the corresponding folders have the same names. RefList.sort() NewList.sort() # Iterate and find the differences. NumDiffs = 0 PairList = zip(RefList, NewList) for P in PairList: RefDir = P[0] NewDir = P[1] assert (RefDir != NewDir) if Verbose == 1: print " Comparing Results: %s %s" % (RefDir, NewDir) DiffsPath = os.path.join(NewDir, DiffsSummaryFileName) Opts = CmpRuns.CmpOptions(DiffsPath) # Discard everything coming out of stdout (CmpRun produces a lot of them). OLD_STDOUT = sys.stdout sys.stdout = Discarder() # Scan the results, delete empty plist files. NumDiffs = CmpRuns.cmpScanBuildResults(RefDir, NewDir, Opts, False) sys.stdout = OLD_STDOUT if (NumDiffs > 0): print "Warning: %r differences in diagnostics. See %s" % \ (NumDiffs, DiffsPath,) print "Diagnostic comparison complete (time: %.2f)." % (time.time() - TBegin) return (NumDiffs > 0)
def runCmpResults(Dir): TBegin = time.time() RefDir = os.path.join(Dir, SBOutputDirReferencePrefix + SBOutputDirName) NewDir = os.path.join(Dir, SBOutputDirName) # We have to go one level down the directory tree. RefList = glob.glob(RefDir + "/*") NewList = glob.glob(NewDir + "/*") # Log folders are also located in the results dir, so ignore them. RefList.remove(os.path.join(RefDir, LogFolderName)) 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 # command (Ex: one for configure and one for make). if (len(RefList) > 1): # Assume that the corresponding folders have the same names. RefList.sort() NewList.sort() # Iterate and find the differences. NumDiffs = 0 PairList = zip(RefList, NewList) for P in PairList: RefDir = P[0] NewDir = P[1] assert(RefDir != NewDir) if Verbose == 1: print " Comparing Results: %s %s" % (RefDir, NewDir) DiffsPath = os.path.join(NewDir, DiffsSummaryFileName) Opts = CmpRuns.CmpOptions(DiffsPath) # Discard everything coming out of stdout (CmpRun produces a lot of them). OLD_STDOUT = sys.stdout sys.stdout = Discarder() # Scan the results, delete empty plist files. NumDiffs = CmpRuns.cmpScanBuildResults(RefDir, NewDir, Opts, False) sys.stdout = OLD_STDOUT if (NumDiffs > 0) : print "Warning: %r differences in diagnostics. See %s" % \ (NumDiffs, DiffsPath,) print "Diagnostic comparison complete (time: %.2f)." % (time.time()-TBegin) return (NumDiffs > 0)