Issue #23611: Fixed enums pickling tests. Now all picklings work with all

protocols.
This commit is contained in:
Serhiy Storchaka 2015-03-31 16:56:49 +03:00
parent 5236e318a5
commit e50e780234
1 changed files with 7 additions and 15 deletions

View File

@ -66,18 +66,14 @@ try:
except Exception: except Exception:
pass pass
def test_pickle_dump_load(assertion, source, target=None, def test_pickle_dump_load(assertion, source, target=None):
*, protocol=(0, HIGHEST_PROTOCOL)):
start, stop = protocol
if target is None: if target is None:
target = source target = source
for protocol in range(start, stop+1): for protocol in range(HIGHEST_PROTOCOL + 1):
assertion(loads(dumps(source, protocol=protocol)), target) assertion(loads(dumps(source, protocol=protocol)), target)
def test_pickle_exception(assertion, exception, obj, def test_pickle_exception(assertion, exception, obj):
*, protocol=(0, HIGHEST_PROTOCOL)): for protocol in range(HIGHEST_PROTOCOL + 1):
start, stop = protocol
for protocol in range(start, stop+1):
with assertion(exception): with assertion(exception):
dumps(obj, protocol=protocol) dumps(obj, protocol=protocol)
@ -575,11 +571,7 @@ class TestEnum(unittest.TestCase):
self.__class__.NestedEnum = NestedEnum self.__class__.NestedEnum = NestedEnum
self.NestedEnum.__qualname__ = '%s.NestedEnum' % self.__class__.__name__ self.NestedEnum.__qualname__ = '%s.NestedEnum' % self.__class__.__name__
test_pickle_exception( test_pickle_dump_load(self.assertIs, self.NestedEnum.twigs)
self.assertRaises, PicklingError, self.NestedEnum.twigs,
protocol=(0, 3))
test_pickle_dump_load(self.assertIs, self.NestedEnum.twigs,
protocol=(4, HIGHEST_PROTOCOL))
def test_pickle_by_name(self): def test_pickle_by_name(self):
class ReplaceGlobalInt(IntEnum): class ReplaceGlobalInt(IntEnum):
@ -1096,9 +1088,9 @@ class TestEnum(unittest.TestCase):
globals()['NEI'] = NEI globals()['NEI'] = NEI
NI5 = NamedInt('test', 5) NI5 = NamedInt('test', 5)
self.assertEqual(NI5, 5) self.assertEqual(NI5, 5)
test_pickle_dump_load(self.assertEqual, NI5, 5, protocol=(4, 4)) test_pickle_dump_load(self.assertEqual, NI5, 5)
self.assertEqual(NEI.y.value, 2) self.assertEqual(NEI.y.value, 2)
test_pickle_dump_load(self.assertIs, NEI.y, protocol=(4, 4)) test_pickle_dump_load(self.assertIs, NEI.y)
test_pickle_dump_load(self.assertIs, NEI) test_pickle_dump_load(self.assertIs, NEI)
def test_subclasses_with_reduce(self): def test_subclasses_with_reduce(self):