ArgumentParser instead of ArgumentParser in sidetag CLI plugin

Fixes: https://pagure.io/koji/issue/3739
This commit is contained in:
Jana Cupova 2023-03-16 09:50:29 +01:00 committed by Tomas Kopecek
parent 3f3c56fd75
commit 2139b237d0
3 changed files with 62 additions and 59 deletions

View file

@ -5,7 +5,7 @@
from __future__ import absolute_import
from argparse import ArgumentParser
from optparse import OptionParser
import koji
from koji.plugin import export_cli
@ -16,18 +16,21 @@ from koji_cli.lib import activate_session, arg_filter
@export_cli
def handle_add_sidetag(options, session, args):
"Create sidetag"
usage = "%(prog)s add-sidetag [options] <basetag>"
usage = "%prog add-sidetag [options] <basetag>"
usage += "\n(Specify the --help global option for a list of other help options)"
parser = ArgumentParser(usage=usage)
parser.add_argument("basetag", help="name of basetag")
parser.add_argument("-q", "--quiet", action="store_true", help="Do not print tag name",
default=options.quiet)
parser.add_argument("-w", "--wait", action="store_true", help="Wait until repo is ready.")
parser.add_argument("--debuginfo", action="store_true",
help="Buildroot repo will contain debuginfos")
parser.add_argument("--suffix", action="store", help="Suffix from hub-supported ones")
parser = OptionParser(usage=usage)
parser.add_option("-q", "--quiet", action="store_true", help="Do not print tag name",
default=options.quiet)
parser.add_option("-w", "--wait", action="store_true", help="Wait until repo is ready.")
parser.add_option("--debuginfo", action="store_true",
help="Buildroot repo will contain debuginfos")
parser.add_option("--suffix", action="store", help="Suffix from hub-supported ones")
opts = parser.parse_args(args)
(opts, args) = parser.parse_args(args)
if len(args) != 1:
parser.error("Only argument is basetag")
basetag = args[0]
activate_session(session, options)
@ -35,7 +38,7 @@ def handle_add_sidetag(options, session, args):
if opts.suffix:
kwargs['suffix'] = opts.suffix
try:
tag = session.createSideTag(opts.basetag, **kwargs)
tag = session.createSideTag(basetag, **kwargs)
except koji.ActionNotAllowed:
parser.error("Policy violation")
except koji.ParameterError as ex:
@ -57,16 +60,18 @@ def handle_add_sidetag(options, session, args):
@export_cli
def handle_remove_sidetag(options, session, args):
"Remove sidetag"
usage = "%(prog)s remove-sidetag [options] <sidetag> ..."
usage = "%prog remove-sidetag [options] <sidetag> ..."
usage += "\n(Specify the --help global option for a list of other help options)"
parser = ArgumentParser(usage=usage)
parser.add_argument("sidetags", help="name of sidetag", nargs="+")
opts = parser.parse_args(args)
parser = OptionParser(usage=usage)
(opts, args) = parser.parse_args(args)
if len(args) < 1:
parser.error("Sidetag argument is required")
activate_session(session, options)
session.multicall = True
for sidetag in opts.sidetags:
for sidetag in args:
session.removeSideTag(sidetag)
session.multiCall(strict=True)
@ -74,14 +79,17 @@ def handle_remove_sidetag(options, session, args):
@export_cli
def handle_list_sidetags(options, session, args):
"List sidetags"
usage = "%(prog)s list-sidetags [options]"
usage = "%prog list-sidetags [options]"
usage += "\n(Specify the --help global option for a list of other help options)"
parser = ArgumentParser(usage=usage)
parser.add_argument("--basetag", action="store", help="Filter on basetag")
parser.add_argument("--user", action="store", help="Filter on user")
parser.add_argument("--mine", action="store_true", help="Filter on user")
parser = OptionParser(usage=usage)
parser.add_option("--basetag", action="store", help="Filter on basetag")
parser.add_option("--user", action="store", help="Filter on user")
parser.add_option("--mine", action="store_true", help="Filter on user")
opts = parser.parse_args(args)
(opts, args) = parser.parse_args(args)
if len(args) > 0:
parser.error("This command takes no arguments")
if opts.mine and opts.user:
parser.error("Specify only one from --user --mine")
@ -99,19 +107,22 @@ def handle_list_sidetags(options, session, args):
@export_cli
def handle_edit_sidetag(options, session, args):
"Edit sidetag"
usage = "%(prog)s edit-sidetag [options] <sidetag>"
usage = "%prog edit-sidetag [options] <sidetag>"
usage += "\n(Specify the --help global option for a list of other help options)"
parser = ArgumentParser(usage=usage)
parser.add_argument("sidetag", help="name of sidetag")
parser.add_argument("--debuginfo", action="store_true", default=None,
help="Generate debuginfo repository")
parser.add_argument("--no-debuginfo", action="store_false", dest="debuginfo")
parser.add_argument("--rpm-macro", action="append", default=[], metavar="key=value",
dest="rpm_macros", help="Set tag-specific rpm macros")
parser.add_argument("--remove-rpm-macro", action="append", default=[], metavar="key",
dest="remove_rpm_macros", help="Remove rpm macros")
parser = OptionParser(usage=usage)
parser.add_option("--debuginfo", action="store_true", default=None,
help="Generate debuginfo repository")
parser.add_option("--no-debuginfo", action="store_false", dest="debuginfo")
parser.add_option("--rpm-macro", action="append", default=[], metavar="key=value",
dest="rpm_macros", help="Set tag-specific rpm macros")
parser.add_option("--remove-rpm-macro", action="append", default=[], metavar="key",
dest="remove_rpm_macros", help="Remove rpm macros")
opts = parser.parse_args(args)
(opts, args) = parser.parse_args(args)
if len(args) != 1:
parser.error("Only argument is sidetag")
sidetag = args[0]
if opts.debuginfo is None and not opts.rpm_macros and not opts.remove_rpm_macros:
parser.error("At least one option needs to be specified")
@ -133,4 +144,4 @@ def handle_edit_sidetag(options, session, args):
if opts.remove_rpm_macros:
kwargs['remove_rpm_macros'] = opts.remove_rpm_macros
session.editSideTag(opts.sidetag, **kwargs)
session.editSideTag(sidetag, **kwargs)

View file

@ -50,18 +50,15 @@ class TestSideTagCLI(unittest.TestCase):
with self.assertRaises(SystemExit) as ex:
sidetag.handle_add_sidetag(self.options, self.session, ['--help'])
std_output = get_stdout_value(stdout).decode('utf-8')
expected_help = """usage: %s add-sidetag [options] <basetag>
expected_help = """Usage: %s add-sidetag [options] <basetag>
(Specify the --help global option for a list of other help options)
positional arguments:
basetag name of basetag
options:
Options:
-h, --help show this help message and exit
-q, --quiet Do not print tag name
-w, --wait Wait until repo is ready.
--debuginfo Buildroot repo will contain debuginfos
--suffix SUFFIX Suffix from hub-supported ones
--suffix=SUFFIX Suffix from hub-supported ones
""" % self.progname
self.assertMultiLineEqual(std_output, expected_help)
self.assertEqual('0', str(ex.exception))
@ -71,19 +68,16 @@ options:
with self.assertRaises(SystemExit) as ex:
sidetag.handle_edit_sidetag(self.options, self.session, ['--help'])
std_output = get_stdout_value(stdout).decode('utf-8')
expected_help = """usage: %s edit-sidetag [options] <sidetag>
expected_help = """Usage: %s edit-sidetag [options] <sidetag>
(Specify the --help global option for a list of other help options)
positional arguments:
sidetag name of sidetag
options:
Options:
-h, --help show this help message and exit
--debuginfo Generate debuginfo repository
--no-debuginfo
--rpm-macro key=value
--no-debuginfo
--rpm-macro=key=value
Set tag-specific rpm macros
--remove-rpm-macro key
--remove-rpm-macro=key
Remove rpm macros
""" % self.progname
self.assertMultiLineEqual(std_output, expected_help)
@ -94,13 +88,13 @@ options:
with self.assertRaises(SystemExit) as ex:
sidetag.handle_list_sidetags(self.options, self.session, ['--help'])
std_output = get_stdout_value(stdout).decode('utf-8')
expected_help = """usage: %s list-sidetags [options]
expected_help = """Usage: %s list-sidetags [options]
(Specify the --help global option for a list of other help options)
options:
Options:
-h, --help show this help message and exit
--basetag BASETAG Filter on basetag
--user USER Filter on user
--basetag=BASETAG Filter on basetag
--user=USER Filter on user
--mine Filter on user
""" % self.progname
self.assertMultiLineEqual(std_output, expected_help)
@ -111,13 +105,10 @@ options:
with self.assertRaises(SystemExit) as ex:
sidetag.handle_remove_sidetag(self.options, self.session, ['--help'])
std_output = get_stdout_value(stdout).decode('utf-8')
expected_help = """usage: %s remove-sidetag [options] <sidetag> ...
expected_help = """Usage: %s remove-sidetag [options] <sidetag> ...
(Specify the --help global option for a list of other help options)
positional arguments:
sidetags name of sidetag
options:
Options:
-h, --help show this help message and exit
""" % self.progname
self.assertMultiLineEqual(std_output, expected_help)

View file

@ -57,7 +57,8 @@ commands =
tests/test_plugins/test_runroot_builder.py \
tests/test_plugins/test_save_failed_tree_builder.py \
tests/test_plugins/test_runroot_cli.py \
tests/test_plugins/test_save_failed_tree_cli.py}
tests/test_plugins/test_save_failed_tree_cli.py \
tests/test_plugins/test_sidetag_cli.py}
{envbindir}/coverage2 report
{envbindir}/coverage2 html -d {toxinidir}/htmlcov/py2