diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-21 17:15:20 +0300 |
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-21 17:15:20 +0300 |
| commit | c4b4d4e2d833fca3065cdd7ce73c19faa3e7e59d (patch) | |
| tree | fa5b0f3bea877af2d7ff6efb8298eaf7ee52e853 /Lib/test/test_subclassinit.py | |
| parent | 14ab2776321525ac82d0ae170a5e1ab911c914c0 (diff) | |
| parent | d5d32d212719e328f7c22fa6729dd6f9be1ff1c4 (diff) | |
| download | cpython-git-c4b4d4e2d833fca3065cdd7ce73c19faa3e7e59d.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.py | 26 |
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 = [] |
