mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
58 lines
1.5 KiB
Python
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}'")
|