Files
NetAlertX/test/docker_tests/conftest.py
2025-11-09 17:03:25 +00:00

58 lines
1.5 KiB
Python

import os
import pathlib
import subprocess
import pytest
def _announce(request: pytest.FixtureRequest, message: str) -> None:
reporter = request.config.pluginmanager.get_plugin("terminalreporter")
if reporter: # pragma: no branch - depends on pytest runner
reporter.write_line(message)
else:
print(message)
@pytest.fixture(scope="session", autouse=True)
def build_netalertx_test_image(request: pytest.FixtureRequest) -> None:
"""Build the docker test image before running any docker-based tests."""
image = os.environ.get("NETALERTX_TEST_IMAGE", "netalertx-test")
project_root = pathlib.Path(__file__).resolve().parents[2]
cmd = [
"docker",
"buildx",
"build",
"--load",
"-t",
image,
".",
]
_announce(request, f"[docker-tests] Building test image '{image}' using docker buildx")
env = os.environ.copy()
env.setdefault("DOCKER_BUILDKIT", "1")
result = subprocess.run(
cmd,
cwd=project_root,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=False,
env=env,
)
if result.returncode != 0:
_announce(request, f"[docker-tests] docker buildx failed for '{image}'")
pytest.fail(
"Docker buildx failed before running docker tests.\n"
f"Command: {' '.join(cmd)}\n"
f"STDOUT:\n{result.stdout}\n"
f"STDERR:\n{result.stderr}"
)
_announce(request, f"[docker-tests] docker buildx completed for '{image}'")