From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
qemu-block@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Max Reitz" <mreitz@redhat.com>,
"Willian Rampazzo" <willianr@redhat.com>,
"Cleber Rosa" <crosa@redhat.com>, "John Snow" <jsnow@redhat.com>
Subject: [PATCH v8 27/31] python: add avocado-framework and tests
Date: Thu, 27 May 2021 17:17:11 -0400 [thread overview]
Message-ID: <20210527211715.394144-28-jsnow@redhat.com> (raw)
In-Reply-To: <20210527211715.394144-1-jsnow@redhat.com>
Try using avocado to manage our various tests; even though right now
they're only invoking shell scripts and not really running any
python-native code.
Create tests/, and add shell scripts which call out to mypy, flake8,
pylint and isort to enforce the standards in this directory.
Add avocado-framework to the setup.cfg development dependencies, and add
avocado.cfg to store some preferences for how we'd like the test output
to look.
Finally, add avocado-framework to the Pipfile environment and lock the
new dependencies. We are using avocado >= 87.0 here to take advantage of
some features that Cleber has helpfully added to make the test output
here *very* friendly and easy to read for developers that might chance
upon the output in Gitlab CI.
[Note: ALL of the dependencies get updated to the most modern versions
that exist at the time of this writing. No way around it that I have
seen. Not ideal, but so it goes.]
Provided you have the right development dependencies (mypy, flake8,
isort, pylint, and now avocado-framework) You should be able to run
"avocado --config avocado.cfg run tests/" from the python folder to run
all of these linters with the correct arguments.
(A forthcoming commit adds the much easier 'make check'.)
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
---
python/README.rst | 2 ++
python/Pipfile.lock | 8 ++++++++
python/avocado.cfg | 10 ++++++++++
python/setup.cfg | 1 +
python/tests/flake8.sh | 2 ++
python/tests/isort.sh | 2 ++
python/tests/mypy.sh | 2 ++
python/tests/pylint.sh | 2 ++
8 files changed, 29 insertions(+)
create mode 100644 python/avocado.cfg
create mode 100755 python/tests/flake8.sh
create mode 100755 python/tests/isort.sh
create mode 100755 python/tests/mypy.sh
create mode 100755 python/tests/pylint.sh
diff --git a/python/README.rst b/python/README.rst
index 954870973d0..6bd2c6b3547 100644
--- a/python/README.rst
+++ b/python/README.rst
@@ -37,6 +37,8 @@ Files in this directory
-----------------------
- ``qemu/`` Python package source directory.
+- ``tests/`` Python package tests directory.
+- ``avocado.cfg`` Configuration for the Avocado test-runner.
- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
that should be included by a source distribution.
- ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
diff --git a/python/Pipfile.lock b/python/Pipfile.lock
index a2cdc1c50ea..6e344f5fadf 100644
--- a/python/Pipfile.lock
+++ b/python/Pipfile.lock
@@ -30,6 +30,14 @@
"markers": "python_version ~= '3.6'",
"version": "==2.5.6"
},
+ "avocado-framework": {
+ "hashes": [
+ "sha256:42aa7962df98d6b78d4efd9afa2177226dc630f3d83a2a7d5baf7a0a7da7fa1b",
+ "sha256:d96ae343abf890e1ef3b3a6af5ce49e35f6bded0715770c4acb325bca555c515"
+ ],
+ "markers": "python_version >= '3.6'",
+ "version": "==88.1"
+ },
"flake8": {
"hashes": [
"sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b",
diff --git a/python/avocado.cfg b/python/avocado.cfg
new file mode 100644
index 00000000000..10dc6fb6054
--- /dev/null
+++ b/python/avocado.cfg
@@ -0,0 +1,10 @@
+[simpletests]
+# Don't show stdout/stderr in the test *summary*
+status.failure_fields = ['status']
+
+[job]
+# Don't show the full debug.log output; only select stdout/stderr.
+output.testlogs.logfiles = ['stdout', 'stderr']
+
+# Show full stdout/stderr only on tests that FAIL
+output.testlogs.statuses = ['FAIL']
diff --git a/python/setup.cfg b/python/setup.cfg
index 39dc135e601..fd325194901 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -25,6 +25,7 @@ packages =
[options.extras_require]
# Run `pipenv lock --dev` when changing these requirements.
devel =
+ avocado-framework >= 87.0
flake8 >= 3.6.0
isort >= 5.1.2
mypy >= 0.770
diff --git a/python/tests/flake8.sh b/python/tests/flake8.sh
new file mode 100755
index 00000000000..51e0788462b
--- /dev/null
+++ b/python/tests/flake8.sh
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+python3 -m flake8
diff --git a/python/tests/isort.sh b/python/tests/isort.sh
new file mode 100755
index 00000000000..4480405bfb0
--- /dev/null
+++ b/python/tests/isort.sh
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+python3 -m isort -c qemu/
diff --git a/python/tests/mypy.sh b/python/tests/mypy.sh
new file mode 100755
index 00000000000..5f980f563bb
--- /dev/null
+++ b/python/tests/mypy.sh
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+python3 -m mypy -p qemu
diff --git a/python/tests/pylint.sh b/python/tests/pylint.sh
new file mode 100755
index 00000000000..4b10b34db7c
--- /dev/null
+++ b/python/tests/pylint.sh
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+python3 -m pylint qemu/
--
2.31.1
next prev parent reply other threads:[~2021-05-27 21:30 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-27 21:16 [PATCH v8 00/31] python: create installable package John Snow
2021-05-27 21:16 ` [PATCH v8 01/31] python/console_socket: avoid one-letter variable John Snow
2021-05-27 21:16 ` [PATCH v8 02/31] python/machine: use subprocess.DEVNULL instead of open(os.path.devnull) John Snow
2021-05-27 21:16 ` [PATCH v8 03/31] python/machine: use subprocess.run instead of subprocess.Popen John Snow
2021-05-27 21:16 ` [PATCH v8 04/31] python/console_socket: Add a pylint ignore John Snow
2021-05-27 21:16 ` [PATCH v8 05/31] python/machine: Disable pylint warning for open() in _pre_launch John Snow
2021-05-27 21:16 ` [PATCH v8 06/31] python/machine: disable warning for Popen in _launch() John Snow
2021-05-27 21:16 ` [PATCH v8 07/31] python/machine: Trim line length to below 80 chars John Snow
2021-05-27 21:16 ` [PATCH v8 08/31] iotests/297: add --namespace-packages to mypy arguments John Snow
2021-05-27 21:16 ` [PATCH v8 09/31] python: create qemu packages John Snow
2021-05-27 21:16 ` [PATCH v8 10/31] python: add qemu package installer John Snow
2021-05-27 21:16 ` [PATCH v8 11/31] python: add VERSION file John Snow
2021-05-27 21:16 ` [PATCH v8 12/31] python: add directory structure README.rst files John Snow
2021-05-27 21:16 ` [PATCH v8 13/31] python: add MANIFEST.in John Snow
2021-05-27 21:16 ` [PATCH v8 14/31] python: Add pipenv support John Snow
2021-05-27 21:16 ` [PATCH v8 15/31] python: add pylint import exceptions John Snow
2021-05-27 21:17 ` [PATCH v8 16/31] python: move pylintrc into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 17/31] python: add pylint to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 18/31] python: move flake8 config to setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 19/31] python: add excluded dirs to flake8 config John Snow
2021-05-27 21:17 ` [PATCH v8 20/31] python: Add flake8 to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 21/31] python: move mypy.ini into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 22/31] python: add mypy to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 23/31] python: move .isort.cfg into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 24/31] python/qemu: add isort to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 25/31] python/qemu: add qemu package itself " John Snow
2021-05-27 21:17 ` [PATCH v8 26/31] python: add devel package requirements to setuptools John Snow
2021-05-27 21:17 ` John Snow [this message]
2021-05-27 21:17 ` [PATCH v8 28/31] python: add Makefile for some common tasks John Snow
2021-05-27 21:17 ` [PATCH v8 29/31] python: add .gitignore John Snow
2021-05-27 21:17 ` [PATCH v8 30/31] python: add tox support John Snow
2021-05-27 21:17 ` [PATCH v8 31/31] gitlab: add python linters to CI John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210527211715.394144-28-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=f4bug@amsat.org \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
--cc=willianr@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).