Author: Ronan Lamy <[email protected]>
Branch: py3.6
Changeset: r98228:840f39388700
Date: 2019-12-03 21:02 +0000
http://bitbucket.org/pypy/pypy/changeset/840f39388700/
Log: Move an asyncgen test to apptest_coroutine, next to the other ones
diff --git a/pypy/interpreter/test/apptest_coroutine.py
b/pypy/interpreter/test/apptest_coroutine.py
--- a/pypy/interpreter/test/apptest_coroutine.py
+++ b/pypy/interpreter/test/apptest_coroutine.py
@@ -699,6 +699,99 @@
assert run_async(run()) == ([], (1,))
+def test_async_gen_exception_11():
+ # bpo-33786
+ def compare_generators(sync_gen, async_gen):
+ def sync_iterate(g):
+ res = []
+ while True:
+ try:
+ res.append(g.__next__())
+ except StopIteration:
+ res.append('STOP')
+ break
+ except Exception as ex:
+ res.append(str(type(ex)))
+ return res
+
+ def async_iterate(g):
+ res = []
+ while True:
+ an = g.__anext__()
+ try:
+ while True:
+ try:
+ an.__next__()
+ except StopIteration as ex:
+ if ex.args:
+ res.append(ex.args[0])
+ break
+ else:
+ res.append('EMPTY StopIteration')
+ break
+ except StopAsyncIteration:
+ raise
+ except Exception as ex:
+ res.append(str(type(ex)))
+ break
+ except StopAsyncIteration:
+ res.append('STOP')
+ break
+ return res
+
+ def async_iterate(g):
+ res = []
+ while True:
+ try:
+ g.__anext__().__next__()
+ except StopAsyncIteration:
+ res.append('STOP')
+ break
+ except StopIteration as ex:
+ if ex.args:
+ res.append(ex.args[0])
+ else:
+ res.append('EMPTY StopIteration')
+ break
+ except Exception as ex:
+ res.append(str(type(ex)))
+ return res
+
+ sync_gen_result = sync_iterate(sync_gen)
+ async_gen_result = async_iterate(async_gen)
+ assert sync_gen_result == async_gen_result, "%s != %s" %
(str(sync_gen_result), str(async_gen_result))
+ return async_gen_result
+
+ def sync_gen():
+ yield 10
+ yield 20
+
+ def sync_gen_wrapper():
+ yield 1
+ sg = sync_gen()
+ sg.send(None)
+ try:
+ sg.throw(GeneratorExit())
+ except GeneratorExit:
+ yield 2
+ yield 3
+
+ async def async_gen():
+ yield 10
+ yield 20
+
+ async def async_gen_wrapper():
+ yield 1
+ asg = async_gen()
+ await asg.asend(None)
+ try:
+ await asg.athrow(GeneratorExit())
+ except GeneratorExit:
+ yield 2
+ yield 3
+
+ compare_generators(sync_gen_wrapper(), async_gen_wrapper())
+
def test_asyncgen_yield_stopiteration():
async def foo():
yield 1
diff --git a/pypy/interpreter/test/test_generator.py
b/pypy/interpreter/test/test_generator.py
--- a/pypy/interpreter/test/test_generator.py
+++ b/pypy/interpreter/test/test_generator.py
@@ -554,104 +554,6 @@
g.send(2)
-class AppTestAsyncGenerator(object):
-
- def test_async_gen_exception_11(self):
- """
- # bpo-33786
- def compare_generators(sync_gen, async_gen):
- def sync_iterate(g):
- res = []
- while True:
- try:
- res.append(g.__next__())
- except StopIteration:
- res.append('STOP')
- break
- except Exception as ex:
- res.append(str(type(ex)))
- return res
-
- def async_iterate(g):
- res = []
- while True:
- an = g.__anext__()
- try:
- while True:
- try:
- an.__next__()
- except StopIteration as ex:
- if ex.args:
- res.append(ex.args[0])
- break
- else:
- res.append('EMPTY StopIteration')
- break
- except StopAsyncIteration:
- raise
- except Exception as ex:
- res.append(str(type(ex)))
- break
- except StopAsyncIteration:
- res.append('STOP')
- break
- return res
-
- def async_iterate(g):
- res = []
- while True:
- try:
- g.__anext__().__next__()
- except StopAsyncIteration:
- res.append('STOP')
- break
- except StopIteration as ex:
- if ex.args:
- res.append(ex.args[0])
- else:
- res.append('EMPTY StopIteration')
- break
- except Exception as ex:
- res.append(str(type(ex)))
- return res
-
- sync_gen_result = sync_iterate(sync_gen)
- async_gen_result = async_iterate(async_gen)
- assert sync_gen_result == async_gen_result, "%s != %s" %
(str(sync_gen_result), str(async_gen_result))
- return async_gen_result
-
- def sync_gen():
- yield 10
- yield 20
-
- def sync_gen_wrapper():
- yield 1
- sg = sync_gen()
- sg.send(None)
- try:
- sg.throw(GeneratorExit())
- except GeneratorExit:
- yield 2
- yield 3
-
- async def async_gen():
- yield 10
- yield 20
-
- async def async_gen_wrapper():
- yield 1
- asg = async_gen()
- await asg.asend(None)
- try:
- await asg.athrow(GeneratorExit())
- except GeneratorExit:
- yield 2
- yield 3
-
- compare_generators(sync_gen_wrapper(), async_gen_wrapper())
- """
-
-
def test_should_not_inline(space):
from pypy.interpreter.generator import should_not_inline
w_co = space.appexec([], '''():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit