From d1f461f9b587c0dec5c2a2f705fe43fdbefc9f5b Mon Sep 17 00:00:00 2001 From: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> Date: Fri, 7 Apr 2023 07:40:53 +0000 Subject: [PATCH 1/5] add test case for gh-103272 --- Lib/test/test_descr.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index cbc020d1d3904a..4cdf0c38d90a2e 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -27,6 +27,7 @@ xxsubtype = None + class OperatorsTest(unittest.TestCase): def __init__(self, *args, **kwargs): @@ -5003,6 +5004,26 @@ class Child(Parent): gc.collect() self.assertEqual(Parent.__subclasses__(), []) + def test_getattribute(self): + # add test case for gh-103272 + class A: + def __init__(self) -> None: + self.bar = 0 + + def __getattribute__(self, name): + return super().__getattribute__(name) + + def __getattr__(self, name): + if self.bar == 0: + raise ValueError + + @property + def foo(self): + return self.__getattr__("foo") + + with self.assertRaises(ValueError): + A().foo + class DictProxyTests(unittest.TestCase): def setUp(self): From 59ff49a18b29ec6d5a0f4fc73069b5926f8d7806 Mon Sep 17 00:00:00 2001 From: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> Date: Fri, 7 Apr 2023 07:58:02 +0000 Subject: [PATCH 2/5] add news --- .../next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst diff --git a/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst b/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst new file mode 100644 index 00000000000000..650be83240bfd8 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst @@ -0,0 +1 @@ +Add test case for regressions caused by gh-102213. From d9e7600b567f3447e2c09b5a25708d979aa001e3 Mon Sep 17 00:00:00 2001 From: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> Date: Fri, 7 Apr 2023 09:49:00 +0000 Subject: [PATCH 3/5] simplify test case, remove NEWS --- Lib/test/test_descr.py | 13 +++---------- .../2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst | 1 - 2 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 4cdf0c38d90a2e..1f0c3cb283af66 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -5004,22 +5004,15 @@ class Child(Parent): gc.collect() self.assertEqual(Parent.__subclasses__(), []) - def test_getattribute(self): + def test_attr_raise_through_property(self): # add test case for gh-103272 class A: - def __init__(self) -> None: - self.bar = 0 - - def __getattribute__(self, name): - return super().__getattribute__(name) - def __getattr__(self, name): - if self.bar == 0: - raise ValueError + raise ValueError @property def foo(self): - return self.__getattr__("foo") + return self.__getattr__("asdf") with self.assertRaises(ValueError): A().foo diff --git a/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst b/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst deleted file mode 100644 index 650be83240bfd8..00000000000000 --- a/Misc/NEWS.d/next/Tests/2023-04-07-07-56-39.gh-issue-103272.QosA_L.rst +++ /dev/null @@ -1 +0,0 @@ -Add test case for regressions caused by gh-102213. From 7f2806624fa2f614c01c08c89ee2f62638f83ce1 Mon Sep 17 00:00:00 2001 From: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> Date: Fri, 7 Apr 2023 09:50:36 +0000 Subject: [PATCH 4/5] nit: remove extra line --- Lib/test/test_descr.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 1f0c3cb283af66..e71c332ef64ab3 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -27,7 +27,6 @@ xxsubtype = None - class OperatorsTest(unittest.TestCase): def __init__(self, *args, **kwargs): From 938dca9b32b2f55a96a35f3c548f6e0efc8afead Mon Sep 17 00:00:00 2001 From: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> Date: Fri, 7 Apr 2023 10:02:44 +0000 Subject: [PATCH 5/5] use assertRaisesRegex instead of assertRaises --- Lib/test/test_descr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index e71c332ef64ab3..f17bb1813b9d87 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -5007,13 +5007,13 @@ def test_attr_raise_through_property(self): # add test case for gh-103272 class A: def __getattr__(self, name): - raise ValueError + raise ValueError("FOO") @property def foo(self): return self.__getattr__("asdf") - with self.assertRaises(ValueError): + with self.assertRaisesRegex(ValueError, "FOO"): A().foo