From 3e8e54857f249357b86609fff170b5d75f4cd65f Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Fri, 2 Apr 2021 01:26:46 +0300 Subject: [PATCH] add ability to remove package from status page --- src/ahriman/application/ahriman.py | 1 + .../application/handlers/status_update.py | 5 +++-- .../handlers/test_handler_status_update.py | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index 12902b0b..980ab96a 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -226,6 +226,7 @@ def _set_status_update_parser(root: SubParserAction) -> argparse.ArgumentParser: nargs="*") parser.add_argument("--status", help="new status", choices=[value.value for value in BuildStatusEnum], default="success") + parser.add_argument("--remove", help="remove package status page", action="store_true") parser.set_defaults(handler=handlers.StatusUpdate, lock=None, no_report=True, unsafe=True) return parser diff --git a/src/ahriman/application/handlers/status_update.py b/src/ahriman/application/handlers/status_update.py index f120fd61..64bcb2cd 100644 --- a/src/ahriman/application/handlers/status_update.py +++ b/src/ahriman/application/handlers/status_update.py @@ -19,7 +19,7 @@ # import argparse -from typing import Type +from typing import Callable, Type from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler @@ -42,10 +42,11 @@ class StatusUpdate(Handler): """ client = Application(architecture, configuration).repository.reporter status = BuildStatusEnum(args.status) + callback: Callable[[str], None] = lambda p: client.remove(p) if args.remove else client.update(p, status) if args.package: # update packages statuses for package in args.package: - client.update(package, status) + callback(package) else: # update service status client.update_self(status) diff --git a/tests/ahriman/application/handlers/test_handler_status_update.py b/tests/ahriman/application/handlers/test_handler_status_update.py index 84087a1b..0e6ebe39 100644 --- a/tests/ahriman/application/handlers/test_handler_status_update.py +++ b/tests/ahriman/application/handlers/test_handler_status_update.py @@ -11,6 +11,7 @@ from ahriman.models.package import Package def _default_args(args: argparse.Namespace) -> argparse.Namespace: args.status = BuildStatusEnum.Success.value args.package = None + args.remove = False return args @@ -38,3 +39,18 @@ def test_run_packages(args: argparse.Namespace, configuration: Configuration, pa StatusUpdate.run(args, "x86_64", configuration) update_mock.assert_called_once() + + +def test_run_remove(args: argparse.Namespace, configuration: Configuration, package_ahriman: Package, + mocker: MockerFixture) -> None: + """ + must remove package from status page + """ + args = _default_args(args) + args.package = [package_ahriman.base] + args.remove = True + mocker.patch("pathlib.Path.mkdir") + update_mock = mocker.patch("ahriman.core.status.client.Client.remove") + + StatusUpdate.run(args, "x86_64", configuration) + update_mock.assert_called_once()