Restore test tee with some modifications.

The test case came from test_generators, not test_itertools.
Ensure there's no cyclic garbage we are counting.

This is weird because it leaks, then reaches a limit:

python.exe -i test_tee.py
>>> leak()
0
[26633 refs]
>>> leak()
0
[26658 refs]
>>> leak()
0
[26683 refs]
>>> leak()
0
[26708 refs]
>>> leak()
0
[26708 refs]
>>> leak()
0
[26708 refs]
>>> leak()
0
This commit is contained in:
Neal Norwitz 2006-04-14 06:33:24 +00:00
parent cde8750414
commit 621292237c
1 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1,25 @@
# Test case taken from test_generators
# See http://mail.python.org/pipermail/python-dev/2005-November/058339.html
from itertools import tee
import gc
def leak():
def inner():
def fib():
def yield_identity_forever(g):
while 1:
yield g
def _fib():
for i in yield_identity_forever(head):
yield i
head, tail, result = tee(_fib(), 3)
return result
x = fib()
x.next()
inner()
gc.collect() ; gc.collect()
# this is expected to return 0
return gc.collect()