I realize that some of this has been covered before:
https://lists.gnu.org/archive/html/qemu-devel/2021-05/msg04221.html
Missed it at the time -- I suppose these patches never went in. I'll rebase
my series and front-load these patches.
--js
On Tue, Jul 20, 2021 at 1:33 PM John Snow <jsnow@redhat.com> wrote:
> 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
>
>
>