@@ -373,69 +373,68 @@ async def pex(e):
373373 "value = eggs" ,
374374 ])
375375
376- # @_async_test
377- # async def test_exception_value_crash(self):
378- # # There used to be a refcount error when the return value
379- # # stored in the StopAsyncIteration has a refcount of 1.
380- # async def g1():
381- # async yield from g2()
382- # async def g2():
383- # yield "g2"
384- # return [42]
385- # self.assertEqual([x async for x in g1()], ["g2"])
386-
376+ @_async_test
377+ async def test_exception_value_crash (self ):
378+ # There used to be a refcount error when the return value
379+ # stored in the StopAsyncIteration has a refcount of 1.
380+ async def g1 ():
381+ async yield from g2 ()
382+ async def g2 ():
383+ yield "g2"
384+ return object ()
385+ self .assertEqual ([x async for x in g1 ()], ["g2" ])
387386
388- # @_async_test
389- # async def test_generator_return_value(self):
390- # """
391- # Test generator return value
392- # """
393- # trace = []
394- # async def g1():
395- # trace.append("Starting g1")
396- # yield "g1 ham"
397- # ret = async yield from g2()
398- # trace.append("g2 returned %r" % (ret,))
399- # for v in 1, (2,), StopAsyncIteration(3):
400- # ret = async yield from g2(v)
401- # trace.append("g2 returned %r" % (ret,))
402- # yield "g1 eggs"
403- # trace.append("Finishing g1")
404- # async def g2(v = None):
405- # trace.append("Starting g2")
406- # yield "g2 spam"
407- # yield "g2 more spam"
408- # trace.append("Finishing g2")
409- # if v:
410- # return v
411- # async for x in g1():
412- # trace.append("Yielded %s" % (x,))
413- # self.assertEqual(trace,[
414- # "Starting g1",
415- # "Yielded g1 ham",
416- # "Starting g2",
417- # "Yielded g2 spam",
418- # "Yielded g2 more spam",
419- # "Finishing g2",
420- # "g2 returned None",
421- # "Starting g2",
422- # "Yielded g2 spam",
423- # "Yielded g2 more spam",
424- # "Finishing g2",
425- # "g2 returned 1",
426- # "Starting g2",
427- # "Yielded g2 spam",
428- # "Yielded g2 more spam",
429- # "Finishing g2",
430- # "g2 returned (2,)",
431- # "Starting g2",
432- # "Yielded g2 spam",
433- # "Yielded g2 more spam",
434- # "Finishing g2",
435- # "g2 returned StopAsyncIteration(3)",
436- # "Yielded g1 eggs",
437- # "Finishing g1",
438- # ])
387+ @_async_test
388+ async def test_generator_return_value (self ):
389+ """
390+ Test generator return value
391+ """
392+ trace = []
393+ async def g1 ():
394+ trace .append ("Starting g1" )
395+ yield "g1 ham"
396+ ret = async yield from g2 ()
397+ trace .append ("g2 returned %r" % (ret ,))
398+ for v in 1 , (2 ,), StopAsyncIteration (3 ):
399+ ret = async yield from g2 (v )
400+ trace .append ("g2 returned %r" % (ret ,))
401+ yield "g1 eggs"
402+ trace .append ("Finishing g1" )
403+ async def g2 (v = None ):
404+ trace .append ("Starting g2" )
405+ yield "g2 spam"
406+ yield "g2 more spam"
407+ trace .append ("Finishing g2" )
408+ if v :
409+ return v
410+ async for x in g1 ():
411+ trace .append ("Yielded %s" % (x ,))
412+ self .assertEqual (trace ,[
413+ "Starting g1" ,
414+ "Yielded g1 ham" ,
415+ "Starting g2" ,
416+ "Yielded g2 spam" ,
417+ "Yielded g2 more spam" ,
418+ "Finishing g2" ,
419+ "g2 returned None" ,
420+ "Starting g2" ,
421+ "Yielded g2 spam" ,
422+ "Yielded g2 more spam" ,
423+ "Finishing g2" ,
424+ "g2 returned 1" ,
425+ "Starting g2" ,
426+ "Yielded g2 spam" ,
427+ "Yielded g2 more spam" ,
428+ "Finishing g2" ,
429+ "g2 returned (2,)" ,
430+ "Starting g2" ,
431+ "Yielded g2 spam" ,
432+ "Yielded g2 more spam" ,
433+ "Finishing g2" ,
434+ "g2 returned StopAsyncIteration(3)" ,
435+ "Yielded g1 eggs" ,
436+ "Finishing g1" ,
437+ ])
439438
440439 @_async_test
441440 async def test_delegation_of_anext_to_non_generator (self ):
0 commit comments