Ejemplo n.º 1
0
def findTestExecutable(fileName, hints=[]):
    '''
Given a file name, look in the canonical places for a corresponding LongBow test file.
    '''
    directoryName = os.path.dirname(fileName)
    if len(directoryName) == 0:
        directoryName = "."

    file = Language_C.Module(fileName)

    possibleTestFiles = list()
    for hint in hints:
        possibleTestFiles.append(hint + "/" + file.getExecutableName())
        possibleTestFiles.append(hint + "/" + file.getTestExecutableName())
    possibleTestFiles.append(directoryName + "/" + file.getExecutableName())
    possibleTestFiles.append(directoryName + "/" +
                             file.getTestExecutableName())
    possibleTestFiles.append(directoryName + "/test/" +
                             file.getTestExecutableName())

    result = None
    for possibleTestFile in possibleTestFiles:
        if checkTestExecutable(possibleTestFile) == True:
            result = os.path.abspath(possibleTestFile)
            break

    return result
Ejemplo n.º 2
0
def removeTestSourceFiles(gcovSummary):
    deleteThese = filter(lambda entry: Language_C.Module(entry).isTestSourceName(), gcovSummary)

    for entry in deleteThese:
        del gcovSummary[entry]

    return gcovSummary
Ejemplo n.º 3
0
def computeSummary(filesAndTests, newGCovResults):
    '''
    First, for each target file named in the gcov results, find the corresponding testedFile and report the maximum coverage.

    If the target file is not in any of the testedFiles

    { targetFileName : { "coverage": percent, "veracity" : "direct" / "indirect" } }
    '''

    newGCovResults = filter(lambda entry: entry != None, newGCovResults)

    result = dict()
    for entry in newGCovResults:
        for testExecutableName in entry:
            testExecutableCSourceName = Language_C.Module(
                testExecutableName).getCSourceName()

            for testedFileName in entry[testExecutableName]["testedFiles"]:
                testedFile = entry[testExecutableName]["testedFiles"][
                    testedFileName]

                if Language_C.Module(testedFileName).getTestExecutableName(
                ) == os.path.basename(testExecutableName):
                    result[testedFileName] = testedFile
                    result[testedFileName]["direct"] = "direct"
                elif testedFileName in result:
                    bestCoverage = selectGreaterCoverage(
                        testedFile, result[testedFileName])
                    if result[testedFileName] != bestCoverage:
                        result[testedFileName] = bestCoverage
                        result[testedFileName]["direct"] = "indirect"
                else:
                    result[testedFileName] = testedFile
                    result[testedFileName]["direct"] = "indirect"

    return result