# 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_unused, file_obj): """Replacement for CoverageData._read_raw_data.""" return pickle.load(file_obj) def pickle2json(infile, outfile): """Convert a coverage.py 3.x pickle data file to a 4.x JSON data file.""" try: old_read_raw_data = CoverageData._read_raw_data CoverageData._read_raw_data = pickle_read_raw_data covdata = CoverageData() with open(infile, 'rb') as inf: covdata.read_fileobj(inf) 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)