# 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_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_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/", )