def test_check_build_outcome( workflow: DockerBuildWorkflow, prev_task_failed: bool, data_build_canceled: bool, prev_task_cancelled: bool, plugin_errors: Dict[str, str], ): expect_canceled = prev_task_cancelled or data_build_canceled expect_failed = expect_canceled or prev_task_failed or bool(plugin_errors) workflow.conf.conf['openshift'] = {'url': 'https://something.com'} mock_osbs = flexmock(workflow.osbs) (mock_osbs.should_receive('build_has_any_cancelled_tasks').once(). and_return(prev_task_cancelled)) (mock_osbs.should_receive('build_has_any_failed_tasks').times( 0 if expect_canceled else 1).and_return(prev_task_failed)) workflow.data.build_canceled = data_build_canceled workflow.data.plugins_errors = plugin_errors outcome = workflow.check_build_outcome() assert outcome == (expect_failed, expect_canceled) assert outcome != (False, True ) # this is impossible, canceled counts as failed