do not update unknown status

This commit is contained in:
Evgenii Alekseev 2024-05-20 17:35:45 +03:00
parent ccb6aaee39
commit 89f1b6ea0f
2 changed files with 25 additions and 10 deletions

View File

@ -278,7 +278,7 @@ class Client:
Args: Args:
package_base(str): package base to update 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: def set_failed(self, package_base: str) -> None:
""" """
@ -287,7 +287,7 @@ class Client:
Args: Args:
package_base(str): package base to update 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: def set_pending(self, package_base: str) -> None:
""" """
@ -296,7 +296,7 @@ class Client:
Args: Args:
package_base(str): package base to update 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: def set_success(self, package: Package) -> None:
""" """
@ -305,16 +305,19 @@ class Client:
Args: Args:
package(Package): current package properties 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: 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: Args:
package(Package): current package properties 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: def status_get(self) -> InternalStatus:
""" """

View File

@ -240,20 +240,32 @@ def test_set_success(client: Client, package_ahriman: Package, mocker: MockerFix
""" """
must set success status to the package 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) 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: def test_set_unknown(client: Client, package_ahriman: Package, mocker: MockerFixture) -> None:
""" """
must add new package with unknown status 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) 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: def test_status_get(client: Client) -> None: