File: C:/Users/fred/anaconda3/Lib/site-packages/qtpy/tests/test_cli.py
"""Test the QtPy CLI."""
import subprocess
import sys
import textwrap
import pytest
import qtpy
SUBCOMMANDS = [
[],
["mypy-args"],
]
@pytest.mark.parametrize(
argnames=["subcommand"],
argvalues=[[subcommand] for subcommand in SUBCOMMANDS],
ids=[" ".join(subcommand) for subcommand in SUBCOMMANDS],
)
def test_cli_help_does_not_fail(subcommand):
subprocess.run(
[sys.executable, "-m", "qtpy", *subcommand, "--help"],
check=True,
)
def test_cli_version():
output = subprocess.run(
[sys.executable, "-m", "qtpy", "--version"],
capture_output=True,
check=True,
encoding="utf-8",
)
assert output.stdout.strip().split()[-1] == qtpy.__version__
def test_cli_mypy_args():
output = subprocess.run(
[sys.executable, "-m", "qtpy", "mypy-args"],
capture_output=True,
check=True,
encoding="utf-8",
)
if qtpy.PYQT5:
expected = " ".join(
[
"--always-true=PYQT5",
"--always-false=PYSIDE2",
"--always-false=PYQT6",
"--always-false=PYSIDE6",
],
)
elif qtpy.PYSIDE2:
expected = " ".join(
[
"--always-false=PYQT5",
"--always-true=PYSIDE2",
"--always-false=PYQT6",
"--always-false=PYSIDE6",
],
)
elif qtpy.PYQT6:
expected = " ".join(
[
"--always-false=PYQT5",
"--always-false=PYSIDE2",
"--always-true=PYQT6",
"--always-false=PYSIDE6",
],
)
elif qtpy.PYSIDE6:
expected = " ".join(
[
"--always-false=PYQT5",
"--always-false=PYSIDE2",
"--always-false=PYQT6",
"--always-true=PYSIDE6",
],
)
else:
pytest.fail("No Qt bindings detected")
assert output.stdout.strip() == expected.strip()
def test_cli_pyright_config():
output = subprocess.run(
[sys.executable, "-m", "qtpy", "pyright-config"],
capture_output=True,
check=True,
encoding="utf-8",
)
if qtpy.PYQT5:
expected = textwrap.dedent(
"""
pyrightconfig.json:
{"defineConstant": {"PYQT5": true, "PYSIDE2": false, "PYQT6": false, "PYSIDE6": false}}
pyproject.toml:
[tool.pyright.defineConstant]
PYQT5 = true
PYSIDE2 = false
PYQT6 = false
PYSIDE6 = false
""",
)
elif qtpy.PYSIDE2:
expected = textwrap.dedent(
"""
pyrightconfig.json:
{"defineConstant": {"PYQT5": false, "PYSIDE2": true, "PYQT6": false, "PYSIDE6": false}}
pyproject.toml:
[tool.pyright.defineConstant]
PYQT5 = false
PYSIDE2 = true
PYQT6 = false
PYSIDE6 = false
""",
)
elif qtpy.PYQT6:
expected = textwrap.dedent(
"""
pyrightconfig.json:
{"defineConstant": {"PYQT5": false, "PYSIDE2": false, "PYQT6": true, "PYSIDE6": false}}
pyproject.toml:
[tool.pyright.defineConstant]
PYQT5 = false
PYSIDE2 = false
PYQT6 = true
PYSIDE6 = false
""",
)
elif qtpy.PYSIDE6:
expected = textwrap.dedent(
"""
pyrightconfig.json:
{"defineConstant": {"PYQT5": false, "PYSIDE2": false, "PYQT6": false, "PYSIDE6": true}}
pyproject.toml:
[tool.pyright.defineConstant]
PYQT5 = false
PYSIDE2 = false
PYQT6 = false
PYSIDE6 = true
""",
)
else:
pytest.fail("No valid API to test")
assert output.stdout.strip() == expected.strip()