mirror of https://github.com/python/cpython
bpo-45566: `test_frozen_pickle` checks all `pickle` protocols (GH-29150)
Refs https://github.com/python/cpython/pull/29147 Automerge-Triggered-By: GH:ericvsmith
This commit is contained in:
parent
9e05da6224
commit
07236d562e
|
@ -2859,13 +2859,26 @@ class TestSlots(unittest.TestCase):
|
|||
foo: str
|
||||
bar: int
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FrozenWithoutSlotsClass:
|
||||
foo: str
|
||||
bar: int
|
||||
|
||||
def test_frozen_pickle(self):
|
||||
# bpo-43999
|
||||
|
||||
assert self.FrozenSlotsClass.__slots__ == ("foo", "bar")
|
||||
p = pickle.dumps(self.FrozenSlotsClass("a", 1))
|
||||
assert pickle.loads(p) == self.FrozenSlotsClass("a", 1)
|
||||
self.assertEqual(self.FrozenSlotsClass.__slots__, ("foo", "bar"))
|
||||
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
||||
with self.subTest(proto=proto):
|
||||
obj = self.FrozenSlotsClass("a", 1)
|
||||
p = pickle.loads(pickle.dumps(obj, protocol=proto))
|
||||
self.assertIsNot(obj, p)
|
||||
self.assertEqual(obj, p)
|
||||
|
||||
obj = self.FrozenWithoutSlotsClass("a", 1)
|
||||
p = pickle.loads(pickle.dumps(obj, protocol=proto))
|
||||
self.assertIsNot(obj, p)
|
||||
self.assertEqual(obj, p)
|
||||
|
||||
class TestDescriptors(unittest.TestCase):
|
||||
def test_set_name(self):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all ``pickle`` versions.
|
Loading…
Reference in New Issue