Enumerate installed packages & versions in the log as part of environment info.

This commit is contained in:
Pavel Minaev 2023-08-30 16:12:23 -07:00 коммит произвёл Pavel Minaev
Родитель 2fcb85fdfa
Коммит 6340818a0e
4 изменённых файлов: 28 добавлений и 4 удалений

Просмотреть файл

@ -279,7 +279,7 @@ def prefixed(format_string, *args, **kwargs):
_tls.prefix = old_prefix
def describe_environment(header):
def get_environment_description(header):
import sysconfig
import site # noqa
@ -342,9 +342,31 @@ def describe_environment(header):
report_paths("os.__file__")
report_paths("threading.__file__")
report_paths("debugpy.__file__")
report("\n")
result = "".join(result).rstrip("\n")
info("{0}", result)
importlib_metadata = None
try:
import importlib_metadata
except ImportError:
try:
from importlib import metadata as importlib_metadata
except ImportError:
pass
if importlib_metadata is None:
report("Cannot enumerate installed packages - missing importlib_metadata.")
else:
report("Installed packages:\n")
try:
for pkg in importlib_metadata.distributions():
report(" {0}=={1}\n", pkg.name, pkg.version)
except Exception:
swallow_exception("Error while enumerating installed packages.")
return "".join(result).rstrip("\n")
def describe_environment(header):
info("{0}", get_environment_description(header))
stderr = LogFile(

Просмотреть файл

@ -69,6 +69,7 @@ def test_wrapper(request, long_tmpdir):
with log.to_file(prefix="tests"):
timestamp.reset()
log.info("{0} started.", request.node.nodeid)
log.describe_environment("Environment:")
try:
yield
finally:

Просмотреть файл

@ -36,7 +36,7 @@ def pytest_configure(config):
def pytest_report_header(config):
log.describe_environment(f"Test environment for tests-{os.getpid()}")
return log.get_environment_description(f"Test environment for tests-{os.getpid()}")
@pytest.hookimpl(hookwrapper=True, tryfirst=True)

Просмотреть файл

@ -7,6 +7,7 @@ pytest-timeout
## Used by test helpers:
importlib_metadata
psutil
## Used in Python code that is run/debugged by the tests: