diff --git a/.zuul.d/django-jobs.yaml b/.zuul.d/django-jobs.yaml index 9d66a81c89..b47385b7a5 100644 --- a/.zuul.d/django-jobs.yaml +++ b/.zuul.d/django-jobs.yaml @@ -12,27 +12,45 @@ .. zuul:jobvar: django_version Django version to be used. - pip version specifier like ``>=1.11,<2.0`` should be passed. + pip version specifier like ``>=4.2,<4.3`` should be passed. pre-run: playbooks/horizon-tox-django/pre.yaml run: playbooks/horizon-tox-django/run.yaml vars: - tox_envlist: py39 + tox_envlist: py311 + # The following should match the base openstack-tox-pyNN job. + bindep_profile: test py311 + python_version: "3.11" required-projects: - name: openstack/horizon +# Let's keep at least one job definition as a template even when we support +# only one version of Django covered by the default job. +- job: + name: horizon-tox-python3-django42 + parent: horizon-tox-python3-django + vars: + django_version: '>=4.2,<4.3' + - project-template: name: horizon-non-primary-django-jobs description: | Run unit tests with non-primary Django versions. check: jobs: - # Currently we only support Django 3.2, so there is no need - # to run tests with different versions of Django. - # We specify a job in openstack-python3-jobs(-horizon) - # to keep this project template as it is used in horizon plugins. - # NOTE: We keep it as a template even though it is not used now. - - openstack-tox-py39 + # We specify a job in openstack-python3-jobs(-horizon) as a + # sentinel to make this project template valid even when we support + # only one version of Django used as the default. Zuul project + # template configuration requires at least one job included. + - openstack-tox-py311 + # Let's keep at least one job as a template even when we support + # only one version of Django covered by the default job. + # Just comment it out for such case. + - horizon-tox-python3-django42: + voting: false gate: jobs: - - openstack-tox-py39 + # Default python job in openstack-python3-antelope-jobs(-horizon) + - openstack-tox-py311 + # Skip the following until they become voting. + # - horizon-tox-python3-django42 diff --git a/tox.ini b/tox.ini index 6e7623c74d..5852d7bb7d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 3.18.0 -envlist = pep8,py39,releasenotes,npm,py3-dj32 +envlist = pep8,py39,releasenotes,npm,py3-dj42 # Automatic envs (pyXX) will only use the python version appropriate to that # env and ignore basepython inherited from [testenv] if we set # ignore_basepython_conflict. @@ -12,14 +12,9 @@ usedevelop = True setenv = VIRTUAL_ENV = {envdir} PYTHONDONTWRITEBYTECODE = 1 - # TODO(amotoki): There are three variants of PYTHONWARNINGS. They should be merged. + # TODO(amotoki): Consider dropping PendingDeprecationWarning + # handle deprecated Django features earlier. PYTHONWARNINGS = once,ignore::PendingDeprecationWarning - py{3,39}: PYTHONWARNINGS = once,ignore::PendingDeprecationWarning,ignore::ImportWarning:backports - # DeprecationWarning is disabled in dj32 tox env as Django 3.2 - # deprecated Django 2.2 features. This workaround is just to reduce - # the number of warnings due to this change. - # It should be dropped when we drop Django 2.2 support. - dj32: PYTHONWARNINGS = once,ignore::PendingDeprecationWarning,ignore::DeprecationWarning allowlist_externals = bash @@ -31,7 +26,7 @@ deps = # Unit test for a local hacking rule requires hacking. hacking>=3.0.1,<3.1.0 # Apache-2.0 commands = - dj32: pip install django>=3.2,<3.3 + dj42: pip install django>=4.2,<4.3 find . -type f -name "*.pyc" -delete bash {toxinidir}/tools/unit_tests.sh {toxinidir} {posargs}