python: add tox support

This is intended to be a manually run, non-CI script.

Use tox to test the linters against all python versions from 3.6 to
3.10. This will only work if you actually have those versions installed
locally, but Fedora makes this easy:

> sudo dnf install python3.6 python3.7 python3.8 python3.9 python3.10

Unlike the pipenv tests (make venv-check), this pulls "whichever"
versions of the python packages, so they are unpinned and may break as
time goes on. In the case that breakages are found, setup.cfg should be
amended accordingly to avoid the bad dependant versions, or the code
should be amended to work around the issue.

With confidence that the tests pass on 3.6 through 3.10 inclusive, add
the appropriate classifiers to setup.cfg to indicate which versions we
claim to support.

Tox 3.18.0 or above is required to use the 'allowlist_externals' option.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-31-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
John Snow 2021-05-27 17:17:14 -04:00
parent f9c0600f02
commit 3c8de38c85
3 changed files with 29 additions and 2 deletions

1
python/.gitignore vendored
View File

@ -13,3 +13,4 @@ qemu.egg-info/
# virtual environments (pipenv et al)
.venv/
.tox/

View File

@ -16,6 +16,8 @@ help:
@echo ""
@echo "make check: run linters using the current environment."
@echo ""
@echo "make check-tox: run linters using multiple python versions."
@echo ""
@echo "make clean: remove package build output."
@echo ""
@echo "make distclean: remove venv files, qemu package forwarder,"
@ -36,8 +38,11 @@ develop:
check:
@avocado --config avocado.cfg run tests/
check-tox:
@tox
clean:
python3 setup.py clean --all
distclean: clean
rm -rf qemu.egg-info/ .venv/ dist/
rm -rf qemu.egg-info/ .venv/ .tox/ dist/

View File

@ -14,6 +14,11 @@ classifiers =
Natural Language :: English
Operating System :: OS Independent
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
[options]
python_requires = >= 3.6
@ -30,12 +35,13 @@ devel =
isort >= 5.1.2
mypy >= 0.770
pylint >= 2.8.0
tox >= 3.18.0
[flake8]
extend-ignore = E722 # Prefer pylint's bare-except checks to flake8's
exclude = __pycache__,
.venv,
.tox,
[mypy]
strict = True
@ -79,3 +85,18 @@ include_trailing_comma=True
line_length=72
lines_after_imports=2
multi_line_output=3
# tox (https://tox.readthedocs.io/) is a tool for running tests in
# multiple virtualenvs. This configuration file will run the test suite
# on all supported python versions. To use it, "pip install tox" and
# then run "tox" from this directory. You will need all of these versions
# of python available on your system to run this test.
[tox:tox]
envlist = py36, py37, py38, py39, py310
[testenv]
allowlist_externals = make
deps = .[devel]
commands =
make check