diff --git a/tests/dockerfiles/Python-alpine.Dockerfile b/tests/dockerfiles/Python-alpine.Dockerfile new file mode 100644 index 0000000..3c8317b --- /dev/null +++ b/tests/dockerfiles/Python-alpine.Dockerfile @@ -0,0 +1,24 @@ +FROM python:3.13-alpine AS target +FROM interdiode/id-configurator:latest AS configuration +COPY --from=target / /src/ +COPY --from=generated-config Python.yaml /config.yaml +RUN id-configurator apply --config /config.yaml --src /src --dst /dst +FROM target AS runtime +ARG PYPI_REPO_PORT +# Warm up uv and poetry themselves from the real, network-reachable PyPI +# while the default index is still in place, so the actual tests below +# never need anything but the fixture repository configured by +# id-configurator. (easy_install/distutils, the fourth tool the `python` +# module configures, is not exercised here: both were removed from Python +# itself in 3.12, and setuptools no longer ships easy_install either, so +# there is no way to actually invoke it on a current interpreter.) +RUN pip install --no-cache-dir uv poetry +COPY --from=configuration /dst/ / +RUN pip install --no-cache-dir idconfiguratortestpkg \ + && python3 -c "import idconfiguratortestpkg" +RUN uv pip install --system idconfiguratortestpkg \ + && python3 -c "import idconfiguratortestpkg" +RUN mkdir -p /tmp/poetrytest && cd /tmp/poetrytest \ + && poetry init -n --name poetrytest \ + && poetry source add --priority explicit demo "https://host.docker.internal:${PYPI_REPO_PORT}/simple/" \ + && poetry add idconfiguratortestpkg --source demo diff --git a/tox.ini b/tox.ini index 3c24543..ded91d4 100644 --- a/tox.ini +++ b/tox.ini @@ -78,7 +78,10 @@ allowlist_externals = docker commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Python.yaml.j2 {env_dir}/configs/Python.yaml + docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-arg PYPI_REPO_PORT={env:PYPI_REPO_PORT} --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Python-alpine.Dockerfile -t id-configurator-python . + docker rmi id-configurator-python docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-arg PYPI_REPO_PORT={env:PYPI_REPO_PORT} --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Python.Dockerfile -t id-configurator-python . + docker rmi id-configurator-python [docker:apt-repo] dockerfile = {tox_root}/tests/dockerfiles/repos/apt-repo.Dockerfile @@ -101,6 +104,7 @@ allowlist_externals = commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Apt.yaml.j2 {env_dir}/configs/Apt.yaml docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Apt.Dockerfile -t id-configurator-apt . + docker rmi id-configurator-apt [docker:yum-repo] dockerfile = {tox_root}/tests/dockerfiles/repos/yum-repo.Dockerfile @@ -123,6 +127,7 @@ allowlist_externals = commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Yum.yaml.j2 {env_dir}/configs/Yum.yaml docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Yum.Dockerfile -t id-configurator-yum . + docker rmi id-configurator-yum [docker:apk-repo] dockerfile = {tox_root}/tests/dockerfiles/repos/apk-repo.Dockerfile @@ -154,6 +159,7 @@ description = commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Apk.yaml.j2 {env_dir}/configs/Apk.yaml docker buildx build --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Apk.Dockerfile -t id-configurator-apk . + docker rmi id-configurator-apk [docker:java-repo] dockerfile = {tox_root}/tests/dockerfiles/repos/java-repo.Dockerfile @@ -176,6 +182,7 @@ allowlist_externals = commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Java.yaml.j2 {env_dir}/configs/Java.yaml docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Java.Dockerfile -t id-configurator-java . + docker rmi id-configurator-java [docker:certificate-repo] dockerfile = {tox_root}/tests/dockerfiles/repos/certificate-repo.Dockerfile @@ -203,3 +210,4 @@ description = commands = python3 -m id_tools test render-config {tox_root}/tests/configs/Certificate.yaml.j2 {env_dir}/configs/Certificate.yaml docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-arg CERTIFICATE_REPO_PORT={env:CERTIFICATE_REPO_PORT} --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Certificate.Dockerfile -t id-configurator-certificates . + docker rmi id-configurator-certificates