CLI download-task more specific info for not CLOSED tasks.
Fixes: https://pagure.io/koji/issue/3487
This commit is contained in:
parent
ffb7af26d8
commit
d2c580a3f8
2 changed files with 112 additions and 15 deletions
|
|
@ -6940,11 +6940,19 @@ def anon_handle_download_task(options, session, args):
|
|||
required_tasks[task["id"]] = task
|
||||
|
||||
for task_id in required_tasks:
|
||||
if required_tasks[task_id]["state"] != koji.TASK_STATES.get("CLOSED"):
|
||||
task_state = koji.TASK_STATES.get(required_tasks[task_id]["state"])
|
||||
if task_state != "CLOSED":
|
||||
if task_id == base_task_id:
|
||||
error("Task %d has not finished yet." % task_id)
|
||||
start_error_msg = "Task"
|
||||
else:
|
||||
error("Child task %d has not finished yet." % task_id)
|
||||
start_error_msg = "Child task"
|
||||
if task_state == 'FAILED':
|
||||
error("%s %d failed. You can use save-failed-tree plugin for FAILED tasks."
|
||||
% (start_error_msg, task_id))
|
||||
elif task_state == 'CANCELED':
|
||||
error("%s %d was canceled." % (start_error_msg, task_id))
|
||||
else:
|
||||
error("%s %d has not finished yet." % (start_error_msg, task_id))
|
||||
|
||||
# get files for download
|
||||
downloads = []
|
||||
|
|
|
|||
|
|
@ -239,20 +239,112 @@ Default behavior without --all option downloads .rpm files only for build and bu
|
|||
self.session, self.parent_task_id)
|
||||
self.download_file.assert_not_called()
|
||||
|
||||
def test_handle_download_parent_not_finished(self):
|
||||
def test_handle_download_parent_canceled_task(self):
|
||||
args = [str(self.parent_task_id)]
|
||||
self.session.getTaskInfo.return_value = {
|
||||
'id': self.parent_task_id,
|
||||
'method': 'buildArch',
|
||||
'arch': 'taskarch',
|
||||
'state': 3}
|
||||
self.list_task_output_all_volumes.return_value = {
|
||||
'somerpm.src.rpm': ['DEFAULT', 'vol1'],
|
||||
'somerpm.x86_64.rpm': ['DEFAULT', 'vol2'],
|
||||
'somerpm.noarch.rpm': ['vol3'],
|
||||
'somelog.log': ['DEFAULT', 'vol1'],
|
||||
'somezip.zip': ['DEFAULT']
|
||||
}
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
self.assert_system_exit(
|
||||
anon_handle_download_task,
|
||||
self.options, self.session, args,
|
||||
stderr="Task 123 was canceled.\n",
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=1)
|
||||
# Finally, assert that things were called as we expected.
|
||||
self.ensure_connection.assert_called_once_with(self.session, self.options)
|
||||
self.session.getTaskInfo.assert_called_once_with(self.parent_task_id)
|
||||
self.session.getTaskChildren.assert_called_once_with(self.parent_task_id)
|
||||
self.list_task_output_all_volumes.assert_not_called()
|
||||
self.download_file.assert_not_called()
|
||||
|
||||
def test_handle_download_child_canceled_task(self):
|
||||
args = [str(self.parent_task_id)]
|
||||
self.session.getTaskInfo.return_value = self.parent_task_info
|
||||
self.session.getTaskChildren.return_value = [{
|
||||
'id': 22222,
|
||||
'method': 'buildArch',
|
||||
'arch': 'noarch',
|
||||
'state': 3}]
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
self.assert_system_exit(
|
||||
anon_handle_download_task,
|
||||
self.options, self.session, args,
|
||||
stderr="Child task 22222 was canceled.\n",
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=1)
|
||||
# Finally, assert that things were called as we expected.
|
||||
self.ensure_connection.assert_called_once_with(self.session, self.options)
|
||||
self.session.getTaskInfo.assert_called_once_with(self.parent_task_id)
|
||||
self.session.getTaskChildren.assert_called_once_with(self.parent_task_id)
|
||||
self.list_task_output_all_volumes.assert_not_called()
|
||||
self.download_file.assert_not_called()
|
||||
|
||||
def test_handle_download_parent_failed_task(self):
|
||||
args = [str(self.parent_task_id)]
|
||||
self.session.getTaskInfo.return_value = {
|
||||
'id': self.parent_task_id,
|
||||
'method': 'buildArch',
|
||||
'arch': 'taskarch',
|
||||
'state': 5}
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
self.assert_system_exit(
|
||||
anon_handle_download_task,
|
||||
self.options, self.session, args,
|
||||
stderr="Task 123 failed. You can use save-failed-tree plugin for FAILED tasks.\n",
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=1)
|
||||
# Finally, assert that things were called as we expected.
|
||||
self.ensure_connection.assert_called_once_with(self.session, self.options)
|
||||
self.session.getTaskInfo.assert_called_once_with(self.parent_task_id)
|
||||
self.session.getTaskChildren.assert_called_once_with(self.parent_task_id)
|
||||
self.list_task_output_all_volumes.assert_not_called()
|
||||
self.download_file.assert_not_called()
|
||||
|
||||
def test_handle_download_child_failed_task(self):
|
||||
args = [str(self.parent_task_id)]
|
||||
self.session.getTaskInfo.return_value = self.parent_task_info
|
||||
self.session.getTaskChildren.return_value = [{
|
||||
'id': 22222,
|
||||
'method': 'buildArch',
|
||||
'arch': 'noarch',
|
||||
'state': 5}]
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
self.assert_system_exit(
|
||||
anon_handle_download_task,
|
||||
self.options, self.session, args,
|
||||
stderr="Child task 22222 failed. "
|
||||
"You can use save-failed-tree plugin for FAILED tasks.\n",
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=1)
|
||||
# Finally, assert that things were called as we expected.
|
||||
self.ensure_connection.assert_called_once_with(self.session, self.options)
|
||||
self.session.getTaskInfo.assert_called_once_with(self.parent_task_id)
|
||||
self.session.getTaskChildren.assert_called_once_with(self.parent_task_id)
|
||||
self.list_task_output_all_volumes.assert_not_called()
|
||||
self.download_file.assert_not_called()
|
||||
|
||||
def test_handle_download_parent_not_finished(self):
|
||||
args = [str(self.parent_task_id)]
|
||||
self.session.getTaskInfo.return_value = {
|
||||
'id': self.parent_task_id,
|
||||
'method': 'buildArch',
|
||||
'arch': 'taskarch',
|
||||
'state': 1}
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
|
|
@ -277,10 +369,7 @@ Default behavior without --all option downloads .rpm files only for build and bu
|
|||
'id': 22222,
|
||||
'method': 'buildArch',
|
||||
'arch': 'noarch',
|
||||
'state': 3}]
|
||||
self.list_task_output_all_volumes.side_effect = [
|
||||
{'somerpm.src.rpm': ['DEFAULT', 'vol1']},
|
||||
{'somenextrpm.src.rpm': ['DEFAULT', 'vol1']}]
|
||||
'state': 1}]
|
||||
# Run it and check immediate output
|
||||
# args: task_id
|
||||
# expected: failure
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue