Skip to content

Commit 36971fd

Browse files
bpo-45566: test_frozen_pickle checks all pickle protocols (GH-29150)
Refs #29147 Automerge-Triggered-By: GH:ericvsmith (cherry picked from commit 07236d5) Co-authored-by: Nikita Sobolev <[email protected]>
1 parent cadf06e commit 36971fd

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

Lib/test/test_dataclasses.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2859,13 +2859,26 @@ class FrozenSlotsClass:
28592859
foo: str
28602860
bar: int
28612861

2862+
@dataclass(frozen=True)
2863+
class FrozenWithoutSlotsClass:
2864+
foo: str
2865+
bar: int
2866+
28622867
def test_frozen_pickle(self):
28632868
# bpo-43999
28642869

2865-
assert self.FrozenSlotsClass.__slots__ == ("foo", "bar")
2866-
p = pickle.dumps(self.FrozenSlotsClass("a", 1))
2867-
assert pickle.loads(p) == self.FrozenSlotsClass("a", 1)
2868-
2870+
self.assertEqual(self.FrozenSlotsClass.__slots__, ("foo", "bar"))
2871+
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
2872+
with self.subTest(proto=proto):
2873+
obj = self.FrozenSlotsClass("a", 1)
2874+
p = pickle.loads(pickle.dumps(obj, protocol=proto))
2875+
self.assertIsNot(obj, p)
2876+
self.assertEqual(obj, p)
2877+
2878+
obj = self.FrozenWithoutSlotsClass("a", 1)
2879+
p = pickle.loads(pickle.dumps(obj, protocol=proto))
2880+
self.assertIsNot(obj, p)
2881+
self.assertEqual(obj, p)
28692882

28702883
class TestDescriptors(unittest.TestCase):
28712884
def test_set_name(self):
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all ``pickle`` versions.

0 commit comments

Comments
 (0)