diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-21 14:13:31 (GMT) |
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-21 14:13:31 (GMT) |
| commit | d5d32d212719e328f7c22fa6729dd6f9be1ff1c4 (patch) | |
| tree | e252a71a35aa9b734ca12bd37e5e1aa3c63397a3 /Lib/test/test_subclassinit.py | |
| parent | 467ab194fc6189d9f7310c89937c51abeac56839 (diff) | |
| download | cpython-d5d32d212719e328f7c22fa6729dd6f9be1ff1c4.zip cpython-d5d32d212719e328f7c22fa6729dd6f9be1ff1c4.tar.gz cpython-d5d32d212719e328f7c22fa6729dd6f9be1ff1c4.tar.bz2 | |
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.py | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/Lib/test/test_subclassinit.py b/Lib/test/test_subclassinit.py index 0267e41..6a12fb1 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 = [] |
