]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
python: add tox support
authorJohn Snow <jsnow@redhat.com>
Thu, 27 May 2021 21:17:14 +0000 (17:17 -0400)
committerJohn Snow <jsnow@redhat.com>
Tue, 1 Jun 2021 20:21:21 +0000 (16:21 -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>
Message-id: 20210527211715.394144-31-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
python/.gitignore
python/Makefile
python/setup.cfg

index 4ed144ceac3ed14f51622d3f25195655f6fd6a90..272ed223a84ab6e82df06f6277a04c1170f2eb63 100644 (file)
@@ -13,3 +13,4 @@ qemu.egg-info/
 
 # virtual environments (pipenv et al)
 .venv/
+.tox/
index a9da1689558c61ab95f58c7e298b43fb0f8773e9..b5621b0d540e7aaa814fb5bcc0bf18383d9c6fec 100644 (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/
index fd325194901d5c1f83a70b733c933789fd9dad43..0fcdec6f3223d7bb3529f27ac0573a9ac02acbf1 100644 (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