Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_gc.cpython-35.opt-2.pyc



���]w��@s�ddlZddlmZmZmZmZmZmZmZm	Z	ddl
mZmZddl
Z
ddlZddlZddlZyddlZWnek
r�dZYnXyddlmZWnek
r�dd�ZYnXGdd�de�ZGd	d
�d
e�ZeGdd�de��ZGd
d�dej�ZGdd�dej�ZGdd�dej�Zdd�Zedkr�e�dS)�N)�verbose�
refcount_test�run_unittest�strip_python_stderr�cpython_only�
start_threads�temp_dir�requires_type_collecting)�assert_python_ok�make_script)�with_tp_delcCsGdd�dt�}|S)Nc@seZdZdd�ZdS)zwith_tp_del.<locals>.Cc_std��dS)Nzrequires _testcapi.with_tp_del)�	TypeError)�cls�args�kwargs�r�,/opt/alt/python35/lib64/python3.5/test_gc.py�__new__szwith_tp_del.<locals>.C.__new__N)�__name__�
__module__�__qualname__rrrrr�Csr)�object)rrrrrrsrc@seZdZdd�ZdS)�C1055820cCs||_||_dS)N)�i�loop)�selfrrrr�__init__#s	zC1055820.__init__N)rrrrrrrrr"src@seZdZdd�ZdS)�GC_Detectorcs:d�_�fdd�}tjtd�|��_dS)NFcs
d�_dS)NT)�gc_happened)�ignored)rrr�it_happened.sz)GC_Detector.__init__.<locals>.it_happenedi�)r�weakref�refr�wr)rr!r)rrr+s	zGC_Detector.__init__N)rrrrrrrrr'src@s+eZdZddd�Zdd�ZdS)�
UncollectableNcCs.|dkr!td|�|_n	||_dS)N�partner)r%r&)rr&rrrr=szUncollectable.__init__cCsdS)Nr)rrrr�
__tp_del__BszUncollectable.__tp_del__)rrrrr'rrrrr%5sr%c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�Zedd��Z
edd��Zdd�Zedd��Zdd�Zdd�Zdd�Zedd ��Zed!d"��Zd#d$�Zejed%�d&d'��Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#ed8d9��Z$e	d:d;��Z%e	d<d=��Z&d>d?�Z'd@S)A�GCTestscCs:g}|j|�tj�~|jtj�d�dS)N�)�append�gc�collect�assertEqual)r�lrrr�	test_listIs


zGCTests.test_listcCs7i}||d<tj�~|jtj�d�dS)Nr))r+r,r-)r�drrr�	test_dictPs


zGCTests.test_dictcCsFg}|f}|j|�tj�~~|jtj�d�dS)N�)r*r+r,r-)rr.�trrr�
test_tupleWs	

zGCTests.test_tuplecCsCGdd�d�}||_tj�~|jtj�d�dS)Nc@seZdZdS)zGCTests.test_class.<locals>.AN)rrrrrrr�Absr5r)�ar+r,�assertNotEqual)rr5rrr�
test_classas
	
zGCTests.test_classcCs=Gdd�dt�}tj�~|jtj�d�dS)Nc@seZdZdS)z%GCTests.test_newstyleclass.<locals>.AN)rrrrrrrr5jsr5r)rr+r,r7)rr5rrr�test_newstyleclassis
zGCTests.test_newstyleclasscCsLGdd�d�}|�}||_tj�~|jtj�d�dS)Nc@seZdZdS)z GCTests.test_instance.<locals>.AN)rrrrrrrr5qsr5r)r6r+r,r7)rr5r6rrr�
test_instanceps		
zGCTests.test_instancecCs
Gdd�dt�}|�}||_tj�~|jtj�d�Gdd�dt�}Gdd�d||�}|�}||_tj�~|jtj�d�~~|jtj�d�|�|_~|jtj�d�|jtj�d�dS)Nc@seZdZdS)z#GCTests.test_newinstance.<locals>.AN)rrrrrrrr5{sr5rc@seZdZdS)z#GCTests.test_newinstance.<locals>.BN)rrrrrrr�B�sr;c@seZdZdS)z#GCTests.test_newinstance.<locals>.CN)rrrrrrrr�sr)rr6r+r,r7�listr-)rr5r6r;rrrr�test_newinstanceys&		
		
zGCTests.test_newinstancecCsCGdd�d�}|�}tj�~|jtj�d�dS)Nc@seZdZdd�ZdS)zGCTests.test_method.<locals>.AcSs|j|_dS)N)rZinit)rrrrr�sz'GCTests.test_method.<locals>.A.__init__N)rrrrrrrrr5�sr5r)r+r,r7)rr5r6rrr�test_method�s
	
zGCTests.test_methodcCs�tGdd�d��}Gdd�d�}|�}||_t|�}|�}||_tj�~~|jtj�d�x7tjD]}t|�|kr�|`Pq�W|jd�tjj	|�dS)Nc@seZdZdd�ZdS)z(GCTests.test_legacy_finalizer.<locals>.AcSsdS)Nr)rrrrr'�sz3GCTests.test_legacy_finalizer.<locals>.A.__tp_del__N)rrrr'rrrrr5�sr5c@seZdZdS)z(GCTests.test_legacy_finalizer.<locals>.BN)rrrrrrrr;�sr;rz&didn't find obj in garbage (finalizer))
rr6�id�br+r,r7�garbage�fail�remove)rr5r;r6�id_ar@�objrrr�test_legacy_finalizer�s"				

zGCTests.test_legacy_finalizercCs�tGdd�dt��}Gdd�dt�}|�}||_t|�}|�}||_tj�~~|jtj�d�x7tjD]}t|�|kr�|`Pq�W|j	d�tjj
|�dS)Nc@seZdZdd�ZdS)z1GCTests.test_legacy_finalizer_newclass.<locals>.AcSsdS)Nr)rrrrr'�sz<GCTests.test_legacy_finalizer_newclass.<locals>.A.__tp_del__N)rrrr'rrrrr5�sr5c@seZdZdS)z1GCTests.test_legacy_finalizer_newclass.<locals>.BN)rrrrrrrr;�sr;rz&didn't find obj in garbage (finalizer))rrr6r?r@r+r,r7rArBrC)rr5r;r6rDr@rErrr�test_legacy_finalizer_newclass�s$				

z&GCTests.test_legacy_finalizer_newclasscCs:i}td|�tj�~|jtj�d�dS)Nzdef f(): pass
r2)�execr+r,r-)rr0rrr�
test_function�s


zGCTests.test_functioncCs7dd�}tj�|�|jtj�d�dS)NcSstj�}dS)N)�sys�	_getframe)�framerrr�f�szGCTests.test_frame.<locals>.fr))r+r,r-)rrMrrr�
test_frame�s
zGCTests.test_framecCs�tj�|jtjg�g}|j|�t|�}tj�}tj|tjB�~tj�tj|�|jt	tj�d�tjj
�}|jt|�|�dS)Nr))r+r,r-rAr*r?�	get_debug�	set_debugZ
DEBUG_SAVEALL�len�pop)r�LZid_L�debugrErrr�test_saveall�s



zGCTests.test_saveallcCs]tj�}tj�tjd�Gdd�d�}|�}~tj�tj|�dS)Nr)c@seZdZdd�ZdS)zGCTests.test_del.<locals>.AcSst|�dS)N)�dir)rrrr�__del__sz#GCTests.test_del.<locals>.A.__del__N)rrrrWrrrrr5�sr5)r+�
get_threshold�enable�
set_threshold�disable)r�
thresholdsr5r6rrr�test_del�s

	
zGCTests.test_delcCs`tj�}tj�tjd�Gdd�dt�}|�}~tj�tj|�dS)Nr)c@seZdZdd�ZdS)z$GCTests.test_del_newclass.<locals>.AcSst|�dS)N)rV)rrrrrWsz,GCTests.test_del_newclass.<locals>.A.__del__N)rrrrWrrrrr5sr5)r+rXrYrZrr[)rr\r5r6rrr�test_del_newclasss

	
zGCTests.test_del_newclasscCs�tj�tj�\}}}g}tj�\}}}|j||fd�|j||fd�|j|d�|j||�dS)Nr�)rr)rr)r+r,�	get_countr-Z
assertLessZ
assertGreater)rr6r@�c�xr0�erMrrr�test_get_counts
zGCTests.test_get_countcCs�tj�g}tjd�tj�\}}}tjd�tj�\}}}tjd�tj�\}}	}
|j||fd�|j||fd�|j|	|
fd�dS)Nrr)r2)r)r)rr))rr)r+r,r`r-)rrbr6r@rar0rcrM�g�hrrrr�test_collect_generations+s



z GCTests.test_collect_generationscs�G�fdd�d��tj�d}x�td�D]�}g}x#t|�D]}|��g}qOWg}x#t|�D]}|��g}q{Wi}x)t|�D]}d|d��i}q�Wq6Wtj�dS)Ncs(eZdZdZ�fdd�ZdS)z#GCTests.test_trashcan.<locals>.Ouchrcs1�jd�_�jddkr-tj�dS)Nr)�r)�nr+r,)r)�OuchrrrWCsz+GCTests.test_trashcan.<locals>.Ouch.__del__N)rrrrirWr)rjrrrjAsrj�r2r))r+rY�ranger[)r�N�countr3r�u�vr)rjr�
test_trashcan@s
zGCTests.test_trashcanz*test meaningless on builds without threadscs1d�d}dd��G��fdd�dt����fdd����fd	d
�}tj�}tjd�zvg�g}x3t|�D]%}tjd|�}|j|�q�Wt|�fd
d���t	j
d�WdQRXWdtj|�Xtj�|j
t�j�t�j��dS)N�<r2cssz	dVWdtjd�XdS)Ng���ư>)�time�sleeprrrr�sleeper_genis	z2GCTests.test_trashcan_threads.<locals>.sleeper_gencsCeZdZgZgZ�fdd�Z��fdd�ZdS)z(GCTests.test_trashcan_threads.<locals>.Ccs$||dd�<�jjd�dS)N)�initsr*)r�alist)rrrrtsz1GCTests.test_trashcan_threads.<locals>.C.__init__cs'�jjd���}t|�dS)N)�delsr*�next)rre)rrurrrWws	z0GCTests.test_trashcan_threads.<locals>.C.__del__N)rrrrvrxrrWr)rrurrrpsrcs<�g�}x&t��D]}�|g�g}qW~dS)N)rl)rbr)r�NESTINGrr�make_nested�sz2GCTests.test_trashcan_threads.<locals>.make_nestedcsx�s��qWdS)Nrr)�exitr{rr�
run_thread�s	z1GCTests.test_trashcan_threads.<locals>.run_threadg�h㈵��>�targetcs
�jd�S)Nr))r*r)r|rr�<lambda>�sz/GCTests.test_trashcan_threads.<locals>.<lambda>g�?)r<rJ�getswitchinterval�setswitchintervalrl�	threading�Threadr*rrsrtr+r,r-rQrvrx)rZ	N_THREADSr}Zold_switchinterval�threadsrr3r)rrzr|r{rur�test_trashcan_threadscs&

zGCTests.test_trashcan_threadscCs�Gdd�d�}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS)Nc@seZdZdd�ZdS)zGCTests.test_boom.<locals>.BoomcSs|`t�dS)N)�attr�AttributeError)r�
someattributerrr�__getattr__�sz+GCTests.test_boom.<locals>.Boom.__getattr__N)rrrr�rrrr�Boom�sr��)r�r+r,rQrAr-)rr�r6r@�
garbagelenrrr�	test_boom�s				
zGCTests.test_boomcCs�Gdd�d�}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS)Nc@s(eZdZdd�Zdd�ZdS)z!GCTests.test_boom2.<locals>.Boom2cSs
d|_dS)Nr)rb)rrrrr�sz*GCTests.test_boom2.<locals>.Boom2.__init__cSs.|jd7_|jdkr$|`t�dS)Nr))rbr�r�)rr�rrrr��sz-GCTests.test_boom2.<locals>.Boom2.__getattr__N)rrrrr�rrrr�Boom2�sr�r�)r�r+r,rQrAr-)rr�r6r@r�rrr�
test_boom2�s
				
zGCTests.test_boom2cCs�Gdd�dt�}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS)Nc@seZdZdd�ZdS)z'GCTests.test_boom_new.<locals>.Boom_NewcSs|`t�dS)N)r�r�)rr�rrrr��sz3GCTests.test_boom_new.<locals>.Boom_New.__getattr__N)rrrr�rrrr�Boom_New�sr�r�)rr�r+r,rQrAr-)rr�r6r@r�rrr�
test_boom_new�s				
zGCTests.test_boom_newcCs�Gdd�dt�}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS)Nc@s(eZdZdd�Zdd�ZdS)z)GCTests.test_boom2_new.<locals>.Boom2_NewcSs
d|_dS)Nr)rb)rrrrr�sz2GCTests.test_boom2_new.<locals>.Boom2_New.__init__cSs.|jd7_|jdkr$|`t�dS)Nr))rbr�r�)rr�rrrr��sz5GCTests.test_boom2_new.<locals>.Boom2_New.__getattr__N)rrrrr�rrrr�	Boom2_New�sr�r�)rr�r+r,rQrAr-)rr�r6r@r�rrr�test_boom2_new�s
				
zGCTests.test_boom2_newcCs.dddg}tj|�}|j�|j||�t|�}tj|�}|j�|j||�ddddi}ddddg}tj|�}|j�|j||�tjddgddid
�}|j�|j|ddgttd���|jtjddd	�g�dS)Nr)�r_�r2r�rr6y@)rrr)r+Z
get_referents�sortr-�tupler<rl)rrwZgotZatupleZadictZexpectedrrr�test_get_referents�s"


!
&zGCTests.test_get_referentscCsk|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjd��|jtjtd���|jtjt��|jtjt��|jtjt��|jtjt���Gdd	�d	�}Gd
d�dt�}Gdd
�d
�}Gdd�dt�}Gdd�dt�}|jtjt��|jtj|��|jtj|���|jtj|���|jtjg��|jtjt	���|jtj|���|jtj|���|jtj|���dS)Nr)g�?y@TF�ar6c@seZdZdS)z*GCTests.test_is_tracked.<locals>.UserClassN)rrrrrrr�	UserClass%sr�c@seZdZdS)z(GCTests.test_is_tracked.<locals>.UserIntN)rrrrrrr�UserInt(sr�c@seZdZfZdS)z/GCTests.test_is_tracked.<locals>.UserClassSlotsN)rrr�	__slots__rrrr�UserClassSlots,sr�c@seZdZfZdS)z/GCTests.test_is_tracked.<locals>.UserFloatSlotsN)rrrr�rrrr�UserFloatSlots0sr�c@seZdZfZdS)z-GCTests.test_is_tracked.<locals>.UserIntSlotsN)rrrr�rrrr�UserIntSlots4sr�y�?@)
ZassertFalser+Z
is_tracked�	bytearray�type�intr�float�
assertTrue�set)rr�r�r�r�r�rrr�test_is_trackeds6zGCTests.test_is_trackedcs�g���fdd��dd�td�D�}�fdd�|D��d}tj�|jt��d�d}tj�|jt��d�x�D]}|j|d�q�WdS)Ncs!dd��D��dd�<dS)NcSsg|]}|��qSrr)�.0r$rrr�
<listcomp>Fs	z>GCTests.test_bug1055820b.<locals>.callback.<locals>.<listcomp>r)r )�WRs�ouchrr�callbackEsz*GCTests.test_bug1055820b.<locals>.callbackcSsg|]}t|��qSr)r)r�rrrrr�Hs	z,GCTests.test_bug1055820b.<locals>.<listcomp>r2cs"g|]}tj|���qSr)r"r#)r�ra)r�rrr�Is	r)rlr+r,r-rQ)rZCsrarbr)r�r�r�r�test_bug1055820bAs


zGCTests.test_bug1055820bcsZtj�Gdd�d��Gdd�d����fdd�}|�tj�dS)Nc@seZdZdS)z GCTests.test_bug21435.<locals>.AN)rrrrrrrr5esr5c@s(eZdZdd�Zdd�ZdS)z GCTests.test_bug21435.<locals>.BcSs
||_dS)N)rb)rrbrrrrisz)GCTests.test_bug21435.<locals>.B.__init__cSs
d|_dS)N)r�)rrrrrWlsz(GCTests.test_bug21435.<locals>.B.__del__N)rrrrrWrrrrr;hsr;cs.��}����}||_||_dS)N)r�)r6r@)r5r;rr�do_workos		z&GCTests.test_bug21435.<locals>.do_work)r+r,)rr�r)r5r;r�
test_bug21435Ys

zGCTests.test_bug21435cs�ddl�d}��fdd�}||d�}�jd|��jd|�||d�}�jd	|��jd
|kp�d|k|�||d�}�jd
|�dS)Nra�if 1:
            import gc
            import _testcapi
            @_testcapi.with_tp_del
            class X:
                def __init__(self, name):
                    self.name = name
                def __repr__(self):
                    return "<X %%r>" %% self.name
                def __tp_del__(self):
                    pass

            x = X('first')
            x.x = x
            x.y = X('second')
            del x
            gc.set_debug(%s)
        cs��jtjdd|gd�jd�j�}|j�\}}|jj�|jj��j|j	d��j|j
�d�t|�S)Nz-Wdz-c�stdout�stderrr�)�PopenrJ�
executable�PIPE�communicater��closer�r-�
returncode�stripr)�code�pr�r�)r�
subprocessrr�run_command�s	

z5GCTests.test_garbage_at_shutdown.<locals>.run_command�0s=ResourceWarning: gc: 2 uncollectable objects at shutdown; uses<X 'first'>zgc.DEBUG_UNCOLLECTABLEs8ResourceWarning: gc: 2 uncollectable objects at shutdowns[<X 'first'>, <X 'second'>]s[<X 'second'>, <X 'first'>]zgc.DEBUG_SAVEALLs!uncollectable objects at shutdown)r�ZassertInZassertNotInr�)rr�r�r�r)rr�r�test_garbage_at_shutdownys		z GCTests.test_garbage_at_shutdowncCs8d}td|�\}}}|j|j�d�dS)Nz�if 1:
            import weakref
            class C:
                def __del__(self):
                    print('__del__ called')
            l = [C()]
            l.append(l)
            z-cs__del__ called)r
r-r�)rr��rc�out�errrrr�test_gc_main_module_at_shutdown�sz'GCTests.test_gc_main_module_at_shutdowncCsht��X}d}d|f}t|d|�td|�\}}}|j|j�d�WdQRXdS)Nz�if 1:
                import weakref
                class C:
                    def __del__(self):
                        print('__del__ called')
                l = [C()]
                l.append(l)
                zvif 1:
                import sys
                sys.path.insert(0, %r)
                import gctest
                Zgctestz-cs__del__ called)rrr
r-r�)rZ
script_dir�moduler�r�r�r�rrr�#test_gc_ordinary_module_at_shutdown�s
z+GCTests.test_gc_ordinary_module_at_shutdowncCs�tj�}|jt|�d�xy|D]q}|j|t�|jt|�dddh�|j|dd�|j|dd�|j|dd�q)Wtj�r�|j	tj
�tj�tj�}tjd�tj�}|j|dd|ddd�|j|dd|dd�|j|dd|dd�tjd�tj�}|j|dd|ddd�|j|dd|dd�|j|dd|ddd�dS)Nr��	collected�collections�
uncollectablerr)r2)
r+Z	get_statsr-rQ�assertIsInstance�dictr�ZassertGreaterEqual�	isenabledZ
addCleanuprYr[r,)rZstats�st�old�newrrr�test_get_stats�s.


$  
$ zGCTests.test_get_statsN)(rrrr/r1r4r8r9r:r	r=r>rrFrGrIrrNrUr]r^rdrgrq�unittestZ
skipUnlessr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr(Hs>
	
	#;/ 1r(c@sveZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
dd��ZdS)�GCCallbackTestscCshtj�|_tj�tj�|_tjd�tjj|j	�tjj|j
�g|_dS)Nr)r+r��enabledr[rOrTrP�	callbacksr*�cb1�cb2�othergarbage)rrrr�setUp�s

zGCCallbackTests.setUpcCs�|`tjj|j�tjj|j�tj|j�|jrOtj	�tj
�x)tjD]}t|t
�rcd|_qcWtjdd�=|`tj
�dS)N)�visitr+r�rCr�r�rPrTr�rYr,rA�
isinstancer%r&r�)rrErrr�tearDown�s	


zGCCallbackTests.tearDowncCsWg|_tj�tjdd�g}tjdd�<|jj|�g|_dS)N)r�r+r,rAr�r*)rrArrr�precleans
	
'zGCCallbackTests.precleancCs#|jjd|t|�f�dS)Nr))r�r*r�)r�phase�inforrrr�szGCCallbackTests.cb1cCs�|jjd|t|�f�|dkr�t|d�r�dd�tjD�}dd�tjD�tjdd�<x|D]}d|_qzWdS)Nr2�stop�cleanupcSs%g|]}t|t�r|�qSr)r�r%)r�rcrrrr�s	z'GCCallbackTests.cb2.<locals>.<listcomp>cSs%g|]}t|t�s|�qSr)r�r%)r�rcrrrr�s	)r�r*r��hasattrr+rAr&)rr�r�Zucrcrrrr�s#
zGCCallbackTests.cb2cCsC|j�tj�dd�|jD�}dd�|D�}dd�|D�}|j|dgd�|j|dgd�dd�|jD�}dd�|D�}d	d�|D�}|j|d
gd�|j|dgd�xT|jD]I}|d}|jd|k�|jd
|k�|jd|k�q�WdS)NcSsg|]}|d�qS)rr)r�rprrrr�#s	z0GCCallbackTests.test_collect.<locals>.<listcomp>cSs"g|]}|dkr|�qS)r)r)r�rrrrr�$s	cSs"g|]}|dkr|�qS)r2r)r�rrrrr�%s	r)r2cSsg|]}|d�qS)r)r)r�rprrrr�*s	cSs"g|]}|dkr|�qS)�startr)r�rrrrr�+s	cSs"g|]}|dkr|�qS)r�r)r�rrrrr�,s	r�r��
generationr�r�)r�r+r,r�r-r�)rriZn1Zn2rpr�rrr�test_collects"


zGCCallbackTests.test_collectcCsM|j�tjd�x/|jD]$}|d}|j|dd�q!WdS)Nr2r�)r�r+r,r�r-)rrpr�rrr�test_collect_generation7s



z'GCCallbackTests.test_collect_generationcCsg|j�t�t�td�tj�xV|jD]K}|ddkrOq6|d}|j|dd�|j|dd�q6W|jttj�d�x!tjD]}|j	|t�q�Wd	|_
g|_gtjdd�<tj�xV|jD]K}|ddkrq�|d}|j|dd
�|j|dd�q�W|jttj�d
�dS)Ni�r)r�r2r�r��r�Tr)r�r%rr+r,r�r-rQrAr�r�)rrpr�rcrrr�test_collect_garbage>s2



		

z$GCCallbackTests.test_collect_garbageN)rrrr�r�r�r�r�r�r�rr�rrrrr��s


r�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�GCTogglingTestscCstj�dS)N)r+rY)rrrrr�dszGCTogglingTests.setUpcCstj�dS)N)r+r[)rrrrr�gszGCTogglingTests.tearDownc
s-td�}tj�td�}||_|`td�}tj|��g���fdd�}tj||�}d}}}g}d}t�}xS|js�|d7}|dkr�|j	d�|j
t��d�|jg�q�W|j
t��d�x�D]}	|j
|	d�qWdS)Nrr)r2cs��g�dd�<dS)Nr)r )�c2wrr�rrr�zsz2GCTogglingTests.test_bug1055820c.<locals>.callbacki'z'gc didn't happen after 10000 iterations)
rr+r,Z
keep_c0_aliverr"r#rrrBr-rQr*)
rZc0�c1�c2r�Zc0wr�junkr�detectorrbr)r�r�r�test_bug1055820cjs.
	 	


z GCTogglingTests.test_bug1055820cc	s%g�G��fdd�dt�}|d�}tj�td�}||_|`td�}tj|��d}}}t�}g}d}xS|js�|d7}|dkr�|j	d�|j
t��d�|jg�q�W|j
t��d�x�D]}|j
|d�qWdS)Ncs%eZdZ��fdd�ZdS)z+GCTogglingTests.test_bug1055820d.<locals>.Dcs��g�dd�<dS)Nr)r)r�r�rrrW�sz3GCTogglingTests.test_bug1055820d.<locals>.D.__del__N)rrrrWr)r�r�rr�D�sr�rr)r2i'z'gc didn't happen after 10000 iterations)
rr+r,Z
keep_d0_aliverr"r#rrrBr-rQr*)	rr�Zd0r�r�r�r�rrbr)r�r�r�test_bug1055820d�s,
		


z GCTogglingTests.test_bug1055820dN)rrrr�r�r�r�rrrrr�csFr�cCs�tj�}tj�tj�}tj|tj@�ztj�ttt	t
�Wdtj|�trutd�tj
�|s�tj�XdS)Nzrestoring automatic collection)r+r�r[rOrPZ
DEBUG_LEAKr,rr(r�r�r�printrY)r�rTrrr�	test_main�s




r��__main__)r�Ztest.supportrrrrrrrr	Ztest.support.script_helperr
rrJrsr+r"r��ImportErrorZ	_testcapirrrrr%ZTestCaser(r�r�r�rrrrr�<module>s4:

���z�