/
githubmirror
/
salt
Обзор
Документация
Войти
/
githubmirror
/
salt
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/pytests/functional/modules/test_mac_pkgutil.py
128 строк
3 KB
Pedro Algarvio
Minor timeout adjustments
15 мар 2024, 17:49
Не верифицирован
15 мар 2024, 17:49
62bea25
Код
Авторство
О чём код?
""" integration tests for mac_pkgutil """ import shutil import pytest from salt.exceptions import SaltInvocationError pytestmark = [ pytest.mark.timeout(120, func_only=True), pytest.mark.slow_test, pytest.mark.destructive_test, pytest.mark.skip_if_not_root, pytest.mark.skip_unless_on_darwin, pytest.mark.skip_if_binaries_missing("pkgutil"), ] @pytest.fixture(scope="module") def pkgutil(modules): return modules.pkgutil @pytest.fixture def macports_package_name(pkgutil): pacakge_name = "org.macports.MacPorts" try: yield pacakge_name finally: try: pkgutil.forget(pacakge_name) except Exception: # pylint: disable=broad-except pass shutil.rmtree("/opt/local", ignore_errors=True) @pytest.fixture(scope="module") def macports_package_filename(grains): if grains["osrelease_info"][0] == 12: return "MacPorts-2.7.2-12-Monterey.pkg" if grains["osrelease_info"][0] == 11: return "MacPorts-2.7.2-11-BigSur.pkg" if grains["osrelease_info"][:2] == (10, 15): return "MacPorts-2.7.2-10.15-Catalina.pkg" pytest.fail( "Don't know how to handle '{}'. Please fix the test".format(grains["osfinger"]) ) @pytest.fixture(scope="module") def macports_package_url(macports_package_filename): return "https://distfiles.macports.org/MacPorts/{}".format( macports_package_filename ) @pytest.fixture(scope="module") def pkg_name(grains): if grains["osrelease_info"][0] >= 13: return "com.apple.pkg.CLTools_SDK_macOS13" if grains["osrelease_info"][0] >= 12: return "com.apple.pkg.XcodeSystemResources" if grains["osrelease_info"][0] >= 11: return "com.apple.pkg.InstallAssistant.macOSBigSur" if grains["osrelease_info"][:2] == (10, 15): return "com.apple.pkg.iTunesX" pytest.fail( "Don't know how to handle '{}'. Please fix the test".format(grains["osfinger"]) ) def test_list(pkgutil, pkg_name): """ Test pkgutil.list """ packages_list = pkgutil.list() assert isinstance(packages_list, list) assert pkg_name in packages_list def test_is_installed(pkgutil, pkg_name): """ Test pkgutil.is_installed """ # Test Package is installed assert pkgutil.is_installed(pkg_name) # Test Package is not installed assert not pkgutil.is_installed("spongebob") @pytest.mark.skip( reason="I don't know how to fix this test. Pedro(s0undt3ch), 2022-04-08" ) def test_install_forget( tmp_path, modules, pkgutil, macports_package_name, macports_package_filename, macports_package_url, ): """ Test pkgutil.install Test pkgutil.forget """ pkg_local_path = str(tmp_path / macports_package_filename) # Test if installed assert not pkgutil.is_installed(macports_package_name) # Download the package modules.cp.get_url(macports_package_url, pkg_local_path) # Test install assert pkgutil.install(pkg_local_path, macports_package_name) assert pkgutil.is_installed(macports_package_name) # Test forget assert pkgutil.forget(macports_package_name) def test_install_unsupported_scheme(pkgutil): with pytest.raises(SaltInvocationError) as exc: pkgutil.install("ftp://test", "spongebob") assert "Unsupported scheme" in str(exc.value)