diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-17 07:33:24 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-17 07:33:24 -0400 |
commit | edb8d09b4103975297f2e8314d7d73db99b8c78b (patch) | |
tree | 00c1944cb4e10efdb96b37ee37f82a6e948db6db /coverage/data.py | |
parent | 4ea9cf71171193bd2837a583a98262fbaca2caf6 (diff) | |
download | python-coveragepy-git-edb8d09b4103975297f2e8314d7d73db99b8c78b.tar.gz |
Refactor the file name stuff in CoverageData, and start its own test file.
Diffstat (limited to 'coverage/data.py')
-rw-r--r-- | coverage/data.py | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/coverage/data.py b/coverage/data.py index deebfbe3..7dae25c7 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -1,6 +1,6 @@ """Coverage data for coverage.py""" -import os, socket, types +import os, types import cPickle as pickle class CoverageData: @@ -12,8 +12,9 @@ class CoverageData: filename_env = "COVERAGE_FILE" def __init__(self): - self.filename = None self.use_file = True + self.filename = None + self.suffix = None # A map from canonical Python source file name to a dictionary in # which there's an entry for each line number that has been @@ -27,26 +28,39 @@ class CoverageData: self.executed = {} def usefile(self, use_file=True): + """Set whether or not to use a disk file for data.""" self.use_file = use_file - def read(self, parallel=False): - """Read coverage data from the coverage data file (if it exists).""" - data = {} - if self.use_file and not self.filename: + def set_suffix(self, suffix): + """Set a suffix to use for the data file name. + + This can be used for multiple or parallel execution, so that many + coverage data files can exist simultaneously. + + """ + self.suffix = suffix + + def _make_filename(self): + if not self.filename: self.filename = os.environ.get( self.filename_env, self.filename_default) - if parallel: - self.filename += "." + socket.gethostname() - self.filename += "." + str(os.getpid()) - if os.path.exists(self.filename): - data = self._read_file(self.filename) + if self.suffix: + self.filename += "." + self.suffix + + def read(self): + """Read coverage data from the coverage data file (if it exists).""" + data = {} + if self.use_file: + self._make_filename() + data = self._read_file(self.filename) self.executed = data def write(self): """Write the collected coverage data to a file.""" - if self.use_file and self.filename: + if self.use_file: + self._make_filename() self.write_file(self.filename) - + def erase(self): if self.filename and os.path.exists(self.filename): os.remove(self.filename) @@ -61,7 +75,7 @@ class CoverageData: def read_file(self, filename): self.executed = self._read_file(filename) - + def _read_file(self, filename): """ Return the stored coverage data from the given file. """ |