| # SPDX-License-Identifier: GPL-2.0-or-later | |
| import os | |
| from subprocess import check_call | |
| import sys | |
| class TestLinters: | |
| def test_flake8_pkg(self): | |
| check_call([sys.executable, "-m", "flake8", "qemu/"]) | |
| def test_flake8_scripts(self): | |
| check_call([sys.executable, "-m", "flake8", "scripts/"]) | |
| def test_flake8_qapi(self): | |
| check_call( | |
| [ | |
| sys.executable, | |
| "-m", | |
| "flake8", | |
| "../scripts/qapi/", | |
| "../docs/sphinx/qapidoc.py", | |
| "../docs/sphinx/qapi_domain.py", | |
| ] | |
| ) | |
| def test_isort_minikconf(self): | |
| check_call([sys.executable, "-m", "isort", "-c", "../scripts/minikconf.py"]) | |
| def test_isort_pkg(self): | |
| check_call([sys.executable, "-m", "isort", "-c", "qemu/"]) | |
| def test_isort_scripts(self): | |
| check_call([sys.executable, "-m", "isort", "-c", "scripts/"]) | |
| def test_isort_qapi(self): | |
| check_call( | |
| [ | |
| sys.executable, | |
| "-m", | |
| "isort", | |
| "--sp", | |
| ".", | |
| "-c", | |
| "../scripts/qapi/", | |
| ] | |
| ) | |
| def test_isort_qapi_sphinx(self): | |
| # Force isort to recognize 'compat' as a local module and not | |
| # third-party | |
| check_call( | |
| [ | |
| sys.executable, | |
| "-m", | |
| "isort", | |
| "--sp", | |
| ".", | |
| "-c", | |
| "-p", | |
| "compat", | |
| "../docs/sphinx/qapi_domain.py", | |
| "../docs/sphinx/qapidoc.py", | |
| ] | |
| ) | |
| def test_mypy_minikconf(self): | |
| check_call([sys.executable, "-m", "mypy", "../scripts/minikconf.py"]) | |
| def test_mypy_pkg(self): | |
| check_call([sys.executable, "-m", "mypy", "-p", "qemu"]) | |
| def test_mypy_scripts(self): | |
| check_call([sys.executable, "-m", "mypy", "scripts/"]) | |
| def test_mypy_qapi(self): | |
| check_call([sys.executable, "-m", "mypy", "../scripts/qapi"]) | |
| def test_mypy_iotests(self): | |
| check_call( | |
| [sys.executable, "-m", "linters", "--mypy"], | |
| cwd="../tests/qemu-iotests/", | |
| ) | |
| # Setuptools v60 introduced the SETUPTOOLS_USE_DISTUTILS=stdlib | |
| # workaround; stdlib distutils was fully removed in Python | |
| # 3.12+. Once we are on >=3.12+ exclusively, this workaround can be | |
| # dropped safely. Until then, it is needed for some versions on | |
| # Fedora/Debian distributions which relied upon distro-patched | |
| # setuptools present in CPython, but not within setuptools itself. | |
| def test_pylint_pkg(self): | |
| os.environ["SETUPTOOLS_USE_DISTUTILS"] = "stdlib" | |
| check_call([sys.executable, "-m", "pylint", "qemu/"]) | |
| def test_pylint_scripts(self): | |
| os.environ["SETUPTOOLS_USE_DISTUTILS"] = "stdlib" | |
| check_call([sys.executable, "-m", "pylint", "scripts/"]) | |
| def test_pylint_qapi(self): | |
| os.environ["SETUPTOOLS_USE_DISTUTILS"] = "stdlib" | |
| check_call( | |
| [ | |
| sys.executable, | |
| "-m", | |
| "pylint", | |
| "--rcfile=../scripts/qapi/pylintrc", | |
| "../scripts/qapi/", | |
| "../docs/sphinx/qapidoc.py", | |
| "../docs/sphinx/qapi_domain.py", | |
| ] | |
| ) | |
| def test_pylint_iotests(self): | |
| os.environ["SETUPTOOLS_USE_DISTUTILS"] = "stdlib" | |
| check_call( | |
| [sys.executable, "-m", "linters", "--pylint"], | |
| cwd="../tests/qemu-iotests/", | |
| ) |