mirror of
https://github.com/arcan1s/ahriman.git
synced 2026-03-16 14:53:38 +00:00
fix: preserve hold status on status updates
This commit is contained in:
@@ -168,9 +168,9 @@ class Watcher(LazyLogging):
|
|||||||
package_base(str): package base to update
|
package_base(str): package base to update
|
||||||
status(BuildStatusEnum): new build status
|
status(BuildStatusEnum): new build status
|
||||||
"""
|
"""
|
||||||
package, _ = self.package_get(package_base)
|
package, current_status = self.package_get(package_base)
|
||||||
with self._lock:
|
with self._lock:
|
||||||
self._known[package_base] = (package, BuildStatus(status))
|
self._known[package_base] = (package, BuildStatus(status, is_held=current_status.is_held))
|
||||||
self.client.package_status_update(package_base, status)
|
self.client.package_status_update(package_base, status)
|
||||||
|
|
||||||
def package_update(self, package: Package, status: BuildStatusEnum) -> None:
|
def package_update(self, package: Package, status: BuildStatusEnum) -> None:
|
||||||
@@ -182,7 +182,8 @@ class Watcher(LazyLogging):
|
|||||||
status(BuildStatusEnum): new build status
|
status(BuildStatusEnum): new build status
|
||||||
"""
|
"""
|
||||||
with self._lock:
|
with self._lock:
|
||||||
self._known[package.base] = (package, BuildStatus(status))
|
_, current_status = self._known.get(package.base, (package, BuildStatus()))
|
||||||
|
self._known[package.base] = (package, BuildStatus(status, is_held=current_status.is_held))
|
||||||
self.client.package_update(package, status)
|
self.client.package_update(package, status)
|
||||||
|
|
||||||
def status_update(self, status: BuildStatusEnum) -> None:
|
def status_update(self, status: BuildStatusEnum) -> None:
|
||||||
|
|||||||
@@ -131,6 +131,19 @@ def test_package_status_update(watcher: Watcher, package_ahriman: Package, mocke
|
|||||||
assert status.status == BuildStatusEnum.Success
|
assert status.status == BuildStatusEnum.Success
|
||||||
|
|
||||||
|
|
||||||
|
def test_package_status_update_preserves_hold(watcher: Watcher, package_ahriman: Package,
|
||||||
|
mocker: MockerFixture) -> None:
|
||||||
|
"""
|
||||||
|
must preserve hold status on package status update
|
||||||
|
"""
|
||||||
|
mocker.patch("ahriman.core.status.local_client.LocalClient.package_status_update")
|
||||||
|
watcher._known = {package_ahriman.base: (package_ahriman, BuildStatus(is_held=True))}
|
||||||
|
|
||||||
|
watcher.package_status_update(package_ahriman.base, BuildStatusEnum.Success)
|
||||||
|
_, status = watcher._known[package_ahriman.base]
|
||||||
|
assert status.is_held is True
|
||||||
|
|
||||||
|
|
||||||
def test_package_status_update_unknown(watcher: Watcher, package_ahriman: Package) -> None:
|
def test_package_status_update_unknown(watcher: Watcher, package_ahriman: Package) -> None:
|
||||||
"""
|
"""
|
||||||
must fail on unknown package status update only
|
must fail on unknown package status update only
|
||||||
@@ -150,6 +163,18 @@ def test_package_update(watcher: Watcher, package_ahriman: Package, mocker: Mock
|
|||||||
cache_mock.assert_called_once_with(package_ahriman, pytest.helpers.anyvar(int))
|
cache_mock.assert_called_once_with(package_ahriman, pytest.helpers.anyvar(int))
|
||||||
|
|
||||||
|
|
||||||
|
def test_package_update_preserves_hold(watcher: Watcher, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||||
|
"""
|
||||||
|
must preserve hold status on package update
|
||||||
|
"""
|
||||||
|
mocker.patch("ahriman.core.status.local_client.LocalClient.package_update")
|
||||||
|
watcher._known = {package_ahriman.base: (package_ahriman, BuildStatus(is_held=True))}
|
||||||
|
|
||||||
|
watcher.package_update(package_ahriman, BuildStatusEnum.Success)
|
||||||
|
_, status = watcher._known[package_ahriman.base]
|
||||||
|
assert status.is_held is True
|
||||||
|
|
||||||
|
|
||||||
def test_status_update(watcher: Watcher) -> None:
|
def test_status_update(watcher: Watcher) -> None:
|
||||||
"""
|
"""
|
||||||
must update service status
|
must update service status
|
||||||
|
|||||||
Reference in New Issue
Block a user