From 0d806e3471db3f1cb87f93c21aac38336ee0c307 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sun, 17 Oct 2021 06:38:49 +0300 Subject: [PATCH] add repo-status-update subcommand --- src/ahriman/application/ahriman.py | 16 +++++++++++++++ tests/ahriman/application/test_ahriman.py | 24 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index 6d1695d6..005f1e34 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -85,6 +85,7 @@ def _parser() -> argparse.ArgumentParser: _set_repo_report_parser(subparsers) _set_repo_setup_parser(subparsers) _set_repo_sign_parser(subparsers) + _set_repo_status_update_parser(subparsers) _set_repo_sync_parser(subparsers) _set_repo_update_parser(subparsers) _set_user_add_parser(subparsers) @@ -408,6 +409,21 @@ def _set_repo_sign_parser(root: SubParserAction) -> argparse.ArgumentParser: return parser +def _set_repo_status_update_parser(root: SubParserAction) -> argparse.ArgumentParser: + """ + add parser for repository status update subcommand + :param root: subparsers for the commands + :return: created argument parser + """ + parser = root.add_parser("repo-status-update", help="update repository status", + description="update repository status on the status page", formatter_class=_formatter) + parser.add_argument("-s", "--status", help="new status", + type=BuildStatusEnum, choices=BuildStatusEnum, default=BuildStatusEnum.Success) + parser.set_defaults(handler=handlers.StatusUpdate, action=Action.Update, lock=None, no_report=True, package=[], + quiet=True, unsafe=True) + return parser + + def _set_repo_sync_parser(root: SubParserAction) -> argparse.ArgumentParser: """ add parser for repository sync subcommand diff --git a/tests/ahriman/application/test_ahriman.py b/tests/ahriman/application/test_ahriman.py index 8ffbd5a0..d404af6c 100644 --- a/tests/ahriman/application/test_ahriman.py +++ b/tests/ahriman/application/test_ahriman.py @@ -351,6 +351,30 @@ def test_subparsers_repo_sign_architecture(parser: argparse.ArgumentParser) -> N assert args.architecture == ["x86_64"] +def test_subparsers_repo_status_update(parser: argparse.ArgumentParser) -> None: + """ + re[p-status-update command must imply action, lock, no-report, package, quiet and unsafe + """ + args = parser.parse_args(["-a", "x86_64", "package-status-update"]) + assert args.architecture == ["x86_64"] + assert args.action == Action.Update + assert args.lock is None + assert args.no_report + assert not args.package + assert args.quiet + assert args.unsafe + + +def test_subparsers_repo_status_update_option_status(parser: argparse.ArgumentParser) -> None: + """ + repo-status-update command must convert status option to buildstatusenum instance + """ + args = parser.parse_args(["-a", "x86_64", "repo-status-update"]) + assert isinstance(args.status, BuildStatusEnum) + args = parser.parse_args(["-a", "x86_64", "repo-status-update", "--status", "failed"]) + assert isinstance(args.status, BuildStatusEnum) + + def test_subparsers_repo_sync_architecture(parser: argparse.ArgumentParser) -> None: """ repo-sync command must correctly parse architecture list