Skip to content

Commit

Permalink
bpo-45566: test_frozen_pickle checks all pickle protocols (GH-29150)
Browse files Browse the repository at this point in the history
Refs #29147

Automerge-Triggered-By: GH:ericvsmith
  • Loading branch information
sobolevn committed Oct 24, 2021
1 parent 9e05da6 commit 07236d5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
21 changes: 17 additions & 4 deletions Lib/test/test_dataclasses.py
Expand Up @@ -2859,13 +2859,26 @@ class FrozenSlotsClass:
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):
Expand Down
@@ -0,0 +1 @@
Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all ``pickle`` versions.

0 comments on commit 07236d5

Please sign in to comment.