diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/debug.py | 18 | ||||
-rw-r--r-- | coverage/html.py | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/coverage/debug.py b/coverage/debug.py index 3a6b1fdc..c11c927a 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -8,6 +8,7 @@ import functools import inspect import itertools import os +import pprint import sys try: import _thread @@ -193,6 +194,23 @@ class SimpleReprMixin(object): ) +def simplify(v): + """Turn things which are nearly dict/list/etc into dict/list/etc.""" + if isinstance(v, dict): + return {k:simplify(vv) for k, vv in v.items()} + elif isinstance(v, (list, tuple)): + return type(v)(simplify(vv) for vv in v) + elif hasattr(v, "__dict__"): + return simplify({'.'+k: v for k, v in v.__dict__.items()}) + else: + return v + + +def pp(v): + """Debug helper to pretty-print data, including SimpleNamespace objects.""" + pprint.pprint(simplify(v)) + + def filter_text(text, filters): """Run `text` through a series of filters. diff --git a/coverage/html.py b/coverage/html.py index 78c982a2..cff2419d 100644 --- a/coverage/html.py +++ b/coverage/html.py @@ -116,8 +116,8 @@ class HtmlDataGeneration(object): elif lineno in analysis.statements: category = 'run' - if self.config.show_contexts: - contexts = sorted(filter(None, contexts_by_lineno[lineno])) + if category and self.config.show_contexts: + contexts = sorted(c or "(empty)" for c in contexts_by_lineno[lineno]) else: contexts = None |