def test_output_goes_to_next_step_args(self): sm = step_manager('sm') s1 = sm.add_step(step_description(step_with_output1), {}, {}) s2 = sm.add_step(step_description(step_with_output2), {}, {}) s3 = sm.add_step(step_description(step_with_output3), {}, {}) s4 = sm.add_step(step_description(step_with_output4), {}, {}) result = sm.execute({}, {}, {}) self.assertTrue(result.success) self.assertEqual({}, s1.saved_args) self.assertEqual({'foo': '5', 'bar': 6}, s2.saved_args) self.assertEqual({ 'foo': '5', 'bar': 6, 'fruit': 'kiwi' }, s3.saved_args) self.assertEqual( { 'cheese': 'blue', 'foo': '5', 'bar': 6, 'fruit': 'kiwi' }, s4.saved_args) self.assertEqual( { 'drink': 'bourbon', 'cheese': 'blue', 'foo': '5', 'bar': 6, 'fruit': 'kiwi' }, result.output)
def test_step_results(self): sm = step_manager('sm') script = {} env = {} s = sm.add_step(step_description(sample_step_fake_output1), script, env) expected_output = {'foo': 6, 'bar': 'hi'} result = sm.execute(script, env, {'fake_output': expected_output}) self.assertTrue(result.success) self.assertEqual(None, result.message) self.assertEqual(None, result.failed_step) self.assertEqual(expected_output, result.output)
def test_multiple_step(self): self.maxDiff = None execute_args = {'global_food': 'steak', 'global_drink': 'wine'} step1_args = {'step1_fruit': 'apple', 'step1_num': 666} step2_args = {'step2_fruit': 'durian', 'step2_num': 667} step3_args = {'step3_fruit': 'mangosteen', 'step3_num': 668} all_steps_args = dict_util.combine(step1_args, step2_args, step3_args) description_args1 = { 'desc1_wine': 'barolo', 'desc1_cheese': 'manchego' } description_args2 = { 'desc2_wine': 'barolo', 'desc2_cheese': 'manchego' } description_args3 = { 'desc3_wine': 'barolo', 'desc3_cheese': 'manchego' } description_args = dict_util.combine(description_args1, description_args2, description_args3) multi_step_description = step_description(self.test_multi_steps, args=description_args) sm = step_manager('sm') multi_step = sm.add_step(multi_step_description, {}, {}) multi_step.update_args(all_steps_args) result = sm.execute({}, {}, execute_args) expected_saved_args = dict_util.combine(execute_args, all_steps_args, description_args) self.assertTrue(result.success) self.assertEqual(None, result.message) self.assertEqual(None, result.failed_step) self.assertEqual(expected_saved_args, multi_step.steps[0].saved_args) self.assertEqual(expected_saved_args, multi_step.steps[1].saved_args) self.assertEqual(expected_saved_args, multi_step.steps[2].saved_args)
def test_output_goes_to_next_step_args_multi_step(self): sm = step_manager('sm') s = sm.add_step( step_description(self.multi_step_with_steps_that_output), {}, {}) result = sm.execute({}, {}, {}) self.assertTrue(result.success) self.assertEqual({}, s.steps[0].saved_args) self.assertEqual({'foo': '5', 'bar': 6}, s.steps[1].saved_args) self.assertEqual({ 'foo': '5', 'bar': 6, 'fruit': 'kiwi' }, s.steps[2].saved_args) self.assertEqual( { 'cheese': 'blue', 'foo': '5', 'bar': 6, 'fruit': 'kiwi' }, s.steps[3].saved_args)
def test_multi_step_results(self): self.maxDiff = None sm = step_manager('sm') script = {} env = {} s = sm.add_step(step_description(self.test_multi_step), script, env) expected_output1 = {'foo': 6, 'bar': 'hi'} expected_output2 = {'fruit': 'kiwi', 'cheese': 'manchego'} expected_output3 = {'wine': 'barolo', 'nut': 'almond'} execute_args = { 'fake_output': expected_output1, 'fake_output2': expected_output2, 'fake_output3': expected_output3, } expected_output = dict_util.combine(expected_output1, expected_output2, expected_output3) result = sm.execute(script, env, execute_args) self.assertTrue(result.success) self.assertEqual(None, result.message) self.assertEqual(None, result.failed_step) self.assertEqual(expected_output, result.output)
def _add_save_args_step(self, sm): description = step_description(self.SaveArgsStep) return sm.add_step(description, {}, {})
def _add_test_step(self, sm, fake_name, fake_success=True): args = {'fake_name': fake_name, 'fake_success': fake_success} description = step_description(sample_step_fake_success, args=args) return sm.add_step(description, {}, {})