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 > > >
