From 4ade7cddeaa2ba1658d91ed71df1d4cd7958e55a Mon Sep 17 00:00:00 2001 From: Jana Cupova Date: Mar 21 2023 13:50:46 +0000 Subject: Fix backward compatibility Fixes: https://pagure.io/koji/issue/3715 --- diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index 2519060..ddb3579 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -6137,6 +6137,11 @@ def handle_cancel(goptions, session, args): if len(args) == 0: parser.error("You must specify at least one task id or build") activate_session(session, goptions) + older_hub = False + hub_version = session.getKojiVersion() + v = tuple([int(x) for x in hub_version.split('.')]) + if v < (1, 33, 0): + older_hub = True tlist = [] blist = [] for arg in args: @@ -6163,7 +6168,10 @@ def handle_cancel(goptions, session, args): for task_id in tlist: results.append(remote_fn(task_id, **opts)) for build in blist: - results.append(m.cancelBuild(build, strict=True)) + if not older_hub: + results.append(m.cancelBuild(build, strict=True)) + else: + results.append(m.cancelBuild(build)) err = False for r in results: diff --git a/tests/test_cli/test_cancel.py b/tests/test_cli/test_cancel.py index c8f5056..16ec5d3 100644 --- a/tests/test_cli/test_cancel.py +++ b/tests/test_cli/test_cancel.py @@ -32,6 +32,7 @@ class TestCancel(utils.CliTestCase): %s: error: {message} """ % (self.progname, self.progname) + self.session.getKojiVersion.return_value = '1.33.0' def test_anon_cancel(self): args = ['123'] @@ -152,6 +153,23 @@ No such build: '%s' self.session.cancelTaskFull.assert_not_called() self.session.cancelBuild.assert_called_once_with(args[1], strict=True) + def test_non_exist_build_and_task_older_hub(self): + self.session.getKojiVersion.return_value = '1.32.0' + args = ['11111', 'nvr-1-30.1'] + expected_warn = """No such task: %s +""" % (args[0]) + mcall = self.session.multicall.return_value.__enter__.return_value + mcall.cancelTask.return_value = self.__vm( + {'faultCode': 1000, 'faultString': 'No such task: %s' % args[0]}) + mcall.cancelBuild.return_value = self.__vm(False) + rv = handle_cancel(self.options, self.session, args) + self.assertEqual(rv, 1) + self.assert_console_message(self.stderr, expected_warn) + self.activate_session_mock.assert_called_once_with(self.session, self.options) + self.session.cancelTask.assert_called_once_with(int(args[0])) + self.session.cancelTaskFull.assert_not_called() + self.session.cancelBuild.assert_called_once_with(args[1]) + def test_cancel_help(self): self.assert_help( handle_cancel,