def tear_down_sources_task_error_processing_test(self): """Test error processing task to tear down installation sources.""" tear_down_task1 = create_autospec(Task) tear_down_task2 = create_autospec(Task) tear_down_task3 = create_autospec(Task) tear_down_task1.run.side_effect = SourceTearDownError("task1 error") tear_down_task3.run.side_effect = SourceTearDownError("task3 error") source1 = create_autospec(PayloadSourceBase) source2 = create_autospec(PayloadSourceBase) source1.tear_down_with_tasks.return_value = [tear_down_task1, tear_down_task2] source2.tear_down_with_tasks.return_value = [tear_down_task3] task = TearDownSourcesTask([source1, source2]) with self.assertLogs(level="ERROR") as cm: with self.assertRaises(SourceTearDownError): task.run() self.assertTrue(any(map(lambda x: "task1 error" in x, cm.output))) self.assertTrue(any(map(lambda x: "task3 error" in x, cm.output))) # all the tasks should be tear down even when exception raised tear_down_task1.run.assert_called_once() tear_down_task2.run.assert_called_once() tear_down_task3.run.assert_called_once()
def tear_down_sources_task_test(self): """Test task to tear down installation sources.""" called_position = [] def save_position(name): called_position.append(name) return DEFAULT tear_down_task1 = create_autospec(Task) tear_down_task2 = create_autospec(Task) tear_down_task3 = create_autospec(Task) tear_down_task1.run.side_effect = lambda: save_position("task1") tear_down_task2.run.side_effect = lambda: save_position("task2") tear_down_task3.run.side_effect = lambda: save_position("task3") source1 = create_autospec(PayloadSourceBase) source2 = create_autospec(PayloadSourceBase) source1.tear_down_with_tasks.side_effect = lambda: save_position("source1") source1.tear_down_with_tasks.return_value = [tear_down_task1, tear_down_task2] source2.tear_down_with_tasks.side_effect = lambda: save_position("source2") source2.tear_down_with_tasks.return_value = [tear_down_task3] task = TearDownSourcesTask([source1, source2]) task.run() source1.tear_down_with_tasks.assert_called_once() source2.tear_down_with_tasks.assert_called_once() tear_down_task1.run.assert_called_once() tear_down_task2.run.assert_called_once() tear_down_task3.run.assert_called_once() self.assertEqual(["source1", "task1", "task2", "source2", "task3"], called_position)
def tear_down_sources_task_without_sources_test(self): """Test task to tear down installation sources without sources set.""" task = TearDownSourcesTask([]) with self.assertRaises(SourceSetupError): task.run()