mirror of https://github.com/python/cpython
Add directory which contains known ref leaks. Some of these are likely to be system dependent (like test_gestalt).
This commit is contained in:
parent
99b4ee6373
commit
edc8f1366a
|
@ -0,0 +1,18 @@
|
||||||
|
This directory contains test cases that are known to leak references.
|
||||||
|
The idea is that you can import these modules while in the interpreter
|
||||||
|
and call the leak function repeatedly. This will only be helpful if
|
||||||
|
the interpreter was built in debug mode. If the total ref count
|
||||||
|
doesn't increase, the bug has been fixed.
|
||||||
|
|
||||||
|
Here's an example interpreter session for test_gestalt which still leaks:
|
||||||
|
|
||||||
|
>>> from test.leakers.test_gestalt import leak
|
||||||
|
[24275 refs]
|
||||||
|
>>> leak()
|
||||||
|
[28936 refs]
|
||||||
|
>>> leak()
|
||||||
|
[28938 refs]
|
||||||
|
>>> leak()
|
||||||
|
[28940 refs]
|
||||||
|
>>>
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.platform != 'darwin':
|
||||||
|
raise ValueError, "This test only leaks on Mac OS X'
|
||||||
|
|
||||||
|
def leak():
|
||||||
|
# taken from platform._mac_ver_lookup()
|
||||||
|
from gestalt import gestalt
|
||||||
|
import MacOS
|
||||||
|
|
||||||
|
try:
|
||||||
|
gestalt('sysu')
|
||||||
|
except MacOS.Error:
|
||||||
|
pass
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
# Test case taken from test_itertools
|
||||||
|
# See http://mail.python.org/pipermail/python-dev/2005-November/058339.html
|
||||||
|
|
||||||
|
from itertools import tee
|
||||||
|
|
||||||
|
def leak():
|
||||||
|
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()
|
Loading…
Reference in New Issue