diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-18 13:00:02 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-18 13:00:02 -0400 |
commit | 15dad3a0cd253e4c29136097494adcde6c7b9013 (patch) | |
tree | e10a761254af522575a103577780001823ee1b30 | |
parent | f2094ecb8d63d5e6365ba83fab9259904b1e90b8 (diff) | |
download | python-coveragepy-git-15dad3a0cd253e4c29136097494adcde6c7b9013.tar.gz |
Testing and clean up for data.py
-rw-r--r-- | coverage/data.py | 21 | ||||
-rw-r--r-- | test/test_data.py | 68 |
2 files changed, 77 insertions, 12 deletions
diff --git a/coverage/data.py b/coverage/data.py index 7dae25c7..19e00087 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -41,6 +41,7 @@ class CoverageData: self.suffix = suffix def _make_filename(self): + assert self.use_file if not self.filename: self.filename = os.environ.get( self.filename_env, self.filename_default) @@ -62,9 +63,12 @@ class CoverageData: self.write_file(self.filename) def erase(self): - if self.filename and os.path.exists(self.filename): - os.remove(self.filename) - + if self.use_file: + self._make_filename() + if self.filename and os.path.exists(self.filename): + os.remove(self.filename) + self.executed = {} + def write_file(self, filename): """Write the coverage data to `filename`.""" f = open(filename, 'wb') @@ -96,17 +100,14 @@ class CoverageData: """ Treat self.filename as a file prefix, and combine the data from all of the files starting with that prefix. """ + self._make_filename() data_dir, local = os.path.split(self.filename) for f in os.listdir(data_dir or '.'): if f.startswith(local): full_path = os.path.join(data_dir, f) - file_data = self._read_file(full_path) - self._combine_data(file_data) - - def _combine_data(self, new_data): - """Combine the `new_data` into `executed`.""" - for filename, file_data in new_data.items(): - self.executed.setdefault(filename, {}).update(file_data) + new_data = self._read_file(full_path) + for filename, file_data in new_data.items(): + self.executed.setdefault(filename, {}).update(file_data) def add_line_data(self, data_points): """Add executed line data. diff --git a/test/test_data.py b/test/test_data.py index 6e3d13f0..04dd9f28 100644 --- a/test/test_data.py +++ b/test/test_data.py @@ -3,8 +3,72 @@ from coverage.data import CoverageData from coveragetest import CoverageTest +try: + set() +except: + from sets import Set as set + +DATA_1 = [ ('a.py',1), ('a.py',2), ('b.py',3) ] +SUMMARY_1 = { 'a.py':2, 'b.py':1 } +EXECED_FILES_1 = [ 'a.py', 'b.py' ] + +DATA_2 = [ ('a.py',1), ('a.py',5), ('c.py',17) ] +SUMMARY_1_2 = { 'a.py':3, 'b.py':1, 'c.py':1 } +EXECED_FILES_1_2 = [ 'a.py', 'b.py', 'c.py' ] + class DataTest(CoverageTest): - def test_reading(self): + + def assert_summary(self, covdata, summary): + self.assertEqual(covdata.summary(), summary) + + def assert_executed_files(self, covdata, execed): + e1 = set(covdata.executed_files()) + e2 = set(execed) + self.assertEqual(e1, e2) + + def test_reading_empty(self): covdata = CoverageData() covdata.read() - self.assertEqual(covdata.summary(), {}) + self.assert_summary(covdata, {}) + + def test_adding_data(self): + covdata = CoverageData() + covdata.add_line_data(DATA_1) + self.assert_summary(covdata, SUMMARY_1) + self.assert_executed_files(covdata, EXECED_FILES_1) + + def test_writing_and_reading(self): + covdata1 = CoverageData() + covdata1.add_line_data(DATA_1) + covdata1.write() + + covdata2 = CoverageData() + covdata2.read() + self.assert_summary(covdata2, SUMMARY_1) + + def test_combining(self): + covdata1 = CoverageData() + covdata1.set_suffix('1') + covdata1.add_line_data(DATA_1) + covdata1.write() + + covdata2 = CoverageData() + covdata2.set_suffix('2') + covdata2.add_line_data(DATA_2) + covdata2.write() + + covdata3 = CoverageData() + covdata3.combine_parallel_data() + self.assert_summary(covdata3, SUMMARY_1_2) + self.assert_executed_files(covdata3, EXECED_FILES_1_2) + + def test_erasing(self): + covdata1 = CoverageData() + covdata1.add_line_data(DATA_1) + covdata1.write() + covdata1.erase() + self.assert_summary(covdata1, {}) + + covdata2 = CoverageData() + covdata2.read() + self.assert_summary(covdata2, {}) |