[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 30/31] python: add tox support
From: |
John Snow |
Subject: |
[PATCH v7 30/31] python: add tox support |
Date: |
Tue, 25 May 2021 20:24:53 -0400 |
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>
---
python/.gitignore | 1 +
python/Makefile | 7 ++++++-
python/setup.cfg | 23 ++++++++++++++++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/python/.gitignore b/python/.gitignore
index 4ed144ceac3..272ed223a84 100644
--- a/python/.gitignore
+++ b/python/.gitignore
@@ -13,3 +13,4 @@ qemu.egg-info/
# virtual environments (pipenv et al)
.venv/
+.tox/
diff --git a/python/Makefile b/python/Makefile
index a9da1689558..b5621b0d540 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -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/
diff --git a/python/setup.cfg b/python/setup.cfg
index fd325194901..0fcdec6f322 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -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
--
2.31.1
- [PATCH v7 19/31] python: add excluded dirs to flake8 config, (continued)
- [PATCH v7 19/31] python: add excluded dirs to flake8 config, John Snow, 2021/05/25
- [PATCH v7 20/31] python: Add flake8 to pipenv, John Snow, 2021/05/25
- [PATCH v7 23/31] python: move .isort.cfg into setup.cfg, John Snow, 2021/05/25
- [PATCH v7 21/31] python: move mypy.ini into setup.cfg, John Snow, 2021/05/25
- [PATCH v7 24/31] python/qemu: add isort to pipenv, John Snow, 2021/05/25
- [PATCH v7 22/31] python: add mypy to pipenv, John Snow, 2021/05/25
- [PATCH v7 25/31] python/qemu: add qemu package itself to pipenv, John Snow, 2021/05/25
- [PATCH v7 28/31] python: add Makefile for some common tasks, John Snow, 2021/05/25
- [PATCH v7 27/31] python: add avocado-framework and tests, John Snow, 2021/05/25
- [PATCH v7 26/31] python: add devel package requirements to setuptools, John Snow, 2021/05/25
- [PATCH v7 30/31] python: add tox support,
John Snow <=
- [PATCH v7 29/31] python: add .gitignore, John Snow, 2021/05/25
- [PATCH v7 31/31] gitlab: add python linters to CI, John Snow, 2021/05/25