test_serialization.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import absolute_import
  2. import sys
  3. from celery.utils.serialization import (
  4. UnpickleableExceptionWrapper,
  5. get_pickleable_etype,
  6. )
  7. from celery.tests.case import Case, mask_modules
  8. class test_AAPickle(Case):
  9. def test_no_cpickle(self):
  10. prev = sys.modules.pop('celery.utils.serialization', None)
  11. try:
  12. with mask_modules('cPickle'):
  13. from celery.utils.serialization import pickle
  14. import pickle as orig_pickle
  15. self.assertIs(pickle.dumps, orig_pickle.dumps)
  16. finally:
  17. sys.modules['celery.utils.serialization'] = prev
  18. class test_UnpickleExceptionWrapper(Case):
  19. def test_init(self):
  20. x = UnpickleableExceptionWrapper('foo', 'Bar', [10, lambda x: x])
  21. self.assertTrue(x.exc_args)
  22. self.assertEqual(len(x.exc_args), 2)
  23. class test_get_pickleable_etype(Case):
  24. def test_get_pickleable_etype(self):
  25. class Unpickleable(Exception):
  26. def __reduce__(self):
  27. raise ValueError('foo')
  28. self.assertIs(get_pickleable_etype(Unpickleable), Exception)