summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-08-14 21:26:41 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-08-14 21:26:41 -0400
commitf256c9003a03f483c311de1254e9aa6e04075267 (patch)
tree9bc8facc7c11b544245a6eca4e5d85a070ae08da
parent18ea186360df8daed00ff446db719d0c714c025f (diff)
downloadpython-coveragepy-git-f256c9003a03f483c311de1254e9aa6e04075267.tar.gz
Clean ups from pr 66
-rw-r--r--CHANGES.txt5
-rw-r--r--coverage/pickle2json.py23
-rw-r--r--tests/test_pickle2json.py22
3 files changed, 33 insertions, 17 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index d1e4a43a..818991d3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -12,7 +12,12 @@ Latest
- 4.0b1 broke --append creating new data files. This is now fixed, closing
`issue 392`_.
+- A new conversion utility has been added: ``python -m coverage.pickle2json``
+ will convert v3.x pickle data files to v4.x JSON data files. Thanks,
+ Alexander Todorov. Closes `issue 395`_.
+
.. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file
+.. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for
Version 4.0b1 --- 2 August 2015
diff --git a/coverage/pickle2json.py b/coverage/pickle2json.py
index 4a2e941a..3d7fc6aa 100644
--- a/coverage/pickle2json.py
+++ b/coverage/pickle2json.py
@@ -6,19 +6,22 @@
from coverage.backward import pickle
from coverage.data import CoverageData
-def pickle_read_raw_data(cls, file_obj):
+
+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()
- inf = open(infile, 'rb')
- covdata.read(inf)
- inf.close()
+ with open(infile, 'rb') as inf:
+ covdata.read(inf)
covdata.write_file(outfile)
finally:
@@ -30,10 +33,14 @@ if __name__ == "__main__":
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")
+ 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()
diff --git a/tests/test_pickle2json.py b/tests/test_pickle2json.py
index 06dc4c2e..3414a874 100644
--- a/tests/test_pickle2json.py
+++ b/tests/test_pickle2json.py
@@ -8,13 +8,20 @@ from coverage.data import CoverageData
from coverage.pickle2json import pickle2json
from tests.coveragetest import CoverageTest
-from tests.test_data import *
+from tests.test_data import DataTestHelpers
+from tests.test_data import (
+ LINES_1, SUMMARY_1, MEASURED_FILES_1, A_PY_LINES_1, ARCS_3, SUMMARY_3,
+ MEASURED_FILES_3, X_PY_LINES_3, X_PY_ARCS_3, Y_PY_LINES_3, Y_PY_ARCS_3,
+)
+
class Pickle2JsonTestInTempDir(DataTestHelpers, CoverageTest):
- """ Tests pickle2json """
+ """Tests pickle2json.py."""
+
+ no_files_in_temp_dir = True
def write_pickled_file(self, covdata, filename):
- """ write coverage data as pickled `filename` """
+ """Write coverage data as pickled `filename`."""
# Create the file data.
file_data = {}
@@ -24,14 +31,11 @@ class Pickle2JsonTestInTempDir(DataTestHelpers, CoverageTest):
file_data['lines'] = dict((f, list(lmap)) for f, lmap in iitems(covdata._lines))
# Write the pickle to the file.
- file_obj = open(filename, 'wb')
- try:
+ with open(filename, 'wb') as file_obj:
pickle.dump(file_data, file_obj, 2)
- finally:
- file_obj.close()
def test_read_write_lines_pickle(self):
- """ test the old pickle format """
+ # Test the old pickle format.
covdata1 = CoverageData()
covdata1.set_lines(LINES_1)
self.write_pickled_file(covdata1, "lines.pkl")
@@ -46,7 +50,7 @@ class Pickle2JsonTestInTempDir(DataTestHelpers, CoverageTest):
self.assertEqual(covdata2.run_infos(), [])
def test_read_write_arcs_pickle(self):
- """ test the old pickle format """
+ # Test the old pickle format.
covdata1 = CoverageData()
covdata1.set_arcs(ARCS_3)
self.write_pickled_file(covdata1, "arcs.pkl")