Files
slic/conftest.py
T
tligui_y 136f4f1b05
Run Pytest with HTML and XML Test Reports / tests (push) Successful in 26s
Update conftest.py
2025-07-17 10:50:09 +02:00

61 lines
1.7 KiB
Python

# conftest.py
import json
import os
import sys
import builtins
def serialize(obj):
try:
if isinstance(obj, (str, int, float, bool)) or obj is None:
return obj
if isinstance(obj, (list, tuple, set)):
return [serialize(o) for o in obj]
if isinstance(obj, dict):
return {str(k): serialize(v) for k, v in obj.items()}
return str(obj)
except Exception:
return "<unserializable>"
ALL_PYTEST_DATA = {
"sys_argv": sys.argv,
"builtins": list(dir(builtins)),
"hooks": {},
"collection": [],
"test_reports": [],
"config": {},
}
def pytest_configure(config):
ALL_PYTEST_DATA["config"] = serialize(vars(config))
def pytest_sessionstart(session):
ALL_PYTEST_DATA["session_start"] = serialize(vars(session))
def pytest_collection_modifyitems(session, config, items):
for item in items:
try:
ALL_PYTEST_DATA["collection"].append({
"nodeid": item.nodeid,
"keywords": list(item.keywords),
"module": str(item.module),
"name": item.name
})
except Exception:
pass
def pytest_runtest_logreport(report):
try:
ALL_PYTEST_DATA["test_reports"].append({
"nodeid": report.nodeid,
"outcome": report.outcome,
"when": report.when,
"longrepr": str(report.longrepr),
})
except Exception:
pass
def pytest_unconfigure(config):
os.makedirs("ci-reports/markdown", exist_ok=True)
with open("ci-reports/markdown/_everything_pytest_saw.json", "w") as f:
json.dump(ALL_PYTEST_DATA, f, indent=2)