diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-20 21:28:37 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-20 21:28:37 -0400 |
commit | 3fb754d683d4ba71b04952c27feaafcdae7225e1 (patch) | |
tree | 9f3e3e44a868442213a415d2fc1d7647feef18a6 | |
parent | eab4dbcf6337ce288467305efae0c86b049bab4b (diff) | |
download | python-coveragepy-git-3fb754d683d4ba71b04952c27feaafcdae7225e1.tar.gz |
CoverageData.read and .write are now inverses of each other.
-rw-r--r-- | CHANGES.txt | 3 | ||||
-rw-r--r-- | coverage/data.py | 13 | ||||
-rw-r--r-- | tests/test_data.py | 13 |
3 files changed, 19 insertions, 10 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 47d7bebf..4f7c0fc8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -18,6 +18,9 @@ Latest message. This is now fixed, and changed some method names in the CoverageData interface. Fixes `issue 399`_. +- `CoverageData.read` and `CoverageData.write` are now properly inverses of + each other. + - When using ``report --skip-covered``, a message will now be included in the report output indicating how many files were skipped, and if all files are skipped, coverage.py won't accidentally scold you for having no data to diff --git a/coverage/data.py b/coverage/data.py index 974764b0..c319e65a 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -297,19 +297,14 @@ class CoverageData(object): @classmethod def _open_for_reading(cls, filename): """Open a file appropriately for reading data.""" - f = open(filename, "r") - try: - go_away = f.read(len(cls._GO_AWAY)) - if go_away != cls._GO_AWAY: - raise CoverageException("Doesn't seem to be a coverage.py data file") - except Exception: - f.close() - raise - return f + return open(filename, "r") @classmethod def _read_raw_data(cls, file_obj): """Read the raw data from a file object.""" + go_away = file_obj.read(len(cls._GO_AWAY)) + if go_away != cls._GO_AWAY: + raise CoverageException("Doesn't seem to be a coverage.py data file") return json.load(file_obj) @classmethod diff --git a/tests/test_data.py b/tests/test_data.py index 653a401a..ea6b0df0 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -11,7 +11,7 @@ import re import mock -from coverage.backward import iitems +from coverage.backward import iitems, StringIO from coverage.data import CoverageData, CoverageDataFiles, debug_main from coverage.files import PathAliases, canonical_filename from coverage.misc import CoverageException @@ -393,6 +393,17 @@ class CoverageDataTest(DataTestHelpers, CoverageTest): covdata.touch_file("abc.py") self.assertTrue(covdata.has_arcs()) + def test_read_and_write_are_opposites(self): + covdata1 = CoverageData() + covdata1.add_arcs(ARCS_3) + stringio = StringIO() + covdata1.write(stringio) + + stringio.seek(0) + covdata2 = CoverageData() + covdata2.read(stringio) + self.assert_arcs3_data(covdata2) + class CoverageDataTestInTempDir(DataTestHelpers, CoverageTest): """Tests of CoverageData that need a temporary directory to make files.""" |