PR#3542: cli: fix nvr sorting in list-builds

Merges #3542
https://pagure.io/koji/pull-request/3542

Fixes: #3416
https://pagure.io/koji/issue/3416
[koji list-builds] the output NVR should be sorted by version instead by string
This commit is contained in:
Tomas Kopecek 2022-11-07 14:34:12 +01:00
commit 143b5ecf3f
2 changed files with 15 additions and 15 deletions

View file

@ -3315,7 +3315,7 @@ def anon_handle_list_builds(goptions, session, args):
parser.add_option("--volume", help="List builds by volume ID")
parser.add_option("-k", "--sort-key", action="append", metavar='FIELD',
default=[], help="Sort the list by the named field. Allowed sort keys: "
"nvr, owner_name, state")
"build_id, owner_name, state")
parser.add_option("-r", "--reverse", action="store_true", default=False,
help="Print the list in reverse order")
parser.add_option("--quiet", action="store_true", default=goptions.quiet,
@ -3404,10 +3404,10 @@ def anon_handle_list_builds(goptions, session, args):
else:
parser.error("Filter must be provided for list")
if not options.sort_key:
options.sort_key = ['nvr']
options.sort_key = ['build_id']
else:
for s_key in options.sort_key:
if s_key not in ['nvr', 'owner_name', 'state']:
if s_key not in ['build_id', 'owner_name', 'state']:
warn("Invalid sort_key: %s." % s_key)
data = sorted(data, key=lambda b: [b.get(k) for k in options.sort_key],

View file

@ -195,9 +195,9 @@ build-test-1-12 kojiadmin CANCE
@mock.patch('sys.stdout', new_callable=StringIO)
def test_list_builds_opt_owner_sorted_nvr(self, stdout):
expected_output = """build-test-1-12 kojiadmin CANCELED
test-build-11-12 kojiadmin COMPLETE
expected_output = """test-build-11-12 kojiadmin COMPLETE
test-build-8-12 kojiadmin DELETED
build-test-1-12 kojiadmin CANCELED
"""
self.session.getUser.return_value = self.user_info
self.session.listBuilds.return_value = [self.list_build[0], self.list_build[1],
@ -261,9 +261,9 @@ build-test-1-12 kojiadmin CANCE
def test_list_builds_opt_prefix_sorted_owner(self, stdout):
expected_output = """test-build-11-12 kojiadmin COMPLETE
test-build-8-12 kojiadmin DELETED
build-test-1-12 kojiadmin CANCELED
test-build-11-9 kojitest COMPLETE
test-build-10-12 kojitest CANCELED
build-test-1-12 kojiadmin CANCELED
"""
self.session.listBuilds.return_value = self.list_build
rv = anon_handle_list_builds(self.options, self.session, ['--prefix', 'test-build',
@ -280,11 +280,11 @@ test-build-10-12 kojitest CANCE
@mock.patch('sys.stdout', new_callable=StringIO)
def test_list_builds_opt_prefix_sorted_owner_nvr(self, stdout):
expected_output = """build-test-1-12 kojiadmin CANCELED
test-build-11-12 kojiadmin COMPLETE
expected_output = """test-build-11-12 kojiadmin COMPLETE
test-build-8-12 kojiadmin DELETED
test-build-10-12 kojitest CANCELED
test-build-11-9 kojitest COMPLETE
test-build-10-12 kojitest CANCELED
build-test-1-12 kojiadmin CANCELED
"""
self.session.listBuilds.return_value = self.list_build
rv = anon_handle_list_builds(self.options, self.session, ['--prefix', 'test-build',
@ -302,9 +302,9 @@ test-build-11-9 kojitest COMPL
@mock.patch('sys.stdout', new_callable=StringIO)
def test_list_builds_opt_owner_reverse(self, stdout):
expected_output = """test-build-8-12 kojiadmin DELETED
expected_output = """build-test-1-12 kojiadmin CANCELED
test-build-8-12 kojiadmin DELETED
test-build-11-12 kojiadmin COMPLETE
build-test-1-12 kojiadmin CANCELED
"""
self.session.getUser.return_value = self.user_info
self.session.listBuilds.return_value = [self.list_build[0], self.list_build[1],
@ -376,8 +376,8 @@ test-build-8-12 kojiadmin DELET
@mock.patch('sys.stdout', new_callable=StringIO)
def test_list_builds_volume_not_int(self, stdout):
volume = 'test-volume'
expected_output = """build-test-1-12 kojiadmin CANCELED
test-build-11-12 kojiadmin COMPLETE
expected_output = """test-build-11-12 kojiadmin COMPLETE
build-test-1-12 kojiadmin CANCELED
"""
self.session.listBuilds.return_value = [self.list_build[0], self.list_build[4]]
self.session.listVolumes.return_value = [{'id': 0, 'name': 'DEFAULT'},
@ -396,8 +396,8 @@ test-build-11-12 kojiadmin COMPL
@mock.patch('sys.stdout', new_callable=StringIO)
def test_list_builds_volume_int(self, stdout):
volume = 1
expected_output = """build-test-1-12 kojiadmin CANCELED
test-build-11-12 kojiadmin COMPLETE
expected_output = """test-build-11-12 kojiadmin COMPLETE
build-test-1-12 kojiadmin CANCELED
"""
self.session.listBuilds.return_value = [self.list_build[0], self.list_build[4]]
rv = anon_handle_list_builds(self.options, self.session, ['--volume', volume])