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)