mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
It has been found that previous system didn't allow to configure specific cases (e.g. a whitelisted directory inside /usr/lib/cmake). The current solution replaces two options to single one, which also allows a regular expressions Also PackageArchive class has been moved to core package, because it is more about service rather than model
136 lines
4.3 KiB
Python
136 lines
4.3 KiB
Python
import pytest
|
|
|
|
from unittest.mock import MagicMock, PropertyMock
|
|
|
|
from ahriman import __version__
|
|
from ahriman.core.alpm.remote import AUR
|
|
from ahriman.models.build_status import BuildStatus, BuildStatusEnum
|
|
from ahriman.models.counters import Counters
|
|
from ahriman.models.filesystem_package import FilesystemPackage
|
|
from ahriman.models.internal_status import InternalStatus
|
|
from ahriman.models.package import Package
|
|
from ahriman.models.package_description import PackageDescription
|
|
from ahriman.models.package_source import PackageSource
|
|
from ahriman.models.remote_source import RemoteSource
|
|
|
|
|
|
@pytest.fixture
|
|
def build_status_failed() -> BuildStatus:
|
|
"""
|
|
build result fixture with failed status
|
|
|
|
Returns:
|
|
BuildStatus: failed build status test instance
|
|
"""
|
|
return BuildStatus(BuildStatusEnum.Failed, 42)
|
|
|
|
|
|
@pytest.fixture
|
|
def counters() -> Counters:
|
|
"""
|
|
counters fixture
|
|
|
|
Returns:
|
|
Counters: counters test instance
|
|
"""
|
|
return Counters(total=10,
|
|
unknown=1,
|
|
pending=2,
|
|
building=3,
|
|
failed=4,
|
|
success=0)
|
|
|
|
|
|
@pytest.fixture
|
|
def filesystem_package() -> FilesystemPackage:
|
|
"""
|
|
filesystem_package fixture
|
|
|
|
Returns:
|
|
FilesystemPackage: filesystem package test instance
|
|
"""
|
|
return FilesystemPackage(package_name="package", depends={"dependency"}, opt_depends={"optional"})
|
|
|
|
|
|
@pytest.fixture
|
|
def internal_status(counters: Counters) -> InternalStatus:
|
|
"""
|
|
internal status fixture
|
|
|
|
Args:
|
|
counters(Counters): counters fixture
|
|
|
|
Returns:
|
|
InternalStatus: internal status test instance
|
|
"""
|
|
return InternalStatus(status=BuildStatus(),
|
|
architecture="x86_64",
|
|
packages=counters,
|
|
version=__version__,
|
|
repository="aur-clone")
|
|
|
|
|
|
@pytest.fixture
|
|
def package_tpacpi_bat_git() -> Package:
|
|
"""
|
|
git package fixture
|
|
|
|
Returns:
|
|
Package: git package test instance
|
|
"""
|
|
return Package(
|
|
base="tpacpi-bat-git",
|
|
version="3.1.r12.g4959b52-1",
|
|
remote=RemoteSource(
|
|
source=PackageSource.AUR,
|
|
git_url=AUR.remote_git_url("tpacpi-bat-git", "aur"),
|
|
web_url=AUR.remote_web_url("tpacpi-bat-git"),
|
|
path=".",
|
|
branch="master",
|
|
),
|
|
packages={"tpacpi-bat-git": PackageDescription()})
|
|
|
|
|
|
@pytest.fixture
|
|
def pyalpm_handle(pyalpm_package_ahriman: MagicMock) -> MagicMock:
|
|
"""
|
|
mock object for pyalpm
|
|
|
|
Args:
|
|
pyalpm_package_ahriman(MagicMock): mock object for pyalpm package
|
|
|
|
Returns:
|
|
MagicMock: pyalpm mock
|
|
"""
|
|
mock = MagicMock()
|
|
mock.handle.load_pkg.return_value = pyalpm_package_ahriman
|
|
return mock
|
|
|
|
|
|
@pytest.fixture
|
|
def pyalpm_package_description_ahriman(package_description_ahriman: PackageDescription) -> MagicMock:
|
|
"""
|
|
mock object for pyalpm package description
|
|
|
|
Args:
|
|
package_description_ahriman(PackageDescription): package description fixture
|
|
|
|
Returns:
|
|
MagicMock: pyalpm package description mock
|
|
"""
|
|
mock = MagicMock()
|
|
type(mock).arch = PropertyMock(return_value=package_description_ahriman.architecture)
|
|
type(mock).builddate = PropertyMock(return_value=package_description_ahriman.build_date)
|
|
type(mock).depends = PropertyMock(return_value=package_description_ahriman.depends)
|
|
type(mock).makedepends = PropertyMock(return_value=package_description_ahriman.make_depends)
|
|
type(mock).optdepends = PropertyMock(return_value=package_description_ahriman.opt_depends)
|
|
type(mock).checkdepends = PropertyMock(return_value=package_description_ahriman.check_depends)
|
|
type(mock).desc = PropertyMock(return_value=package_description_ahriman.description)
|
|
type(mock).groups = PropertyMock(return_value=package_description_ahriman.groups)
|
|
type(mock).isize = PropertyMock(return_value=package_description_ahriman.installed_size)
|
|
type(mock).licenses = PropertyMock(return_value=package_description_ahriman.licenses)
|
|
type(mock).size = PropertyMock(return_value=package_description_ahriman.archive_size)
|
|
type(mock).provides = PropertyMock(return_value=package_description_ahriman.provides)
|
|
type(mock).url = PropertyMock(return_value=package_description_ahriman.url)
|
|
return mock
|