feat: Enhance JUnit XML reporting with environment variables and add import to conftest.py

Changelog-None
This commit is contained in:
Christian Decker
2026-01-23 12:16:04 +01:00
parent d76e4e7149
commit ff34e485bc
2 changed files with 49 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import unittest
server = os.environ.get("CI_SERVER_URL", None)
github_sha = (
subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ASCII").strip()
)

View File

@@ -1,4 +1,5 @@
import pytest
import os
from pyln.testing.utils import EXPERIMENTAL_DUAL_FUND, VALGRIND, SLOW_MACHINE
@@ -39,3 +40,50 @@ def pytest_runtest_setup(item):
pytest.skip('v1-only test, EXPERIMENTAL_DUAL_FUND=1')
if "slow_test" in item.keywords and VALGRIND and SLOW_MACHINE:
pytest.skip("Skipping slow tests under VALGRIND")
@pytest.hookimpl(tryfirst=True)
def pytest_sessionfinish(session, exitstatus):
"""Add environment variables to JUnit XML report.
This hook runs on the master node in pytest-xdist to add properties
directly to the JUnit XML report. This works around the limitation
that record_testsuite_property doesn't work with pytest-xdist.
We use tryfirst=True so we run before the junitxml plugin writes the file.
See: https://github.com/pytest-dev/pytest/issues/7767
"""
# Check if we're on the master node (not a worker)
# Workers have the workeroutput attribute
if hasattr(session.config, "workeroutput"):
return
# Find the LogXML instance among registered plugins
# We need to search through all plugins because it's not directly accessible
xml = None
for plugin in session.config.pluginmanager.get_plugins():
if hasattr(plugin, "add_global_property"):
xml = plugin
break
if xml is None:
return
# List of environment variables to include in the report
include = [
"GITHUB_ACTION_REPOSITORY",
"GITHUB_EVENT_NAME",
"GITHUB_HEAD_REF",
"GITHUB_REF_NAME",
"GITHUB_RUN_ATTEMPT",
"GITHUB_RUN_ID",
"GITHUB_RUN_NUMBER",
"RUNNER_ARCH",
"RUNNER_OS",
]
# Add properties to the XML report
for name in include:
if name in os.environ:
xml.add_global_property(name, os.environ[name])