mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-16 20:27:05 +03:00
This also adds a lot of type hints. I refrained from changing a lot of 'str' variables to Path variables, but eventually I think they will need to become Paths
66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
import re
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
|
|
import pytest
|
|
|
|
from aqt.archives import TargetConfig
|
|
from aqt.exceptions import UpdaterError
|
|
from aqt.helper import Settings
|
|
from aqt.updater import Updater
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup_settings():
|
|
Settings.load_settings()
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"target_config, expected_err_pattern",
|
|
(
|
|
(
|
|
TargetConfig("5.15.2", "winrt", "win64_msvc2019_winrt_x86", "windows"),
|
|
re.compile(
|
|
r"Updater caused an IO error: .*No such file or directory: "
|
|
# '.*' wildcard used to match path separators on windows/*nix
|
|
r".*5\.15\.2.*winrt_x86_msvc2019.*mkspecs.*qconfig.pri.*"
|
|
),
|
|
),
|
|
(
|
|
TargetConfig("5.15.2", "desktop", "win64_msvc2019_64", "windows"),
|
|
re.compile(
|
|
r"Updater caused an IO error: .*No such file or directory: "
|
|
# '.*' wildcard used to match path separators on windows/*nix
|
|
r".*5\.15\.2.*msvc2019_64.*mkspecs.*qconfig.pri.*"
|
|
),
|
|
),
|
|
(
|
|
TargetConfig("6.1.2", "desktop", "clang_64", "mac"),
|
|
re.compile(
|
|
r"Updater caused an IO error: .*No such file or directory: "
|
|
# '.*' wildcard used to match path separators on windows/*nix
|
|
r".*6\.1\.2.*macos.*mkspecs.*qconfig.pri.*"
|
|
),
|
|
),
|
|
(
|
|
TargetConfig("6.1.1", "desktop", "clang_64", "mac"),
|
|
re.compile(
|
|
r"Updater caused an IO error: .*No such file or directory: "
|
|
# '.*' wildcard used to match path separators on windows/*nix
|
|
r".*6\.1\.1.*clang_64.*mkspecs.*qconfig.pri.*"
|
|
),
|
|
),
|
|
),
|
|
)
|
|
def test_updater_update_license_io_error(monkeypatch, target_config: TargetConfig, expected_err_pattern: re.Pattern):
|
|
"""
|
|
All of these tests will raise IOError when they attempt to patch the license file.
|
|
"""
|
|
with pytest.raises(UpdaterError) as err:
|
|
with TemporaryDirectory() as empty_dir:
|
|
# Try to update a Qt installation that does not exist
|
|
Updater.update(target_config, base_path=Path(empty_dir), installed_desktop_arch_dir=None)
|
|
assert err.type == UpdaterError
|
|
err_msg = format(err.value)
|
|
assert expected_err_pattern.match(err_msg)
|