File: generate_coverage_report.py

package info (click to toggle)
indigo 1.4.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 48,936 kB
  • sloc: ansic: 332,816; cpp: 169,470; python: 20,033; java: 13,701; cs: 9,979; asm: 8,475; sql: 6,743; xml: 6,354; javascript: 1,245; sh: 555; php: 506; makefile: 54
file content (74 lines) | stat: -rw-r--r-- 3,930 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import indigo_coverage

def generate_coverage_report(indigo, reportFile):
    indigoCoveredFunctionsList = []
    indigoNotCoveredFunctionsList = []
    # Check covered functions
    indigoFunctionsNumber = 0
    for key, value in indigo._indigoCoverageDict.items():
        indigoFunctionsNumber += 1
        if value:
            indigoCoveredFunctionsList.append((value, key))
        else:
            indigoNotCoveredFunctionsList.append(key)
    indigoCoveredFunctionsList.sort(reverse=True)
    indigoNotCoveredFunctionsList.sort()
    # Generate report for Indigo
    indigoCoveragePercent = 100.0 * float(len(indigoCoveredFunctionsList)) / float(indigoFunctionsNumber)
    reportTextStringList = list()
    reportTextStringList.append('Indigo functions coverage is about %s percents (%s functions of %s)' % (
        indigoCoveragePercent, len(indigoCoveredFunctionsList), indigoFunctionsNumber))
    reportTextStringList.append('Covered functions and number of calls:')
    maxLen = 0
    for callNumber, function in indigoCoveredFunctionsList:
        if len(function) > maxLen:
            maxLen = len(function)
    for callNumber, function in indigoCoveredFunctionsList:
        resultString = '\t%s%s: %s' % (function, ' ' * (maxLen - len(function) + 1), callNumber)
        reportTextStringList.append(resultString)
    reportTextStringList.append('Uncovered functions:')
    for function in indigoNotCoveredFunctionsList:
        reportTextStringList.append('\t%s' % function)
    # Generate report for IndigoObject
    indigoObjectCoveredFunctionsList = []
    indigoObjectNotCoveredFunctionsList = []
    indigoObjectFunctionsNumber = 0
    for key, value in indigo._indigoObjectCoverageDict.items():
        indigoObjectFunctionsNumber += 1
        if value:
            indigoObjectCoveredFunctionsList.append((value, key))
        else:
            indigoObjectNotCoveredFunctionsList.append(key)
    # Sort coverage data
    indigoObjectCoveredFunctionsByTypeDict = {}
    for type in indigo._indigoObjectCoverageByTypeDict:
        indigoObjectCoveredFunctionsByTypeDict[type] = []
        for key, value in indigo._indigoObjectCoverageByTypeDict[type].items():
            if value:
                indigoObjectCoveredFunctionsByTypeDict[type].append((value, key))
    indigoObjectCoveredFunctionsList.sort(reverse=True)
    indigoObjectNotCoveredFunctionsList.sort()
    if indigoObjectFunctionsNumber:
        indigoObjectCoveragePercent = 100.0 * float(len(indigoObjectCoveredFunctionsList)) / float(indigoObjectFunctionsNumber)
    else: 
        indigoObjectCoveragePercent = 0.0
    reportTextStringList.append('\nIndigoObject functions coverage is about %s percents (%s functions of %s)' % (indigoObjectCoveragePercent, len(indigoObjectCoveredFunctionsList), indigoObjectFunctionsNumber))
    typeList = sorted(indigoObjectCoveredFunctionsByTypeDict.keys())
    for type in sorted(indigoObjectCoveredFunctionsByTypeDict.keys()):
        reportTextStringList.append('%s (#%s) functions coverage:' % (indigo_coverage.IndigoObjectTypeDict[type], type))
        maxLen = 0
        indigoObjectCoveredFunctionsByTypeDict[type].sort(reverse=True)
        for callNumber, function in indigoObjectCoveredFunctionsByTypeDict[type]:
            if len(function) > maxLen:
                maxLen = len(function)
        for callNumber, function in indigoObjectCoveredFunctionsByTypeDict[type]:
            resultString = '\t%s%s: %s' % (function, ' ' * (maxLen - len(function) + 1), callNumber)
            reportTextStringList.append(resultString)
    reportTextStringList.append('Uncovered functions:')
    for function in indigoObjectNotCoveredFunctionsList:
        reportTextStringList.append('\t%s' % (function))
    reportTextStringList.append('Used IndigoObject types: %s' % (typeList))
    # Write full report
    f =  open(reportFile, 'wt')
    f.write('\n'.join(reportTextStringList))
    f.close()