From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Max Reitz <mreitz@redhat.com>, Cleber Rosa <crosa@redhat.com>,
John Snow <jsnow@redhat.com>
Subject: [PATCH v2 00/17] python/iotests: Run iotest linters during Python CI
Date: Tue, 20 Jul 2021 13:33:19 -0400 [thread overview]
Message-ID: <20210720173336.1876937-1-jsnow@redhat.com> (raw)
GitLab: https://gitlab.com/jsnow/qemu/-/commits/python-package-iotest
CI: https://gitlab.com/jsnow/qemu/-/pipelines/340144191
Since iotests are such a heavy and prominent user of the Python qemu.qmp
and qemu.machine packages, it would be convenient if the Python linting
suite also checked this client for any possible regressions introduced
by shifting around signatures, types, or interfaces in these packages.
(We'd eventually find those problems when iotest 297 ran, but with
increasing distance between Python development and Block development,
the risk of an accidental breakage in this regard increases. I,
personally, know to run iotests (and especially 297) after changing
Python code, but not everyone in the future might. Plus, I am lazy, and
I like only having to push one button.)
Add the ability for the Python CI to run the iotest linters too, which
means that the iotest linters would be checked against:
- Python 3.6, using a frozen set of linting packages at their oldest
supported versions, using 'pipenv'
- Python 3.6 through Python 3.10 inclusive, using 'tox' and the latest
versions of mypy/pylint that happen to be installed during test
time. This CI test is allowed to fail with a warning, and can serve
as a bellwether for when new incompatible changes may disrupt the
linters. Testing against old and new Python interpreters alike can
help surface incompatibility issues we may need to be aware of.)
Here are example outputs of those CI jobs with this series applied:
- "check-python-pipenv": https://gitlab.com/jsnow/qemu/-/jobs/1377735087
- "check-python-tox": https://gitlab.com/jsnow/qemu/-/jobs/1377735088
You can also run these same tests locally from ./python, plus one more:
- "make check-dev" to test against whatever python you have.
- "make check-pipenv", if you have Python 3.6 and pipenv installed.
- "make check-tox", if you have Python 3.6 through Python 3.10 installed.
See the old commit message for more sample output, etc.
https://lists.gnu.org/archive/html/qemu-devel/2021-06/msg07056.html
V2:
- Added patches 1-5 which do some more delinting.
- Added patch 8, which scans subdirs for tests to lint.
- Added patch 17, which improves the speed of mypy analysis.
- Patch 14 is different because of the new patch 8.
Unreviewed patches:
[01] iotests-use-with-statement-for # [SOB] JS
[02] iotests-use-subprocess.devnull # [SOB] JS
[03] iotests-mirror-top-perms # [SOB] JS
[04] iotests-migrate-bitmaps # [SOB] JS
[05] iotests-migrate-bitmaps-test # [SOB] JS
[07] iotests-297-add-get_files # [SOB] JS
[08] wip-make-the-test-finding # [SOB] JS
[14] iotests-297-split-linters-py # [SOB] JS
[17] iotests-297-check-mypy-files # [SOB] JS
--js
John Snow (17):
iotests: use with-statement for open() calls
iotests: use subprocess.DEVNULL instead of open("/dev/null")
iotests/mirror-top-perms: Adjust import paths
iotests/migrate-bitmaps-postcopy-test: declare instance variables
iotests/migrate-bitmaps-test: delint
iotests/297: modify is_python_file to work from any CWD
iotests/297: Add get_files() function
iotests/297: Include sub-directories when finding tests to lint
iotests/297: Don't rely on distro-specific linter binaries
iotests/297: Create main() function
iotests/297: Separate environment setup from test execution
iotests/297: Add 'directory' argument to run_linters
iotests/297: return error code from run_linters()
iotests/297: split linters.py off from 297
iotests/linters: Add entry point for Python CI linters
python: Add iotest linters to test suite
iotests/linters: check mypy files all at once
python/tests/iotests.sh | 2 +
tests/qemu-iotests/297 | 80 ++---------
tests/qemu-iotests/iotests.py | 21 +--
tests/qemu-iotests/linters.py | 130 ++++++++++++++++++
.../tests/migrate-bitmaps-postcopy-test | 3 +
tests/qemu-iotests/tests/migrate-bitmaps-test | 70 +++++-----
tests/qemu-iotests/tests/mirror-top-perms | 7 +-
7 files changed, 198 insertions(+), 115 deletions(-)
create mode 100755 python/tests/iotests.sh
create mode 100755 tests/qemu-iotests/linters.py
--
2.31.1
next reply other threads:[~2021-07-20 17:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 17:33 John Snow [this message]
2021-07-20 17:33 ` [PATCH v2 01/17] iotests: use with-statement for open() calls John Snow
2021-07-20 17:55 ` Philippe Mathieu-Daudé
2021-07-20 17:33 ` [PATCH v2 02/17] iotests: use subprocess.DEVNULL instead of open("/dev/null") John Snow
2021-07-20 17:57 ` Philippe Mathieu-Daudé
2021-07-20 17:33 ` [PATCH v2 03/17] iotests/mirror-top-perms: Adjust import paths John Snow
2021-07-20 17:57 ` Philippe Mathieu-Daudé
2021-07-20 17:33 ` [PATCH v2 04/17] iotests/migrate-bitmaps-postcopy-test: declare instance variables John Snow
2021-07-20 17:33 ` [PATCH v2 05/17] iotests/migrate-bitmaps-test: delint John Snow
2021-07-20 17:33 ` [PATCH v2 06/17] iotests/297: modify is_python_file to work from any CWD John Snow
2021-07-20 17:33 ` [PATCH v2 07/17] iotests/297: Add get_files() function John Snow
2021-07-20 17:33 ` [PATCH v2 08/17] iotests/297: Include sub-directories when finding tests to lint John Snow
2021-07-20 17:33 ` [PATCH v2 09/17] iotests/297: Don't rely on distro-specific linter binaries John Snow
2021-07-20 17:59 ` Philippe Mathieu-Daudé
2021-07-20 17:33 ` [PATCH v2 10/17] iotests/297: Create main() function John Snow
2021-07-20 17:33 ` [PATCH v2 11/17] iotests/297: Separate environment setup from test execution John Snow
2021-07-20 17:33 ` [PATCH v2 12/17] iotests/297: Add 'directory' argument to run_linters John Snow
2021-07-20 17:33 ` [PATCH v2 13/17] iotests/297: return error code from run_linters() John Snow
2021-07-20 17:33 ` [PATCH v2 14/17] iotests/297: split linters.py off from 297 John Snow
2021-07-20 17:33 ` [PATCH v2 15/17] iotests/linters: Add entry point for Python CI linters John Snow
2021-07-20 17:33 ` [PATCH v2 16/17] python: Add iotest linters to test suite John Snow
2021-07-20 17:33 ` [PATCH v2 17/17] iotests/linters: check mypy files all at once John Snow
2021-07-20 19:17 ` [PATCH v2 00/17] python/iotests: Run iotest linters during Python CI John Snow
2021-08-24 15:13 ` Hanna Reitz
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=20210720173336.1876937-1-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@virtuozzo.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).