from __future__ import absolute_import
import sys
from celery.utils.serialization import (
UnpickleableExceptionWrapper,
get_pickleable_etype,
)
from celery.tests.case import Case, mask_modules
class test_AAPickle(Case):
def test_no_cpickle(self):
prev = sys.modules.pop('celery.utils.serialization', None)
try:
with mask_modules('cPickle'):
from celery.utils.serialization import pickle
import pickle as orig_pickle
self.assertIs(pickle.dumps, orig_pickle.dumps)
finally:
sys.modules['celery.utils.serialization'] = prev
class test_UnpickleExceptionWrapper(Case):
def test_init(self):
x = UnpickleableExceptionWrapper('foo', 'Bar', [10, lambda x: x])
self.assertTrue(x.exc_args)
self.assertEqual(len(x.exc_args), 2)
class test_get_pickleable_etype(Case):
def test_get_pickleable_etype(self):
class Unpickleable(Exception):
def __reduce__(self):
raise ValueError('foo')
self.assertIs(get_pickleable_etype(Unpickleable), Exception)