diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-07-22 20:47:24 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-07-22 20:47:24 -0400 |
commit | 4245d1feacee23580f3d809568f87364f4ea7b03 (patch) | |
tree | 2291d426ffd0cf886274387f191792a31148cfad /coverage | |
parent | 5478599f2cc54878fe61418648a9aece0f6142aa (diff) | |
download | python-coveragepy-git-4245d1feacee23580f3d809568f87364f4ea7b03.tar.gz |
Move the raw data dumper to a more internal place.
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/cmdline.py | 9 | ||||
-rw-r--r-- | coverage/data.py | 42 | ||||
-rw-r--r-- | coverage/debug.py | 15 | ||||
-rw-r--r-- | coverage/misc.py | 15 |
4 files changed, 53 insertions, 28 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index b15eb107..656f1c03 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -8,7 +8,7 @@ import traceback from coverage import env from coverage.execfile import run_python_file, run_python_module -from coverage.misc import CoverageException, ExceptionDuringRun, NoSource, pretty_data +from coverage.misc import CoverageException, ExceptionDuringRun, NoSource from coverage.debug import info_formatter, info_header @@ -602,13 +602,6 @@ class CoverageScript(object): print(line) else: print("No data collected") - elif info == 'rawdata': - self.coverage.load() - if self.coverage.data: - data = self.coverage.data._read_raw_data_file(self.coverage.config.data_file) - print(pretty_data(data)) - else: - print("No data collected") else: self.help_fn("Don't know what you mean by %r" % info) return ERR diff --git a/coverage/data.py b/coverage/data.py index 2f1cf442..03e12efd 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -200,11 +200,13 @@ class CoverageData(object): __bool__ = __nonzero__ - def _open_for_reading(self, filename): + @classmethod + def _open_for_reading(cls, filename): """Open a file appropriately for reading data.""" return open(filename, "r") - def _read_raw_data(self, file_obj): + @classmethod + def _read_raw_data(cls, file_obj): """Read the raw data from a file object.""" return json.load(file_obj) @@ -237,10 +239,11 @@ class CoverageData(object): ) ) - def _read_raw_data_file(self, filename): + @classmethod + def _read_raw_data_file(cls, filename): """Read the raw data from a file, for debugging.""" - with self._open_for_reading(filename) as f: - return self._read_raw_data(f) + with cls._open_for_reading(filename) as f: + return cls._read_raw_data(f) ## ## Writing data @@ -490,3 +493,32 @@ class CoverageDataFiles(object): new_data.read_file(f) data.update(new_data, aliases=aliases) os.remove(f) + + +def debug_main(): + """Dump the raw data from data files. + + Run this as:: + + $ python -m coverage.data [FILE] + + """ + from coverage.debug import pretty_data + import sys + + if len(sys.argv) > 1: + files = sys.argv[1:] + else: + files = [".coverage"] + + for filename in files: + data = CoverageData._read_raw_data_file(filename) + print("--- {0} ------------------------------".format(filename)) + if data: + print(pretty_data(data)) + else: + print("No data collected") + + +if __name__ == '__main__': + debug_main() diff --git a/coverage/debug.py b/coverage/debug.py index b4c65d26..e5bb6b0b 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -1,7 +1,9 @@ """Control of and utilities for debugging.""" import inspect +import json import os +import re # When debugging, it can be helpful to force some options, especially when @@ -92,3 +94,16 @@ def short_stack(): # pragma: debugging def dump_stack_frames(): # pragma: debugging """Print a summary of the stack to stdout.""" print(short_stack()) + + +def pretty_data(data): + """Format data as JSON, but as nicely as possible. + + Returns a string. + + """ + # Start with a basic JSON dump. + out = json.dumps(data, indent=4, sort_keys=True) + # But pairs of numbers shouldn't be split across lines... + out = re.sub(r"\[\s+(-?\d+),\s+(-?\d+)\s+]", r"[\1, \2]", out) + return out diff --git a/coverage/misc.py b/coverage/misc.py index ca09be7d..b99fbb81 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -3,9 +3,7 @@ import errno import hashlib import inspect -import json import os -import re from coverage import env from coverage.backward import string_class, to_bytes, unicode_class @@ -172,19 +170,6 @@ def _needs_to_implement(that, func_name): ) -def pretty_data(data): - """Format data as JSON, but as nicely as possible. - - Returns a string. - - """ - # Start with a basic JSON dump. - out = json.dumps(data, indent=4, sort_keys=True) - # But pairs of numbers shouldn't be split across lines... - out = re.sub(r"\[\s+(-?\d+),\s+(-?\d+)\s+]", r"[\1, \2]", out) - return out - - class CoverageException(Exception): """An exception specific to Coverage.""" pass |