test_execute_trace.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from __future__ import absolute_import
  2. from __future__ import with_statement
  3. import operator
  4. from celery import states
  5. from celery.exceptions import RetryTaskError
  6. from celery.execute.trace import trace
  7. from celery.tests.utils import unittest
  8. def raises(exc):
  9. raise exc
  10. class test_trace(unittest.TestCase):
  11. def test_trace_successful(self):
  12. info = trace(operator.add, (2, 2), {})
  13. self.assertEqual(info.state, states.SUCCESS)
  14. self.assertEqual(info.retval, 4)
  15. def test_trace_SystemExit(self):
  16. with self.assertRaises(SystemExit):
  17. trace(raises, (SystemExit(), ), {})
  18. def test_trace_RetryTaskError(self):
  19. exc = RetryTaskError("foo", "bar")
  20. info = trace(raises, (exc, ), {})
  21. self.assertEqual(info.state, states.RETRY)
  22. self.assertIs(info.retval, exc)
  23. def test_trace_exception(self):
  24. exc = KeyError("foo")
  25. info = trace(raises, (exc, ), {})
  26. self.assertEqual(info.state, states.FAILURE)
  27. self.assertIs(info.retval, exc)
  28. def test_trace_exception_propagate(self):
  29. with self.assertRaises(KeyError):
  30. trace(raises, (KeyError("foo"), ), {}, propagate=True)