Exemple #1
0
    def test_execute_status_return(self):
        from eskapade import StatusCode, ProcessManager

        pm = ProcessManager()
        c2 = Chain('skip')
        c3 = Chain('fail')

        with mock.patch('eskapade.core.run_elements.Chain.initialize',
                        side_effect=_status_side_effect,
                        autospec=True):
            with mock.patch('eskapade.core.run_elements.Chain.execute') as \
                    mock_execute:
                with mock.patch('eskapade.core.run_elements.Chain.finalize') as \
                        mock_finalize:
                    status = pm.execute(c2)
                    self.assertEqual(status, StatusCode.SkipChain)
                    self.assertEqual(pm.prevChainName, c2.name)
                    # assert that chain is indeed skipped
                    assert not mock_execute.called
                    assert not mock_finalize.called
                    status = pm.execute(c3)
                    self.assertEqual(status, StatusCode.Failure)

        with mock.patch('eskapade.core.run_elements.Chain.initialize',
                        return_value=StatusCode.Success):
            with mock.patch('eskapade.core.run_elements.Chain.execute',
                            side_effect=_status_side_effect,
                            autospec=True):
                status = pm.execute(c3)
                self.assertEqual(status, StatusCode.Failure)

        with mock.patch('eskapade.core.run_elements.Chain.initialize',
                        return_value=StatusCode.Success):
            with mock.patch('eskapade.core.run_elements.Chain.execute',
                            return_value=StatusCode.Success):
                with mock.patch('eskapade.core.run_elements.Chain.finalize',
                                side_effect=_status_side_effect,
                                autospec=True):
                    status = pm.execute(c3)
                    self.assertEqual(status, StatusCode.Failure)
Exemple #2
0
    def test_execute(self, mock_finalize, mock_execute, mock_initialize):
        from eskapade import StatusCode, ProcessManager

        pm = ProcessManager()
        c1 = Chain('1')

        mock_initialize.return_value = StatusCode.Success
        mock_execute.return_value = StatusCode.Success
        mock_finalize.return_value = StatusCode.Success
        mock_parent = mock.MagicMock(autospec=True)
        mock_parent.attach_mock(mock_initialize, 'initialize')
        mock_parent.attach_mock(mock_execute, 'execute')
        mock_parent.attach_mock(mock_finalize, 'finalize')
        calls = [
            mock.call.initialize(),
            mock.call.execute(),
            mock.call.finalize()
        ]
        status = pm.execute(c1)
        mock_parent.assert_has_calls(calls, any_order=False)
        self.assertEqual(pm.prevChainName, c1.name)
        self.assertEqual(status, StatusCode.Success)