diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d8322536..0bc7bc98 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,11 +38,6 @@ jobs: - "3.10" - 3.11 odoo-version: - - 11.0 - - 12.0 - - 13.0 - - 14.0 - - 15.0 - 16.0 include: - python-version: "3.10" @@ -50,8 +45,6 @@ jobs: - python-version: 3.11 odoo-version: 17.0 traefik_version: - - 1 - - 2 - 3 steps: # Shared steps @@ -95,7 +88,9 @@ jobs: - run: poetry run invoke test env: SELECTED_ODOO_VERSIONS: ${{ matrix.odoo-version }} + TRAEFIK_VERSION: ${{ matrix.traefik_version }} # Concurrent tests (isolated) - run: poetry run invoke test --sequential env: SELECTED_ODOO_VERSIONS: ${{ matrix.odoo-version }} + TRAEFIK_VERSION: ${{ matrix.traefik_version }} diff --git a/copier.yml b/copier.yml index 91ee4fea..42491ce1 100644 --- a/copier.yml +++ b/copier.yml @@ -125,16 +125,16 @@ odoo_proxy: Which proxy will you use to deploy odoo? - traefik_version: - default: 3 - type: int - when: &odoo_proxy_specific "{{ odoo_proxy == 'traefik' }}" - help: >- - Indicate traefik version - choices: - - 1 - - 2 - - 3 +traefik_version: + default: 3 + type: int + when: &odoo_proxy_specific "{{ odoo_proxy == 'traefik' }}" + help: >- + Indicate traefik version + choices: + - 1 + - 2 + - 3 odoo_initial_lang: default: en_US diff --git a/tests/conftest.py b/tests/conftest.py index b670ee6a..caa07dbe 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,7 +11,6 @@ import pytest import yaml -from packaging import version from plumbum import ProcessExecutionError, local from plumbum.cmd import git, invoke from python_on_whales import DockerClient @@ -24,6 +23,9 @@ # Different tests test different Odoo versions OLDEST_SUPPORTED_ODOO_VERSION = 11.0 ALL_ODOO_VERSIONS = tuple(COPIER_SETTINGS["odoo_version"]["choices"]) +# ALL_TRAEFIK_VERSIONS = tuple(COPIER_SETTINGS["traefik_version"]["choices"]) +TRAEFIK_VERSION = os.getenv("TRAEFIK_VERSION", "3") + SUPPORTED_ODOO_VERSIONS = tuple( v for v in ALL_ODOO_VERSIONS if v >= OLDEST_SUPPORTED_ODOO_VERSION ) @@ -69,7 +71,7 @@ } # Traefik versions matrix -ALL_TRAEFIK_VERSIONS = ("latest", "2.4", "1.7") +# ALL_TRAEFIK_VERSIONS = ("3.0", "2.4", "1.7") @pytest.fixture(autouse=True) @@ -147,13 +149,31 @@ def versionless_odoo_autoskip(request): pytest.skip("version-independent test in old versioned odoo test session") -@pytest.fixture(params=ALL_TRAEFIK_VERSIONS) +@pytest.fixture(params=TRAEFIK_VERSION) def traefik_host(request): """Fixture to indicate where to find a running traefik instance.""" docker = DockerClient() - if request.param == "latest" or version.parse(request.param) >= version.parse("2"): + if request.param == "3": + traefik_container = docker.run( + "traefik:v3.0", + detach=True, + privileged=True, + networks=["inverseproxy_shared"], + volumes=[("/var/run/docker.sock", "/var/run/docker.sock", "ro")], + command=[ + "--accessLog=true", + "--entryPoints.web-alt.address=:8080", + "--entryPoints.web-insecure.address=:80", + "--entryPoints.web-main.address=:443", + "--log.level=debug", + "--providers.docker.exposedByDefault=false", + "--providers.docker.network=inverseproxy_shared", + "--providers.docker=true", + ], + ) + elif request.param == "2": traefik_container = docker.run( - f"traefik:{request.param}", + "traefik:v2.4", detach=True, privileged=True, networks=["inverseproxy_shared"], @@ -171,7 +191,7 @@ def traefik_host(request): ) else: traefik_container = docker.run( - f"traefik:{request.param}", + "traefik:v1.7", detach=True, privileged=True, networks=["inverseproxy_shared"], diff --git a/tests/test_routing.py b/tests/test_routing.py index bd8931b8..7927bc65 100644 --- a/tests/test_routing.py +++ b/tests/test_routing.py @@ -33,10 +33,10 @@ def test_multiple_domains( "project_name": uuid.uuid4().hex, f"domains_{environment}": [ # main0 has no TLS - {"hosts": [f"main0.{base_domain}"], "cert_resolver": False}, + {"cert_resolver": "false", "hosts": [f"main0.{base_domain}"]}, { + "cert_resolver": "false", "hosts": [f"alt0.main0.{base_domain}", f"alt1.main0.{base_domain}"], - "cert_resolver": None, "redirect_to": f"main0.{base_domain}", }, # main1 has self-signed certificates