Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)