Your IP : 216.73.217.129


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



���]�8�@s�ddlZddlZddlZddlZyddlmZWnek
rddd�ZYnXddlmZGdd�d�Z	Gdd	�d	e	�Z
Gd
d�de	�ZGdd
�d
e	�ZGdd�de
�Z
Gdd�dee
�ZGdd�d�ZGdd�deej�ZGdd�d�ZGdd�dee
�ZGdd�dee�ZGdd�dee
�ZGdd�deej�ZGd d!�d!�ZGd"d#�d#ee
�ZGd$d%�d%ee�ZGd&d'�d'ee
�ZGd(d)�d)eej�ZGd*d+�d+e
�ZeGd,d-�d-e��ZeGd.d/�d/e��ZeGd0d1�d1ee��Zej Gd2d3�d3eej��Z!e"d4kr�ej#�dS)5�N)�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�6/opt/alt/python35/lib64/python3.5/test_finalization.py�__new__szwith_tp_del.<locals>.C.__new__N)�__name__�
__module__�__qualname__r	rrrr�Csr
)�object)rr
rrrr
sr)�supportc@s�eZdZgZgZgZgZdZfZe	dd��Z
e	ejdd���Z
dd�Zdd	�Zd
d�ZdS)
�NonGCSimpleBaseFcCsO|jj�|jj�tjj�tj�|jj�|jj�dS)N)�	survivors�clear�errors�gc�garbage�collect�	del_calls�tp_del_calls)rrrr�_cleanup%s




zNonGCSimpleBase._cleanupccsqtj��^|jj�|jj�dt_zdV|jrN|jd�Wddt_|j�XWdQRXdS)NFrT)	rZ
disable_gcrrrr�	_cleaningrr)rrrr�test.s


			zNonGCSimpleBase.testcCsdS)Nr)�selfrrr�check_sanity@szNonGCSimpleBase.check_sanitycCssy7|js6|jjt|��|j�|j�Wn5tk
rn}z|jj|�WYdd}~XnXdS)N)rr�append�idr�side_effect�	Exceptionr)r�errr�__del__Es	
zNonGCSimpleBase.__del__cCsdS)Nr)rrrrr RszNonGCSimpleBase.side_effectN)r
rrrrrrr�	__slots__�classmethodr�
contextlib�contextmanagerrrr#r rrrrrs	
rc@s(eZdZdd�Zdd�ZdS)�
SimpleBasecCst|�|_dS)N)rZid_)rrrr�__init__ZszSimpleBase.__init__cCsdS)Nr)rrrrr]szSimpleBase.check_sanityN)r
rrr)rrrrrr(Xsr(c@seZdZfZdS)�NonGCN)r
rrr$rrrrr*asr*c@s"eZdZfZdd�ZdS)�NonGCResurrectorcCs|jj|�dS)N)rr)rrrrr gszNonGCResurrector.side_effectN)r
rrr$r rrrrr+dsr+c@seZdZdS)�SimpleN)r
rrrrrrr,msr,c@seZdZdS)�SimpleResurrectorN)r
rrrrrrr-psr-c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestBasecCs-tjdd�|_gtjdd�<dS)N)rr�old_garbage)rrrr�setUpvszTestBase.setUpc
Cs/z|jtjg�Wd|`tj�XdS)N)�assertEqualrrr/r)rrrr�tearDownzszTestBase.tearDowncCs#|jttj�t|��dS)N)r1�sortedr(r)r�idsrrr�assert_del_calls�szTestBase.assert_del_callscCs#|jttj�t|��dS)N)r1r3r(r)rr4rrr�assert_tp_del_calls�szTestBase.assert_tp_del_callscCs0|jtdd�tjD��t|��dS)Ncss|]}t|�VqdS)N)r)�.0�xrrr�	<genexpr>�sz,TestBase.assert_survivors.<locals>.<genexpr>)r1r3r(r)rr4rrr�assert_survivors�szTestBase.assert_survivorscCs0|jtdd�tjD��t|��dS)Ncss|]}t|�VqdS)N)r)r7r8rrrr9�sz*TestBase.assert_garbage.<locals>.<genexpr>)r1r3rr)rr4rrr�assert_garbage�szTestBase.assert_garbagecCstjj�dS)N)r(rr)rrrr�clear_survivors�szTestBase.clear_survivorsN)
r
rrr0r2r5r6r:r;r<rrrrr.tsr.c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�SimpleFinalizationTestc
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	g�|j
|�d�tj�|j|�|j	g�WdQRXdS)N)r(rr,r�weakref�refrrr5r:�assertIs)r�sr4�wrrrr�test_simple�s
	




z"SimpleFinalizationTest.test_simplec
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	|�|j
|�d�|j�tj�|j|�|j	g�WdQRX|j|�d�dS)N)
r(rr-rr>r?rrr5r:�assertIsNotr<r@)rrAr4rBrrr�test_simple_resurrect�s
	





z,SimpleFinalizationTest.test_simple_resurrectc
Cs�tj��~t�}|jtj|��t|�g}~tj�|j|�|j	g�tj�|j|�|j	g�WdQRXdS)N)
r(rr*�assertFalser�
is_trackedrrr5r:)rrAr4rrr�test_non_gc�s
	




z"SimpleFinalizationTest.test_non_gcc
Cs�tj���t�}|jtj|��t|�g}~tj�|j|�|j	|�|j
�tj�|j|d�|j	|�WdQRXdS)N�)r(rr+rFrrGrrr5r:r<)rrAr4rrr�test_non_gc_resurrect�s
	




z,SimpleFinalizationTest.test_non_gc_resurrectN)r
rrrCrErHrJrrrrr=�s
r=cs4eZdZ�fdd�Z�fdd�Z�S)�
SelfCycleBasecst�j�||_dS)N)�superr)r?)r)�	__class__rrr)�s
zSelfCycleBase.__init__cst�j�dS)N)rLr)r)rMrrr�s
zSelfCycleBase.check_sanity)r
rrr)rrr)rMrrK�srKc@seZdZdS)�SimpleSelfCycleN)r
rrrrrrrN�srNc@seZdZdS)�SelfCycleResurrectorN)r
rrrrrrrO�srOc@seZdZdd�ZdS)�SuicidalSelfCyclecCs
d|_dS)N)r?)rrrrr �szSuicidalSelfCycle.side_effectN)r
rrr rrrrrP�srPc@s4eZdZdd�Zdd�Zdd�ZdS)�SelfCycleFinalizationTestc
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	g�|j
|�d�tj�|j|�|j	g�WdQRXdS)N)r(rrNrr>r?rrr5r:r@)rrAr4rBrrrrC�s
	




z%SelfCycleFinalizationTest.test_simplec
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	|�|j
|�d�|j�tj�|j|�|j	g�|j
|�d�WdQRXdS)N)r(rrOrr>r?rrr5r:r@r<)rrAr4rBrrrrE�s
	






z/SelfCycleFinalizationTest.test_simple_resurrectc
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	g�|j
|�d�tj�|j|�|j	g�|j
|�d�WdQRXdS)N)r(rrPrr>r?rrr5r:r@)rrAr4rBrrr�test_simple_suicides
	





z-SelfCycleFinalizationTest.test_simple_suicideN)r
rrrCrErRrrrrrQ�srQcs.eZdZdd�Z�fdd�Z�S)�ChainedBasecCsd|_||_||_dS)NF)�suicided�left�right)rrUrrr�chain&s		zChainedBase.chaincsGt�j�|jrn*|j}|jr.n|j}|jrCndS)N)rLrrTrUrV)rrUrV)rMrrr+s
					zChainedBase.check_sanity)r
rrrWrrr)rMrrS$srSc@seZdZdS)�
SimpleChainedN)r
rrrrrrrX<srXc@seZdZdS)�ChainedResurrectorN)r
rrrrrrrY?srYc@seZdZdd�ZdS)�SuicidalChainedcCsd|_d|_d|_dS)NT)rTrUrV)rrrrr Ds		zSuicidalChained.side_effectN)r
rrr rrrrrZBsrZc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�CycleChainFinalizationTestcCsMdd�|D�}x3tt|��D]}||j||d�q&W|S)NcSsg|]}|��qSrr)r7rrrr�
<listcomp>Us	z:CycleChainFinalizationTest.build_chain.<locals>.<listcomp>�)�range�lenrW)r�classes�nodes�irrr�build_chainTsz&CycleChainFinalizationTest.build_chaincCs�t|�}tj���|j|�}dd�|D�}dd�|D�}~tj�|j|�|jg�|jdd�|D�dg|�tj�|j|�WdQRXdS)NcSsg|]}t|��qSr)r)r7rArrrr\^s	zKCycleChainFinalizationTest.check_non_resurrecting_chain.<locals>.<listcomp>cSsg|]}tj|��qSr)r>r?)r7rArrrr\_s	cSsg|]}|��qSrr)r7rBrrrr\ds	)	r_r(rrcrrr5r:r1)rr`�Nrar4�wrsrrr�check_non_resurrecting_chainZs



$
z7CycleChainFinalizationTest.check_non_resurrecting_chaincCs�t|�}tj���|j|�}t|�}dd�|D�}dd�|D�}dd�|D�}~tj�|j|�|j|�|jdd�|D�dg|�|j	�tj�|j|�|jg�WdQRXdS)NcSsg|]}t|��qSr)r)r7rArrrr\ms	zGCycleChainFinalizationTest.check_resurrecting_chain.<locals>.<listcomp>cSs+g|]!}t|t�rt|��qSr)�
isinstancer-r)r7rArrrr\ns	cSsg|]}tj|��qSr)r>r?)r7rArrrr\os	cSsg|]}|��qSrr)r7rBrrrr\us	)
r_r(rrcrrr5r:r1r<)rr`rdrar4Zsurvivor_idsrerrr�check_resurrecting_chainhs 



$


z3CycleChainFinalizationTest.check_resurrecting_chaincCs|jtgd�dS)N�)rfrX)rrrr�test_homogenous{sz*CycleChainFinalizationTest.test_homogenouscCs|jtgd�dS)Nri)rhrY)rrrr�test_homogenous_resurrect~sz4CycleChainFinalizationTest.test_homogenous_resurrectcCs|jtgd�dS)Nri)rfrZ)rrrr�test_homogenous_suicidal�sz3CycleChainFinalizationTest.test_homogenous_suicidalcCs|jttgd�dS)NrI)rfrZrX)rrrr�test_heterogenous_suicidal_one�sz9CycleChainFinalizationTest.test_heterogenous_suicidal_onecCs#|jtgdtgd�dS)NrI)rfrZrX)rrrr�test_heterogenous_suicidal_two�sz9CycleChainFinalizationTest.test_heterogenous_suicidal_twocCs|jttgd�dS)NrI)rhrYrX)rrrr�test_heterogenous_resurrect_one�sz:CycleChainFinalizationTest.test_heterogenous_resurrect_onecCs|jtttgd�dS)NrI)rhrYrXrZ)rrrr�test_heterogenous_resurrect_two�sz:CycleChainFinalizationTest.test_heterogenous_resurrect_twocCs.|jtgdtgdtgd�dS)NrI)rhrYrXrZ)rrrr�!test_heterogenous_resurrect_three�sz<CycleChainFinalizationTest.test_heterogenous_resurrect_threeN)r
rrrcrfrhrjrkrlrmrnrorprqrrrrr[Msr[c@s(eZdZdd�Zdd�ZdS)�
LegacyBasecCsiy-|js,|jjt|��|j�Wn5tk
rd}z|jj|�WYdd}~XnXdS)N)rrrrrr!r)rr"rrrr#�s	zLegacyBase.__del__cCssy7|js6|jjt|��|j�|j�Wn5tk
rn}z|jj|�WYdd}~XnXdS)N)rrrrrr r!r)rr"rrr�
__tp_del__�s	
zLegacyBase.__tp_del__N)r
rrr#rsrrrrrr�s
rrc@seZdZdS)�LegacyN)r
rrrrrrrt�srtc@seZdZdd�ZdS)�LegacyResurrectorcCs|jj|�dS)N)rr)rrrrr �szLegacyResurrector.side_effectN)r
rrr rrrrru�sruc@seZdZdS)�LegacySelfCycleN)r
rrrrrrrv�srvcsFeZdZ�fdd�Zdd�Zdd�Zdd�Z�S)	�LegacyFinalizationTestcs(tjj�tj�t�j�dS)N)rrrrrLr2)r)rMrrr2�s

zLegacyFinalizationTest.tearDownc
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	|�|j
g�|j|�d�tj�|j|�|j	|�WdQRXdS)N)r(rrtrr>r?rrr5r6r:r@)rrAr4rBrrr�test_legacy�s
	





z"LegacyFinalizationTest.test_legacyc
Cs�tj���t�}t|�g}tj|�}~tj�|j|�|j	|�|j
|�|j|�d�|j�tj�|j|�|j	|d�|j
|�WdQRX|j|�d�dS)NrI)
r(rrurr>r?rrr5r6r:r@r<)rrAr4rBrrr�test_legacy_resurrect�s 
	






z,LegacyFinalizationTest.test_legacy_resurrectc
Cs�tj���t�}t|�g}tj|�}~tj�|jg�|j	g�|j
g�|j|�|j|�d�dtj
d_WdQRX|jg�|j|�d�dS)Nr)r(rrvrr>r?rrr5r6r:r;rDrr@)rrAr4rBrrr�test_legacy_self_cycle�s
	





z-LegacyFinalizationTest.test_legacy_self_cycle)r
rrr2rxryrzrr)rMrrw�srw�__main__)$r&rZunittestr>Z	_testcapir�ImportErrorrrrr(r*r+r,r-r.ZTestCaser=rKrNrOrPrQrSrXrYrZr[rrrtrurvZcpython_onlyrwr
�mainrrrr�<module>sJ
B		?
	:MA