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