summaryrefslogtreecommitdiff
path: root/Lib/test/test_subclassinit.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-10-21 17:13:31 +0300
committerSerhiy Storchaka <storchaka@gmail.com>2016-10-21 17:13:31 +0300
commitd5d32d212719e328f7c22fa6729dd6f9be1ff1c4 (patch)
treee252a71a35aa9b734ca12bd37e5e1aa3c63397a3 /Lib/test/test_subclassinit.py
parent467ab194fc6189d9f7310c89937c51abeac56839 (diff)
downloadcpython-git-d5d32d212719e328f7c22fa6729dd6f9be1ff1c4.tar.gz
Issue #28214: Improved exception reporting for problematic __set_name__
attributes.
Diffstat (limited to 'Lib/test/test_subclassinit.py')
-rw-r--r--Lib/test/test_subclassinit.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/Lib/test/test_subclassinit.py b/Lib/test/test_subclassinit.py
index 0267e41717..6a12fb1ee0 100644
--- a/Lib/test/test_subclassinit.py
+++ b/Lib/test/test_subclassinit.py
@@ -133,20 +133,32 @@ class Test(unittest.TestCase):
def test_set_name_error(self):
class Descriptor:
def __set_name__(self, owner, name):
- raise RuntimeError
+ 1/0
- with self.assertRaises(RuntimeError):
- class A:
- d = Descriptor()
+ with self.assertRaises(RuntimeError) as cm:
+ class NotGoingToWork:
+ attr = Descriptor()
+
+ exc = cm.exception
+ self.assertRegex(str(exc), r'\bNotGoingToWork\b')
+ self.assertRegex(str(exc), r'\battr\b')
+ self.assertRegex(str(exc), r'\bDescriptor\b')
+ self.assertIsInstance(exc.__cause__, ZeroDivisionError)
def test_set_name_wrong(self):
class Descriptor:
def __set_name__(self):
pass
- with self.assertRaises(TypeError):
- class A:
- d = Descriptor()
+ with self.assertRaises(RuntimeError) as cm:
+ class NotGoingToWork:
+ attr = Descriptor()
+
+ exc = cm.exception
+ self.assertRegex(str(exc), r'\bNotGoingToWork\b')
+ self.assertRegex(str(exc), r'\battr\b')
+ self.assertRegex(str(exc), r'\bDescriptor\b')
+ self.assertIsInstance(exc.__cause__, TypeError)
def test_set_name_lookup(self):
resolved = []