From 8f4d404c8f9044ea1c3bf2479236f51d7706cb76 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 1 Jan 2023 07:42:00 -0500 Subject: refactor: a better way to filter `coverage debug pybehave` --- coverage/env.py | 12 ++++++++---- tests/test_cmdline.py | 6 ++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/coverage/env.py b/coverage/env.py index 0b01f3e7..c6c1ed13 100644 --- a/coverage/env.py +++ b/coverage/env.py @@ -9,6 +9,13 @@ import sys from typing import Any, Iterable, Tuple +# debug_info() at the bottom wants to show all the globals, but not imports. +# Grab the global names here to know which names to not show. Nothing defined +# above this line will be in the output. +_UNINTERESTING_GLOBALS = list(globals()) +# These names also shouldn't be shown. +_UNINTERESTING_GLOBALS += ["PYBEHAVIOR", "debug_info"] + # Operating systems. WINDOWS = sys.platform == "win32" LINUX = sys.platform.startswith("linux") @@ -140,10 +147,7 @@ def debug_info() -> Iterable[Tuple[str, Any]]: """Return a list of (name, value) pairs for printing debug information.""" info = [ (name, value) for name, value in globals().items() - if not name.startswith("_") and - name not in {"PYBEHAVIOR", "debug_info"} and - not isinstance(value, type(os)) and - not str(value).startswith("typing.") + if not name.startswith("_") and name not in _UNINTERESTING_GLOBALS ] info += [ (name, value) for name, value in PYBEHAVIOR.__dict__.items() diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index 85e99ad5..96bd3bbf 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -318,6 +318,12 @@ class CmdLineTest(BaseCmdLineTest): assert " CPYTHON:" in out assert " PYVERSION:" in out assert " pep626:" in out + + # Some things that shouldn't appear.. + assert "typing." not in out # import from typing + assert ": <" not in out # objects without a good repr + + # It should report PYVERSION correctly. pyversion = re_line(r" PYVERSION:", out) vtuple = ast.literal_eval(pyversion.partition(":")[-1].strip()) assert vtuple[:5] == sys.version_info -- cgit v1.2.1