diff --git a/.zuul.yaml b/.zuul.yaml index 62b0a04..906f0b9 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -11,6 +11,8 @@ - stx-distcloud-client-tox-py27 - stx-distcloud-client-tox-py39 - stx-distcloud-client-tox-pylint + - stx-distcloud-client-tox-pep8-debian + - stx-distcloud-client-tox-pylint-debian gate: jobs: - openstack-tox-linters @@ -18,6 +20,8 @@ - stx-distcloud-client-tox-py27 - stx-distcloud-client-tox-py39 - stx-distcloud-client-tox-pylint + - stx-distcloud-client-tox-pep8-debian + - stx-distcloud-client-tox-pylint-debian post: jobs: - stx-distcloud-client-upload-git-mirror @@ -48,6 +52,16 @@ tox_envlist: pylint tox_extra_args: -c distributedcloud-client/tox.ini +- job: + name: stx-distcloud-client-tox-pylint-debian + parent: tox + description: Run pylint with py39 for distcloud-client + nodeset: ubuntu-focal + vars: + python_version: 3.9 + tox_envlist: pylint_Debian + tox_extra_args: -c distributedcloud-client/tox.ini + - job: name: stx-distcloud-client-tox-pep8 parent: tox @@ -57,6 +71,16 @@ tox_envlist: pep8 tox_extra_args: -c distributedcloud-client/tox.ini +- job: + name: stx-distcloud-client-tox-pep8-debian + parent: tox + description: Run pep8 for py39 distcloud client + nodeset: ubuntu-focal + vars: + python_version: 3.9 + tox_envlist: pep8_Debian + tox_extra_args: -c distributedcloud-client/tox.ini + - job: name: stx-distcloud-client-upload-git-mirror parent: upload-git-mirror diff --git a/distributedcloud-client/pylint.rc b/distributedcloud-client/pylint.rc index 5ff76b3..a258977 100644 --- a/distributedcloud-client/pylint.rc +++ b/distributedcloud-client/pylint.rc @@ -20,6 +20,10 @@ persistent=yes # usually to register additional checkers. load-plugins= +# TODO: Bo remove the following once we no longer use python2 +# Remove option files-output, bad-functions, max-branches +# Remove E1606, E1607, E1608, E1610, E1611, E1641, W0403, W1112, W1641 +# Remove enable section since python3 checker will then by default [MESSAGES CONTROL] # Enable the message, report, category or checker with the given id(s). You can @@ -100,12 +104,12 @@ load-plugins= # W1660: deprecated-sys-function # W1661: exception-escape # W1662: comprehension-escape -enable=E1603,E1609,E1610,E1602,E1606,E1608,E1607,E1605,E1604,E1601,E1611,W1652, - W1651,W1649,W1657,W1660,W1658,W1659,W1623,W1622,W1620,W1621,W1645,W1641, - W1624,W1648,W1625,W1611,W1662,W1661,W1650,W1640,W1630,W1614,W1615,W1642, - W1616,W1628,W1643,W1629,W1627,W1644,W1617,W1601,W1602,W1603,W1604,W1605, - W1654,W1655,W1656,W1619,W1606,W1607,W1639,W1618,W1632,W1634,W1608,W1636, - W1653,W1646,W1638,W1609,W1610,W1626,W1633,W1647,W1635,W1612,W1613,W1637 +enable=E1601,E1602,E1603,E1604,E1605,E1606,E1607,E1608,E1609,E1610,E1611,W1601, + W1602,W1603,W1604,W1605,W1606,W1607,W1608,W1609,W1610,W1611,W1612,W1613, + W1614,W1615,W1616,W1617,W1618,W1619,W1620,W1621,W1622,W1623,W1624,W1625, + W1626,W1627,W1628,W1629,W1630,W1632,W1633,W1634,W1635,W1636,W1637,W1638, + W1639,W1640,W1641,W1642,W1643,W1644,W1645,W1646,W1647,W1648,W1649,W1650, + W1651,W1652,W1653,W1654,W1655,W1656,W1657,W1658,W1659,W1660,W1661,W1662 # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifier separated by comma (,) or put this option @@ -115,6 +119,7 @@ enable=E1603,E1609,E1610,E1602,E1606,E1608,E1607,E1605,E1604,E1601,E1611,W1652, # # R detect Refactor for a "good practice" metric violation # C detect Convention for coding standard violation +# E1102: not-callable # W0107: unnecessary-pass # W0212: protected-access # W0403: relative-import (typically caused by six) @@ -125,11 +130,15 @@ enable=E1603,E1609,E1610,E1602,E1606,E1608,E1607,E1605,E1604,E1601,E1611,W1652, # W1113: keyword-arg-before-vararg # W1505: deprecated-method # W1618: no-absolute-import -# E1102: not-callable +# +# Following alarms are suppressed because python2 does not support the new pylint +# suggested syntax change. Need to unsuppress once we move away from python2 +# W0707: raise-missing-from +# W1514: unspecified-encoding +# disable=C,R, - W0107,W0212,W0403, - W0612,W0613,W0603,W0622,W0703,W1112,W1505,W1618, - E1102 + E1102,W0107,W0212,W0403,W0612,W0613,W0603, + W0622,W0703,W0707,W1112,W1505,W1514,W1618 [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs diff --git a/distributedcloud-client/test-requirements-debian.txt b/distributedcloud-client/test-requirements-debian.txt new file mode 100644 index 0000000..c33906f --- /dev/null +++ b/distributedcloud-client/test-requirements-debian.txt @@ -0,0 +1,20 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. +hacking>=1.1.0,<=2.0.0 # Apache-2.0 +astroid==2.11.5;python_version>"3.7" # GPLv2 +isort<5;python_version>="3.5" +pylint==2.14.1;python_version>"3.7" # GPLv2 +python-openstackclient>=3.3.0 # Apache-2.0 +sphinx>=1.5.1;python_version<="3.6" # BSD +sphinx>=1.6.2;python_version>="3.6" # BSD +fixtures>=3.0.0 # Apache-2.0/BSD +mock>=2.0 # BSD +tempest>=14.0.0 # Apache-2.0 +testtools>=1.4.0 # MIT +PyYAML>=3.1.0 +yamllint<1.26.1;python_version>="3.0" # GPLv2 +python-dev-tools;python_version>="3.9" +beautifulsoup4;python_version>="3.9" +osprofiler;python_version>="3.8" +requests_toolbelt;python_version>="3.0" diff --git a/distributedcloud-client/tox.ini b/distributedcloud-client/tox.ini index b25aa4c..e25a4f0 100644 --- a/distributedcloud-client/tox.ini +++ b/distributedcloud-client/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 2.3 -envlist = py27,py36,py39,pep8,pylint +envlist = py27,py36,py39,pep8,pylint,pep8_Debian,pylint_Debian skipsdist = True toxworkdir = /tmp/{env:USER}_dc_client_tox @@ -53,6 +53,14 @@ basepython = python3 deps = {[testenv]deps} commands = flake8 {posargs} +[testenv:pep8_Debian] +basepython = python3.9 +deps = -r{toxinidir}/test-requirements-debian.txt +install_command = pip install -v -v -v \ + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ + {opts} {packages} +commands = flake8 + [testenv:pylint] basepython = python3 sitepackages = False @@ -60,6 +68,15 @@ deps = {[testenv]deps} commands = pylint {posargs} dcmanagerclient --rcfile=./pylint.rc +[testenv:pylint_Debian] +basepython = python3.9 +deps = -r{toxinidir}/test-requirements-debian.txt +install_command = pip install -v -v -v \ + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ + {opts} {packages} +commands = + pylint {posargs} dcmanagerclient --rcfile=./pylint.rc + [testenv:venv] basepython = python3 commands = {posargs} @@ -82,6 +99,25 @@ commands = coverage xml -o cover/coverage.xml coverage report +[testenv:cover_Debian] +basepython = python3.9 +setenv = + PYTHON=coverage run --parallel-mode + PYTHONDONTWRITEBYTECODE=True +deps = -r{toxinidir}/test-requirements-debian.txt + coverage +install_command = pip install -v -v -v \ + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ + {opts} {packages} +commands = + find {toxinidir} -not -path '{toxinidir}/.tox/*' -name '*.py[c|o]' -delete + coverage erase + stestr --test-path={[dcclient]client_base_dir}/dcmanagerclient/tests run '{posargs}' + coverage combine + coverage html -d cover + coverage xml -o cover/coverage.xml + coverage report + [testenv:debug] basepython = python3 commands = oslo_debug_helper {posargs}