From 1a854b1812400867117584f6bbde7bd1c75bb118 Mon Sep 17 00:00:00 2001 From: jaseg Date: Wed, 6 Nov 2024 14:49:36 +0100 Subject: Tests: Make kicad docker image configurable --- gerbonara/tests/conftest.py | 4 ++-- gerbonara/tests/image_support.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'gerbonara') diff --git a/gerbonara/tests/conftest.py b/gerbonara/tests/conftest.py index 242ec04..40cf756 100644 --- a/gerbonara/tests/conftest.py +++ b/gerbonara/tests/conftest.py @@ -8,7 +8,7 @@ from itertools import chain import pytest -from .image_support import ImageDifference, run_cargo_cmd, bulk_populate_kicad_fp_export_cache +from .image_support import ImageDifference, run_cargo_cmd, bulk_populate_kicad_fp_export_cache, KICAD_CONTAINER def pytest_assertrepr_compare(op, left, right): if isinstance(left, ImageDifference) or isinstance(right, ImageDifference): @@ -56,7 +56,7 @@ def pytest_configure(config): raise ValueError(f'Path "{lib_dir}" given by KICAD_FOOTPRINTS environment variable does not exist or is not a directory.') print('Updating podman image') - subprocess.run(['podman', 'pull', 'registry.hub.docker.com/kicad/kicad:nightly'], check=True) + subprocess.run(['podman', 'pull', KICAD_CONTAINER], check=True) print('Checking and bulk re-building KiCad footprint library cache') with multiprocessing.pool.ThreadPool() as pool: # use thread pool here since we're only monitoring podman processes diff --git a/gerbonara/tests/image_support.py b/gerbonara/tests/image_support.py index efb962a..5f6db04 100644 --- a/gerbonara/tests/image_support.py +++ b/gerbonara/tests/image_support.py @@ -40,6 +40,8 @@ from PIL import Image cachedir = Path(__file__).parent / 'image_cache' cachedir.mkdir(exist_ok=True) +KICAD_CONTAINER = os.environ.get('KICAD_CONTAINER', 'registry.hub.docker.com/kicad/kicad:nightly') + @total_ordering class ImageDifference: def __init__(self, value, histogram): @@ -169,7 +171,7 @@ def kicad_fp_export(mod_file, out_svg): '--userns=keep-id', # To allow container to read from bind mount '--mount', f'type=bind,src={pretty_dir},dst=/{pretty_dir.name}', '--mount', f'type=bind,src={tmpdir},dst=/out', - 'registry.hub.docker.com/kicad/kicad:nightly', + KICAD_CONTAINER, 'kicad-cli', 'fp', 'export', 'svg', '--output', '/out', '--footprint', fp_name, f'/{pretty_dir.name}'] subprocess.run(cmd, check=True) #, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) out_file = Path(tmpdir) / f'{fp_name}.svg' @@ -199,9 +201,15 @@ def bulk_populate_kicad_fp_export_cache(pretty_dir): '--userns=keep-id', # To allow container to read from bind mount '--mount', f'type=bind,src={pretty_dir},dst=/{pretty_dir.name}', '--mount', f'type=bind,src={tmpdir},dst=/out', - 'registry.hub.docker.com/kicad/kicad:nightly', + KICAD_CONTAINER, 'kicad-cli', 'fp', 'export', 'svg', '--output', '/out', f'/{pretty_dir.name}'] - subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL) + + try: + subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL) + + except subprocess.CalledProcessError as e: + print('Error running command with command line:', ' '.join(e.cmd), file=sys.stderr) + raise e for fn in mod_files: out_file = Path(tmpdir) / fn.with_suffix('.svg').name -- cgit