summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-04-18 13:00:02 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-04-18 13:00:02 -0400
commit15dad3a0cd253e4c29136097494adcde6c7b9013 (patch)
treee10a761254af522575a103577780001823ee1b30
parentf2094ecb8d63d5e6365ba83fab9259904b1e90b8 (diff)
downloadpython-coveragepy-git-15dad3a0cd253e4c29136097494adcde6c7b9013.tar.gz
Testing and clean up for data.py
-rw-r--r--coverage/data.py21
-rw-r--r--test/test_data.py68
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, {})