diff --git a/src/ahriman/core/status/client.py b/src/ahriman/core/status/client.py index 943ccf31..c8a3398e 100644 --- a/src/ahriman/core/status/client.py +++ b/src/ahriman/core/status/client.py @@ -278,7 +278,7 @@ class Client: Args: package_base(str): package base to update """ - return self.package_status_update(package_base, BuildStatusEnum.Building) + self.package_status_update(package_base, BuildStatusEnum.Building) def set_failed(self, package_base: str) -> None: """ @@ -287,7 +287,7 @@ class Client: Args: package_base(str): package base to update """ - return self.package_status_update(package_base, BuildStatusEnum.Failed) + self.package_status_update(package_base, BuildStatusEnum.Failed) def set_pending(self, package_base: str) -> None: """ @@ -296,7 +296,7 @@ class Client: Args: package_base(str): package base to update """ - return self.package_status_update(package_base, BuildStatusEnum.Pending) + self.package_status_update(package_base, BuildStatusEnum.Pending) def set_success(self, package: Package) -> None: """ @@ -305,16 +305,19 @@ class Client: Args: package(Package): current package properties """ - return self.package_update(package, BuildStatusEnum.Success) + self.package_update(package, BuildStatusEnum.Success) def set_unknown(self, package: Package) -> None: """ - set package status to unknown + set package status to unknown. Unlike other methods, this method also checks if package is known, + and - in case if it is - it silently skips updatd Args: package(Package): current package properties """ - return self.package_update(package, BuildStatusEnum.Unknown) + if self.package_get(package.base): + return # skip update in case if package is already known + self.package_update(package, BuildStatusEnum.Unknown) def status_get(self) -> InternalStatus: """ diff --git a/tests/ahriman/core/status/test_client.py b/tests/ahriman/core/status/test_client.py index 8284f10e..51b151f3 100644 --- a/tests/ahriman/core/status/test_client.py +++ b/tests/ahriman/core/status/test_client.py @@ -240,20 +240,32 @@ def test_set_success(client: Client, package_ahriman: Package, mocker: MockerFix """ must set success status to the package """ - add_mock = mocker.patch("ahriman.core.status.Client.package_update") + update_mock = mocker.patch("ahriman.core.status.Client.package_update") client.set_success(package_ahriman) - add_mock.assert_called_once_with(package_ahriman, BuildStatusEnum.Success) + update_mock.assert_called_once_with(package_ahriman, BuildStatusEnum.Success) def test_set_unknown(client: Client, package_ahriman: Package, mocker: MockerFixture) -> None: """ must add new package with unknown status """ - add_mock = mocker.patch("ahriman.core.status.Client.package_update") + mocker.patch("ahriman.core.status.Client.package_get", return_value=[]) + update_mock = mocker.patch("ahriman.core.status.Client.package_update") client.set_unknown(package_ahriman) - add_mock.assert_called_once_with(package_ahriman, BuildStatusEnum.Unknown) + update_mock.assert_called_once_with(package_ahriman, BuildStatusEnum.Unknown) + + +def test_set_unknown_skip(client: Client, package_ahriman: Package, mocker: MockerFixture) -> None: + """ + must skip unknown status update in case if pacakge is already known + """ + mocker.patch("ahriman.core.status.Client.package_get", return_value=[(package_ahriman, None)]) + update_mock = mocker.patch("ahriman.core.status.Client.package_update") + client.set_unknown(package_ahriman) + + update_mock.assert_not_called() def test_status_get(client: Client) -> None: