diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2006-04-14 06:33:24 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2006-04-14 06:33:24 (GMT) |
commit | 621292237c2d47dabb33b37ec6db945fa1d5716e (patch) | |
tree | 101b54855400c6a672a20fcf2b5f88354ae83f6a | |
parent | cde87504145085dc371c74d755a5084de5dd9b64 (diff) | |
download | cpython-621292237c2d47dabb33b37ec6db945fa1d5716e.zip cpython-621292237c2d47dabb33b37ec6db945fa1d5716e.tar.gz cpython-621292237c2d47dabb33b37ec6db945fa1d5716e.tar.bz2 |
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
-rw-r--r-- | Lib/test/leakers/test_tee.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/Lib/test/leakers/test_tee.py b/Lib/test/leakers/test_tee.py new file mode 100644 index 0000000..f0aa444 --- /dev/null +++ b/Lib/test/leakers/test_tee.py @@ -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() |