From 77b6be3bae56b3d39a91a2955219d7dc27b3bd24 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 22 Oct 2021 12:06:26 +0300 Subject: [PATCH 1/2] bpo-45566: `test_frozen_pickle` checks all `pickle` protocols --- Lib/test/test_dataclasses.py | 21 +++++++++++++++---- .../2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py index bdcb4a2cfd1a07..bbbb8e6c6395b8 100644 --- a/Lib/test/test_dataclasses.py +++ b/Lib/test/test_dataclasses.py @@ -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): diff --git a/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst b/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst new file mode 100644 index 00000000000000..783fb20312d644 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst @@ -0,0 +1 @@ +Fix ``test_frozen_pickle`` to check all ``pickle`` versions. From 6da46d157a4e3ba1911aa0542d643d96935da9f6 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sun, 24 Oct 2021 15:46:31 +0300 Subject: [PATCH 2/2] Update 2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst --- Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst b/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst index 783fb20312d644..a2ecf721800d93 100644 --- a/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst +++ b/Misc/NEWS.d/next/Tests/2021-10-22-12-05-21.bpo-45566.2gQ3ZB.rst @@ -1 +1 @@ -Fix ``test_frozen_pickle`` to check all ``pickle`` versions. +Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all ``pickle`` versions.