You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
943 B
Python
35 lines
943 B
Python
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()
|