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)