feat: Enhance JUnit XML reporting with environment variables and add import to conftest.py
Changelog-None
This commit is contained in:
@@ -8,6 +8,7 @@ import unittest
|
|||||||
|
|
||||||
server = os.environ.get("CI_SERVER_URL", None)
|
server = os.environ.get("CI_SERVER_URL", None)
|
||||||
|
|
||||||
|
|
||||||
github_sha = (
|
github_sha = (
|
||||||
subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ASCII").strip()
|
subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ASCII").strip()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
import os
|
||||||
|
|
||||||
from pyln.testing.utils import EXPERIMENTAL_DUAL_FUND, VALGRIND, SLOW_MACHINE
|
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')
|
pytest.skip('v1-only test, EXPERIMENTAL_DUAL_FUND=1')
|
||||||
if "slow_test" in item.keywords and VALGRIND and SLOW_MACHINE:
|
if "slow_test" in item.keywords and VALGRIND and SLOW_MACHINE:
|
||||||
pytest.skip("Skipping slow tests under VALGRIND")
|
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])
|
||||||
|
|||||||
Reference in New Issue
Block a user