mirror of
https://github.com/arcan1s/ahriman.git
synced 2026-10-23 20:25:00 +00:00
fix: handle is_held flag in all update processes
Previos implementation has ignored this flag in dependencies checks, local package update and so on
This commit is contained in:
1 parent
47c39f93b7
commit
4537969d5d
3 files changed
+81
-3
No files matched your search
@@ -14,6 +14,20 @@ from ahriman.models.package_source import PackageSource
|
||||
from ahriman.models.remote_source import RemoteSource
|
||||
|
||||
|
||||
def test_updates_ignored(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
package_python_schedule: Package, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must combine configured ignored packages and held packages only
|
||||
"""
|
||||
update_handler._ignore_list = ["ignored-package"]
|
||||
mocker.patch("ahriman.core.status.local_client.LocalClient.package_get", return_value=[
|
||||
(package_ahriman, BuildStatus(is_held=True)),
|
||||
(package_python_schedule, BuildStatus(is_held=False)),
|
||||
])
|
||||
|
||||
assert update_handler._updates_ignored() == {"ignored-package", package_ahriman.base}
|
||||
|
||||
|
||||
def test_updates_aur(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
@@ -194,6 +208,18 @@ def test_updates_dependencies(update_handler: UpdateHandler, package_ahriman: Pa
|
||||
pytest.helpers.anyvar(str, True))
|
||||
|
||||
|
||||
def test_updates_dependencies_ignore(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must skip held packages when checking broken dependencies
|
||||
"""
|
||||
mocker.patch("ahriman.core.status.local_client.LocalClient.package_get",
|
||||
return_value=[(package_ahriman, BuildStatus(is_held=True))])
|
||||
mocker.patch("ahriman.core.repository.update_handler.UpdateHandler.packages", return_value=[package_ahriman])
|
||||
|
||||
assert update_handler.updates_dependencies([]) == []
|
||||
|
||||
|
||||
def test_updates_dependencies_skip_unknown(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
@@ -249,6 +275,19 @@ def test_updates_local(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
calculate_version=True)
|
||||
|
||||
|
||||
def test_updates_local_ignore(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must skip held packages before fetching local sources
|
||||
"""
|
||||
mocker.patch("ahriman.core.status.local_client.LocalClient.package_get",
|
||||
return_value=[(package_ahriman, BuildStatus(is_held=True))])
|
||||
mocker.patch("ahriman.core.repository.update_handler.UpdateHandler.packages", return_value=[package_ahriman])
|
||||
mocker.patch("pathlib.Path.iterdir", return_value=[Path(package_ahriman.base)])
|
||||
|
||||
assert update_handler.updates_local(vcs=True) == []
|
||||
|
||||
|
||||
def test_updates_local_ignore_vcs(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
@@ -306,6 +345,22 @@ def test_updates_local_with_failures(update_handler: UpdateHandler, package_ahri
|
||||
assert not update_handler.updates_local(vcs=True)
|
||||
|
||||
|
||||
def test_updates_local_held_metadata(update_handler: UpdateHandler, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must respect the held base even when the source directory has a different name
|
||||
"""
|
||||
package_ahriman.remote = RemoteSource(source=PackageSource.Local)
|
||||
mocker.patch.object(update_handler.reporter, "package_get",
|
||||
return_value=[(package_ahriman, BuildStatus(is_held=True))])
|
||||
mocker.patch.object(update_handler, "packages", return_value=[package_ahriman])
|
||||
mocker.patch("pathlib.Path.iterdir", return_value=[Path("different-base")])
|
||||
mocker.patch("ahriman.core.build_tools.sources.Sources.fetch")
|
||||
mocker.patch("ahriman.models.package.Package.from_build", return_value=package_ahriman)
|
||||
|
||||
assert update_handler.updates_local(vcs=True) == []
|
||||
|
||||
|
||||
def test_updates_manual_clear(update_handler: UpdateHandler, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
requesting manual updates must clear packages directory
|
||||
|
||||
Reference in new issue
Block a user