summaryrefslogtreecommitdiff
path: root/coverage/pickle2json.py
blob: 4a2e941ac30fb18883ff151b67e50c038d5c29ba (plain)
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
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt

"""Convert pickle to JSON for coverage.py."""

from coverage.backward import pickle
from coverage.data import CoverageData

def pickle_read_raw_data(cls, file_obj):
    return pickle.load(file_obj)

def pickle2json(infile, outfile):
    try:
        old_read_raw_data = CoverageData._read_raw_data
        CoverageData._read_raw_data = pickle_read_raw_data

        covdata = CoverageData()

        inf = open(infile, 'rb')
        covdata.read(inf)
        inf.close()

        covdata.write_file(outfile)
    finally:
        CoverageData._read_raw_data = old_read_raw_data


if __name__ == "__main__":
    from optparse import OptionParser

    parser = OptionParser(usage="usage: %s [options]" % __file__)
    parser.description = "Convert .coverage files from pickle to JSON format"
    parser.add_option("-i", "--input-file", action="store", default=".coverage",
                        help="Name of input file. Default .coverage")
    parser.add_option("-o", "--output-file", action="store", default=".coverage",
                        help="Name of output file. Default .coverage")

    (options, args) = parser.parse_args()

    pickle2json(options.input_file, options.output_file)