source file: /opt/devel/celery/celery/tests/test_pickle.py
file stats: 36 lines, 36 executed: 100.0% covered
   1. import unittest
   2. import pickle
   3. 
   4. class RegularException(Exception):
   5.     pass
   6. 
   7. 
   8. class ArgOverrideException(Exception):
   9.     def __init__(self, message, status_code=10):
  10.         self.status_code = status_code
  11.         super(ArgOverrideException, self).__init__(message, status_code)
  12. 
  13. 
  14. class TestPickle(unittest.TestCase):
  15.     # See: http://www.reddit.com/r/django/comments/8gdwi/
  16.     #      celery_distributed_task_queue_for_django/c097hr1
  17. 
  18.     def test_pickle_regular_exception(self):
  19. 
  20.         e = None
  21.         try:
  22.             raise RegularException("RegularException raised")
  23.         except RegularException, e:
  24.             pass
  25. 
  26.         pickled = pickle.dumps({"exception": e})
  27.         unpickled = pickle.loads(pickled)
  28.         exception = unpickled.get("exception")
  29.         self.assertTrue(exception)
  30.         self.assertTrue(isinstance(exception, RegularException))
  31.         self.assertEquals(exception.args, ("RegularException raised", ))
  32. 
  33. 
  34.     def test_pickle_arg_override_exception(self):
  35. 
  36.         e = None
  37.         try:
  38.             raise ArgOverrideException("ArgOverrideException raised",
  39.                     status_code=100)
  40.         except ArgOverrideException, e:
  41.             pass
  42. 
  43.         pickled = pickle.dumps({"exception": e})
  44.         unpickled = pickle.loads(pickled)
  45.         exception = unpickled.get("exception")
  46.         self.assertTrue(exception)
  47.         self.assertTrue(isinstance(exception, ArgOverrideException))
  48.         self.assertEquals(exception.args, ("ArgOverrideException raised",
  49.                                           100))
  50.         self.assertEquals(exception.status_code, 100)