| 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() |