def test_external_exts(self, mock_parse_file, mock_ExtensionSet): steps = mock_parse_file.return_value exts = mock.Mock(**{ 'read_steps.side_effect': lambda c, s: s, 'pre_step.return_value': False, }) int_exts = mock_ExtensionSet.return_value for step in steps: # I hate this one feature of the mock library... step.name = step.st_name ctxt = mock.Mock(steps=[], verbose=1, debug=False) result = main.timid(ctxt, 'test.yaml', exts=exts) self.assertEqual(result, None) self.assertFalse(mock_ExtensionSet.called) mock_parse_file.assert_called_once_with(ctxt, 'test.yaml', None) self.assertFalse(int_exts.read_steps.called) exts.read_steps.assert_called_once_with(ctxt, steps) self.assertFalse(int_exts.pre_step.called) exts.pre_step.assert_has_calls([ mock.call(ctxt, step, idx) for idx, step in enumerate(steps) ]) self.assertEqual(exts.pre_step.call_count, len(steps)) for step in steps: step.assert_called_once_with(ctxt) self.assertFalse(int_exts.post_step.called) exts.post_step.assert_has_calls([ mock.call(ctxt, step, idx, step.return_value) for idx, step in enumerate(steps) ]) self.assertEqual(exts.post_step.call_count, len(steps)) ctxt.emit.assert_has_calls([ mock.call('Reading test steps from test.yaml...', debug=True), mock.call('[Step 0]: step0 . . .'), mock.call('[Step 0]: `- Step SUCCESS'), mock.call('[Step 1]: step1 . . .'), mock.call('[Step 1]: `- Step SUCCESS'), mock.call('[Step 2]: step2 . . .'), mock.call('[Step 2]: `- Step SUCCESS'), mock.call('[Step 3]: step3 . . .'), mock.call('[Step 3]: `- Step SUCCESS'), mock.call('[Step 4]: step4 . . .'), mock.call('[Step 4]: `- Step SUCCESS'), ]) self.assertEqual(ctxt.emit.call_count, 11)
def test_skip(self, mock_parse_file, mock_ExtensionSet): steps = mock_parse_file.return_value exts = mock_ExtensionSet.return_value for step in steps: # I hate this one feature of the mock library... step.name = step.st_name ctxt = mock.Mock(steps=[], verbose=1, debug=False) result = main.timid(ctxt, 'test.yaml') self.assertEqual(result, None) mock_ExtensionSet.assert_called_once_with() mock_parse_file.assert_called_once_with(ctxt, 'test.yaml', None) exts.read_steps.assert_called_once_with(ctxt, steps) exts.pre_step.assert_has_calls([ mock.call(ctxt, step, idx) for idx, step in enumerate(steps) ]) self.assertEqual(exts.pre_step.call_count, len(steps)) for step in steps: if step.call_expected: step.assert_called_once_with(ctxt) else: self.assertFalse(step.called) exts.post_step.assert_has_calls([ mock.call(ctxt, step, idx, step.return_value) for idx, step in enumerate(steps) if step.call_expected ]) self.assertEqual(exts.post_step.call_count, len(steps) - 1) ctxt.emit.assert_has_calls([ mock.call('Reading test steps from test.yaml...', debug=True), mock.call('[Step 0]: step0 . . .'), mock.call('[Step 0]: `- Step SUCCESS'), mock.call('[Step 1]: step1 . . .'), mock.call('[Step 1]: `- Step SUCCESS'), mock.call('[Step 2]: step2 . . .'), mock.call('[Step 2]: `- Step SKIPPED'), mock.call('[Step 3]: step3 . . .'), mock.call('[Step 3]: `- Step SUCCESS'), mock.call('[Step 4]: step4 . . .'), mock.call('[Step 4]: `- Step SUCCESS'), ]) self.assertEqual(ctxt.emit.call_count, 11)
def test_check(self, mock_parse_file, mock_ExtensionSet): steps = mock_parse_file.return_value exts = mock_ExtensionSet.return_value for step in steps: # I hate this one feature of the mock library... step.name = step.st_name ctxt = mock.Mock(steps=[], verbose=1, debug=False) result = main.timid(ctxt, 'test.yaml', check=True) self.assertEqual(result, None) mock_ExtensionSet.assert_called_once_with() mock_parse_file.assert_called_once_with(ctxt, 'test.yaml', None) exts.read_steps.assert_called_once_with(ctxt, steps) self.assertFalse(exts.pre_step.called) for step in steps: self.assertFalse(step.called) self.assertFalse(exts.post_step.called) ctxt.emit.assert_has_calls([ mock.call('Reading test steps from test.yaml...', debug=True), ]) self.assertEqual(ctxt.emit.call_count, 1)