]> granicus.if.org Git - python/commitdiff
Restore test tee with some modifications.
authorNeal Norwitz <nnorwitz@gmail.com>
Fri, 14 Apr 2006 06:33:24 +0000 (06:33 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Fri, 14 Apr 2006 06:33:24 +0000 (06:33 +0000)
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

Lib/test/leakers/test_tee.py [new file with mode: 0644]

diff --git a/Lib/test/leakers/test_tee.py b/Lib/test/leakers/test_tee.py
new file mode 100644 (file)
index 0000000..f0aa444
--- /dev/null
@@ -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()