Add Cli exception tests

This commit is contained in:
David Dalcino
2021-09-01 16:09:53 -07:00
parent 50ced0aafe
commit 174daf80d7

View File

@@ -3,42 +3,45 @@ import sys
import pytest
from aqt.exceptions import CliInputError
from aqt.installer import Cli
from aqt.metadata import Version
def test_cli_help(capsys):
expected = "".join(
[
"usage: aqt [-h] [-c CONFIG]\n",
" {install-qt,install-tool,install-doc,install-example,install-src,list-qt,list-tool,",
"install,tool,doc,example,src,help,version}\n",
" ...\n",
"\n",
"Another unofficial Qt Installer.\n",
"aqt helps you install Qt SDK, tools, examples and others\n",
"\n",
"optional arguments:\n",
" -h, --help show this help message and exit\n",
" -c CONFIG, --config CONFIG\n",
" Configuration ini file.\n",
"\n",
"subcommands:\n",
" aqt accepts several subcommands:\n",
" install-* subcommands are commands that install components\n",
" list-* subcommands are commands that show available components\n",
" \n",
" commands {install|tool|src|examples|doc} are deprecated and marked for removal\n",
"\n",
" {install-qt,install-tool,install-doc,install-example,install-src,list-qt,list-tool,",
"install,tool,doc,example,src,help,version}\n",
" Please refer to each help message by using '--help' with each subcommand\n",
]
@pytest.fixture()
def expected_help():
return (
"usage: aqt [-h] [-c CONFIG]\n"
" {install-qt,install-tool,install-doc,install-example,install-src,list-qt,list-tool,"
"install,tool,doc,example,src,help,version}\n"
" ...\n"
"\n"
"Another unofficial Qt Installer.\n"
"aqt helps you install Qt SDK, tools, examples and others\n"
"\n"
"optional arguments:\n"
" -h, --help show this help message and exit\n"
" -c CONFIG, --config CONFIG\n"
" Configuration ini file.\n"
"\n"
"subcommands:\n"
" aqt accepts several subcommands:\n"
" install-* subcommands are commands that install components\n"
" list-* subcommands are commands that show available components\n"
" \n"
" commands {install|tool|src|examples|doc} are deprecated and marked for removal\n"
"\n"
" {install-qt,install-tool,install-doc,install-example,install-src,list-qt,list-tool,"
"install,tool,doc,example,src,help,version}\n"
" Please refer to each help message by using '--help' with each subcommand\n"
)
def test_cli_help(capsys, expected_help):
cli = Cli()
cli.run(["help"])
out, err = capsys.readouterr()
assert out == expected
assert out == expected_help
def test_cli_check_module():
@@ -105,3 +108,68 @@ def test_cli_check_mirror():
args = cli.parser.parse_args(arg)
assert args.base == "https://download.qt.io/"
assert cli._check_mirror(args.base)
@pytest.mark.parametrize(
"arch, host, target, version, expect",
(
(None, "windows", "desktop", "6.2.0", None),
("", "windows", "desktop", "6.2.0", None),
(None, "linux", "desktop", "6.2.0", "gcc_64"),
(None, "mac", "desktop", "6.2.0", "clang_64"),
(None, "mac", "ios", "6.2.0", "ios"),
(None, "mac", "android", "6.2.0", "android"),
(None, "mac", "android", "5.12.0", None),
),
)
def test_set_arch(arch, host, target, version, expect):
cli = Cli()
cli._setup_settings()
if not expect:
with pytest.raises(CliInputError) as e:
cli._set_arch([], arch, host, target, version)
assert e.type == CliInputError
assert format(e.value) == "Please supply a target architecture."
assert e.value.should_show_help is True
else:
assert cli._set_arch([], arch, host, target, version) == expect
@pytest.mark.parametrize(
"cmd, expect_msg, should_show_help",
(
(
"install-qt mac ios 6.2.0 --base not_a_url",
"The `--base` option requires a url where the path `online/qtsdkrepository` exists.",
True,
),
(
"install-qt mac ios 6.2.0 --noarchives",
"When `--noarchives` is set, the `--modules` option is mandatory.",
False,
),
(
"install-qt mac ios 6.2.0 --noarchives --archives",
"When `--noarchives` is set, the `--modules` option is mandatory.",
False,
),
(
"install-qt mac ios 6.2.0 --noarchives --archives --modules qtcharts",
"Options `--archives` and `--noarchives` are mutually exclusive.",
False,
),
(
"install-src mac ios 6.2.0 --kde",
"KDE patch: unsupported version!!",
False,
),
),
)
def test_cli_input_errors(capsys, expected_help, cmd, expect_msg, should_show_help):
cli = Cli()
cli._setup_settings()
assert 1 == cli.run(cmd.split())
out, err = capsys.readouterr()
assert out == (expected_help if should_show_help else "")
assert err.rstrip().endswith(expect_msg)