| from __future__ import generator_stop |
| |
| import unittest |
| |
| |
| class TestPEP479(unittest.TestCase): |
| def test_stopiteration_wrapping(self): |
| def f(): |
| raise StopIteration |
| def g(): |
| yield f() |
| with self.assertRaisesRegex(RuntimeError, |
| "generator raised StopIteration"): |
| next(g()) |
| |
| def test_stopiteration_wrapping_context(self): |
| def f(): |
| raise StopIteration |
| def g(): |
| yield f() |
| |
| try: |
| next(g()) |
| except RuntimeError as exc: |
| self.assertIs(type(exc.__cause__), StopIteration) |
| self.assertIs(type(exc.__context__), StopIteration) |
| self.assertTrue(exc.__suppress_context__) |
| else: |
| self.fail('__cause__, __context__, or __suppress_context__ ' |
| 'were not properly set') |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |