From ffe84dbf9d55e04e79ad76d75f30660d4e79dabc Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Thu, 14 Jan 2021 07:26:59 +0900 Subject: [PATCH] Move linters dependencies to tox.ini One of suggestions discussed in the mailling thread [1] is to decouple linters from test-requirements.txt. We uses specific versions of linters (hacking, flake8, pylint and bandit) and they are potentially incompatbile with other libraries in test-requirements.txt. One example is bandit incompatibility detected by the new pip resolver. This commit moves linters to tox.ini and introduces a new tox envdir shared by linter related tox envs. Note that we have a unit test for a local hacking rule so hacking needs to be installed as part of the default dependencies. We can have it in test-requirements.txt but I think it is better to have it in tox.ini as hacking is a part of linters and other linter dependencies are declared in tox.ini now. [1] http://lists.openstack.org/pipermail/openstack-discuss/2020-December/thread.html#19362 Change-Id: Ia41c5f665f01bdab187c9256b2319885998d12c3 --- lower-constraints.txt | 2 -- test-requirements.txt | 6 ------ tox.ini | 20 +++++++++++++++----- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lower-constraints.txt b/lower-constraints.txt index 8ef2e0f52b..2859e446fb 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -3,7 +3,6 @@ amqp==2.1.1 appdirs==1.4.0 asn1crypto==0.23.0 Babel==2.6.0 -bandit==1.4.0 cachetools==2.0.0 cffi==1.14.0 chardet==3.0.4 @@ -78,7 +77,6 @@ positional==1.2.1 prettytable==0.7.2 pycodestyle==2.5.0 pycparser==2.18 -pyflakes==2.1.0 Pygments==2.2.0 pyinotify==0.9.6 pymongo==3.0.2 diff --git a/test-requirements.txt b/test-requirements.txt index 27b2ae21dc..77cf8727cf 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6,19 +6,13 @@ # added in alphabetical order, however, some dependencies may need to # be installed in a specific order. # -# Hacking should appear first in case something else depends on pep8 -hacking>=3.0.1,<3.1.0 # Apache-2.0 -# -bandit!=1.6.0,>=1.4.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0 -flake8-import-order==0.12 # LGPLv3 freezegun>=0.3.15 # Apache-2.0 nodeenv>=0.9.4 # BSD pytest>=5.3.5 # MIT pytest-django>=3.8.0 # BSD (3 clause) pytest-html>=2.0.1 #MPL-2.0 python-memcached>=1.59 # PSF -pylint==2.6.0 # GPLv2 selenium>=2.50.1 # Apache-2.0 testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT diff --git a/tox.ini b/tox.ini index e69b8312b3..6892a0d2bd 100644 --- a/tox.ini +++ b/tox.ini @@ -23,6 +23,8 @@ deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements.txt + # Unit test for a local hacking rule requires hacking. + hacking>=3.0.1,<3.1.0 # Apache-2.0 commands = find . -type f -name "*.pyc" -delete bash {toxinidir}/tools/unit_tests.sh {toxinidir} {posargs} @@ -32,13 +34,20 @@ deps = -c{toxinidir}/lower-constraints.txt -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements.txt + # Unit test for a local hacking rule requires hacking. + hacking>=3.0.1,<3.1.0 # Apache-2.0 [testenv:venv] envdir = {toxworkdir}/venv commands = {posargs} [testenv:pep8] -envdir = {toxworkdir}/venv +envdir = {toxworkdir}/linters +deps = + {[testenv]deps} + flake8-import-order==0.12 # LGPLv3 + pylint==2.6.0 # GPLv2 + bandit!=1.6.0,>=1.4.0 # Apache-2.0 setenv = DJANGO_SETTINGS_MODULE=openstack_dashboard.test.settings commands = @@ -131,7 +140,6 @@ commands = doc8 doc/source [testenv:pdf-docs] -basepython = python3 envdir = {toxworkdir}/docs deps = {[testenv:docs]deps} whitelist_externals = @@ -164,12 +172,14 @@ commands = {envpython} {toxinidir}/manage.py compilemessages -v 0 --traceback [testenv:bandit] -envdir = {toxworkdir}/venv +envdir = {toxworkdir}/linters +deps = {[testenv:pep8]deps} commands = bandit -r horizon openstack_auth openstack_dashboard -n5 -x tests -ll [testenv:bandit-baseline] -envdir = {toxworkdir}/venv -commands = bandit-baseline -r horizon openstack_auth openstack_dashboard -n5 -x tests -ii -ll +envdir = {toxworkdir}/linters +deps = {[testenv:pep8]deps} +commands = bandit-baseline -r horizon openstack_auth openstack_dashboard -n5 -x tests -ii -ll [flake8] filename = *.py,django.wsgi