mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-06-28 06:41:43 +00:00
support check dependencies
This commit is contained in:
@ -74,7 +74,7 @@ def test_with_dependencies(application: Application, package_ahriman: Package, p
|
||||
|
||||
package_mock = mocker.patch("ahriman.models.package.Package.from_aur", side_effect=lambda p, _: packages[p])
|
||||
packages_mock = mocker.patch("ahriman.application.application.Application._known_packages",
|
||||
return_value=["devtools", "python-build"])
|
||||
return_value=["devtools", "python-build", "python-pytest"])
|
||||
|
||||
result = application.with_dependencies([package_ahriman], process_dependencies=True)
|
||||
assert {package.base: package for package in result} == packages
|
||||
|
@ -146,6 +146,9 @@ def aur_package_ahriman() -> AURPackage:
|
||||
"rsync",
|
||||
"subversion",
|
||||
],
|
||||
check_depends=[
|
||||
"python-pytest",
|
||||
],
|
||||
conflicts=[],
|
||||
provides=[],
|
||||
license=["GPL3"],
|
||||
@ -335,6 +338,9 @@ def package_description_ahriman() -> PackageDescription:
|
||||
"rsync",
|
||||
"subversion",
|
||||
],
|
||||
check_depends=[
|
||||
"python-pytest",
|
||||
],
|
||||
description="ArcH linux ReposItory MANager",
|
||||
filename="ahriman-2.6.0-1-any.pkg.tar.zst",
|
||||
groups=[],
|
||||
|
@ -0,0 +1,52 @@
|
||||
import pytest
|
||||
|
||||
from pytest_mock import MockerFixture
|
||||
from sqlite3 import Connection
|
||||
|
||||
from ahriman.core.configuration import Configuration
|
||||
from ahriman.core.database.migrations.m007_check_depends import migrate_data, migrate_package_check_depends, steps
|
||||
from ahriman.models.package import Package
|
||||
|
||||
|
||||
def test_migration_check_depends() -> None:
|
||||
"""
|
||||
migration must not be empty
|
||||
"""
|
||||
assert steps
|
||||
|
||||
|
||||
def test_migrate_data(connection: Connection, configuration: Configuration, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must perform data migration
|
||||
"""
|
||||
depends_mock = mocker.patch("ahriman.core.database.migrations.m007_check_depends.migrate_package_check_depends")
|
||||
migrate_data(connection, configuration)
|
||||
depends_mock.assert_called_once_with(connection, configuration)
|
||||
|
||||
|
||||
def test_migrate_package_depends(connection: Connection, configuration: Configuration, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must update make and opt depends list
|
||||
"""
|
||||
mocker.patch("pathlib.Path.is_dir", return_value=True)
|
||||
mocker.patch("pathlib.Path.iterdir", return_value=[package_ahriman.packages[package_ahriman.base].filepath])
|
||||
package_mock = mocker.patch("ahriman.models.package.Package.from_archive", return_value=package_ahriman)
|
||||
|
||||
migrate_package_check_depends(connection, configuration)
|
||||
package_mock.assert_called_once_with(
|
||||
package_ahriman.packages[package_ahriman.base].filepath, pytest.helpers.anyvar(int), remote=None)
|
||||
connection.executemany.assert_called_once_with(pytest.helpers.anyvar(str, strict=True), [{
|
||||
"check_depends": package_ahriman.packages[package_ahriman.base].check_depends,
|
||||
"package": package_ahriman.base,
|
||||
}])
|
||||
|
||||
|
||||
def test_migrate_package_depends_skip(connection: Connection, configuration: Configuration,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must skip update make and opt depends list if no repository directory found
|
||||
"""
|
||||
mocker.patch("pathlib.Path.is_dir", return_value=False)
|
||||
migrate_package_check_depends(connection, configuration)
|
||||
connection.executemany.assert_not_called()
|
@ -22,7 +22,7 @@ def test_calculate_hash_small(resource_path_root: Path) -> None:
|
||||
must calculate checksum for path which is single chunk
|
||||
"""
|
||||
path = resource_path_root / "models" / "package_ahriman_srcinfo"
|
||||
assert HttpUpload.calculate_hash(path) == "79b0f84e0232ed34fd191a85c383ecc5"
|
||||
assert HttpUpload.calculate_hash(path) == "2635e2898452d594025517cfe529b1f2"
|
||||
|
||||
|
||||
def test_get_body_get_hashes() -> None:
|
||||
|
@ -30,7 +30,7 @@ def test_calculate_etag_small(resource_path_root: Path) -> None:
|
||||
must calculate checksum for path which is single chunk
|
||||
"""
|
||||
path = resource_path_root / "models" / "package_ahriman_srcinfo"
|
||||
assert S3.calculate_etag(path, _chunk_size) == "79b0f84e0232ed34fd191a85c383ecc5"
|
||||
assert S3.calculate_etag(path, _chunk_size) == "2635e2898452d594025517cfe529b1f2"
|
||||
|
||||
|
||||
def test_files_remove(s3_remote_objects: list[Any]) -> None:
|
||||
|
@ -115,6 +115,7 @@ def pyalpm_package_ahriman(aur_package_ahriman: AURPackage) -> MagicMock:
|
||||
type(mock).makedepends = PropertyMock(return_value=aur_package_ahriman.make_depends)
|
||||
type(mock).name = PropertyMock(return_value=aur_package_ahriman.name)
|
||||
type(mock).optdepends = PropertyMock(return_value=aur_package_ahriman.opt_depends)
|
||||
type(mock).checkdepends = PropertyMock(return_value=aur_package_ahriman.check_depends)
|
||||
type(mock).provides = PropertyMock(return_value=aur_package_ahriman.provides)
|
||||
type(mock).version = PropertyMock(return_value=aur_package_ahriman.version)
|
||||
type(mock).url = PropertyMock(return_value=aur_package_ahriman.url)
|
||||
@ -139,6 +140,7 @@ def pyalpm_package_description_ahriman(package_description_ahriman: PackageDescr
|
||||
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)
|
||||
|
@ -36,6 +36,10 @@ def test_depends_build(package_ahriman: Package, package_python_schedule: Packag
|
||||
set(package_ahriman.depends_build).intersection(package.make_depends)
|
||||
for package in package_ahriman.packages.values()
|
||||
)
|
||||
assert all(
|
||||
set(package_ahriman.depends_build).intersection(package.check_depends)
|
||||
for package in package_ahriman.packages.values()
|
||||
)
|
||||
|
||||
assert all(
|
||||
set(package_python_schedule.depends_build).intersection(package.depends)
|
||||
@ -53,7 +57,21 @@ def test_depends_build_with_version_and_overlap(mocker: MockerFixture, resource_
|
||||
mocker.patch("ahriman.models.package.Package._check_output", return_value=srcinfo)
|
||||
|
||||
package_gcc10 = Package.from_build(Path("local"), "x86_64")
|
||||
assert package_gcc10.depends_build == {"glibc", "doxygen", "binutils", "git", "libmpc", "python", "zstd"}
|
||||
assert package_gcc10.depends_build == {
|
||||
"glibc", "zstd", # depends
|
||||
"doxygen", "binutils", "git", "libmpc", "python", # make depends
|
||||
"dejagnu", "inetutils", # check depends
|
||||
}
|
||||
|
||||
|
||||
def test_depends_check(package_ahriman: Package) -> None:
|
||||
"""
|
||||
must return list of test dependencies
|
||||
"""
|
||||
assert all(
|
||||
set(package_ahriman.depends_check).intersection(package.check_depends)
|
||||
for package in package_ahriman.packages.values()
|
||||
)
|
||||
|
||||
|
||||
def test_depends_make(package_ahriman: Package) -> None:
|
||||
@ -183,16 +201,19 @@ def test_from_build_multiple_packages(mocker: MockerFixture, resource_path_root:
|
||||
depends=["gcc10-libs=10.3.0-2", "binutils>=2.28", "libmpc", "zstd"],
|
||||
make_depends=["binutils", "doxygen", "git", "libmpc", "python"],
|
||||
opt_depends=[],
|
||||
check_depends=["dejagnu", "inetutils"],
|
||||
),
|
||||
"gcc10-libs": PackageDescription(
|
||||
depends=["glibc>=2.27"],
|
||||
make_depends=["binutils", "doxygen", "git", "libmpc", "python"],
|
||||
opt_depends=[],
|
||||
check_depends=["dejagnu", "inetutils"],
|
||||
),
|
||||
"gcc10-fortran": PackageDescription(
|
||||
depends=["gcc10=10.3.0-2"],
|
||||
make_depends=["binutils", "doxygen", "git", "libmpc", "python"],
|
||||
opt_depends=[],
|
||||
check_depends=["dejagnu", "inetutils"],
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,9 @@
|
||||
"resultcount": 1,
|
||||
"results": [
|
||||
{
|
||||
"CheckDepends": [
|
||||
"python-pytest"
|
||||
],
|
||||
"Depends": [
|
||||
"devtools",
|
||||
"git",
|
||||
|
@ -5,6 +5,7 @@ pkgbase = ahriman
|
||||
url = https://github.com/arcan1s/ahriman
|
||||
arch = any
|
||||
license = GPL3
|
||||
checkdepends = python-pytest
|
||||
makedepends = python-build
|
||||
makedepends = python-installer
|
||||
makedepends = python-wheel
|
||||
|
Reference in New Issue
Block a user