From 1a4926df61bed62d1174248f21d6e2e0143904ae Mon Sep 17 00:00:00 2001 From: Mauro Ezequiel Moltrasio Date: Fri, 10 Jul 2026 10:11:01 +0200 Subject: [PATCH 1/3] feat(tests): add container information to logs This should provide additional information in cases where the fact container fails to stop cleanly. --- tests/conftest.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index e366f9cf..e2b02f16 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,6 @@ from __future__ import annotations +import json import os from shutil import rmtree from tempfile import NamedTemporaryFile, mkdtemp @@ -109,6 +110,18 @@ def dump_logs(container: docker.models.containers.Container, file: str): f.write(logs) +def dump_container_inspect( + container: docker.models.containers.Container, file: str +): + assert container.id is not None + client = docker.APIClient( + base_url=os.environ.get('DOCKER_HOST', 'unix:///var/run/docker.sock') + ) + container_inspect = client.inspect_container(container.id) + with open(file, 'w') as f: + json.dump(container_inspect, f, indent=2) + + @pytest.fixture def fact_config( request: pytest.FixtureRequest, @@ -253,6 +266,7 @@ def fact( container.stop(timeout=2) exit_status = container.wait(timeout=2) dump_logs(container, container_log) + dump_container_inspect(container, os.path.join(logs_dir, 'container.json')) container.remove() assert exit_status['StatusCode'] == 0 From b4597142a82ac7db9b1e2c21de957ce291acf400 Mon Sep 17 00:00:00 2001 From: Mauro Ezequiel Moltrasio Date: Fri, 10 Jul 2026 11:11:58 +0200 Subject: [PATCH 2/3] fix(tests): bump container stop time to 5 seconds It is possible that in constrained environments fact is taking a bit longer to stop. --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index e2b02f16..22c6f2c9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -263,7 +263,7 @@ def fact( with open(metric_log, 'w') as f: f.write(resp.text) - container.stop(timeout=2) + container.stop(timeout=5) exit_status = container.wait(timeout=2) dump_logs(container, container_log) dump_container_inspect(container, os.path.join(logs_dir, 'container.json')) From bfbec2a8a546b96794b16ad453c165f5aaba85ac Mon Sep 17 00:00:00 2001 From: Mauro Ezequiel Moltrasio Date: Fri, 10 Jul 2026 12:50:05 +0200 Subject: [PATCH 3/3] fix: ensure fact container is removed and use existing docker client --- tests/conftest.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 22c6f2c9..a45d8b6f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -111,13 +111,12 @@ def dump_logs(container: docker.models.containers.Container, file: str): def dump_container_inspect( - container: docker.models.containers.Container, file: str + client: docker.DockerClient, + container: docker.models.containers.Container, + file: str, ): assert container.id is not None - client = docker.APIClient( - base_url=os.environ.get('DOCKER_HOST', 'unix:///var/run/docker.sock') - ) - container_inspect = client.inspect_container(container.id) + container_inspect = client.api.inspect_container(container.id) with open(file, 'w') as f: json.dump(container_inspect, f, indent=2) @@ -265,9 +264,13 @@ def fact( container.stop(timeout=5) exit_status = container.wait(timeout=2) - dump_logs(container, container_log) - dump_container_inspect(container, os.path.join(logs_dir, 'container.json')) - container.remove() + try: + dump_logs(container, container_log) + dump_container_inspect( + docker_client, container, os.path.join(logs_dir, 'container.json') + ) + finally: + container.remove() assert exit_status['StatusCode'] == 0