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 <[email protected]> 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
>
>
>

Reply via email to