Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/unittest/test/testmock/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/unittest/test/testmock/__pycache__/testpatch.cpython-38.pyc
U

@��g��@s�ddlZddlZddlZddlmZddlmZmZddlm	Z	ddl
mZmZm
Z
mZmZmZmZmZmZmZmZdZejeZdeZdd	d
�Ze
jae
jZGdd�de �Z!d
eZ"e!fdd�Z#Gdd�de �Z$Gdd�dej%�Z&edkr�e�'�dS)�N)�support)�	SomeClass�is_instance)�uncache)�NonCallableMock�
CallableMixin�sentinel�	MagicMock�Mock�NonCallableMagicMock�patch�_patch�DEFAULT�call�_get_target�builtinsz%s.PTModuleTcsBG�fdd�dt�}|s<�fdd�}�fdd�}||_||_|�S)NcseZdZ�fdd�ZdS)z_get_proxy.<locals>.Proxycs
t�|�S�N)�getattr��self�name��obj��?/opt/cppython/lib/python3.8/unittest/test/testmock/testpatch.py�__getattr__sz%_get_proxy.<locals>.Proxy.__getattr__N)�__name__�
__module__�__qualname__rrrrr�Proxysrcst�||�dSr)�setattr�rr�valuerrr�__setattr__sz_get_proxy.<locals>.__setattr__cst�|�dSr)�delattrrrrr�__delattr__!sz_get_proxy.<locals>.__delattr__)�objectr#r%)r�get_onlyrr#r%rrr�
_get_proxysr(c@sPeZdZdd�Zdd�Zdd�ZdZedd	��Ze	d
d��Z
Gdd
�d
e�ZdS)�FoocCsdSrr�r�arrr�__init__.�zFoo.__init__cCsdSrrr*rrr�f/r-zFoo.fcCsdSrr�rrrr�g0r-zFoo.g�barcCsdSrrrrrr�
static_method3szFoo.static_methodcCsdSrr)�clsrrr�class_method6szFoo.class_methodc@seZdZdd�ZdS)zFoo.BarcCsdSrrr/rrrr+:r-z	Foo.Bar.aN�rrrr+rrrr�Bar9sr6N)
rrrr,r.r0�foo�staticmethodr2�classmethodr4r&r6rrrrr)-s

r)z%s.FoocCsdSrr�r+�brrr�function?r-r<c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	ContainercCs
i|_dSr��valuesr/rrrr,CszContainer.__init__cCs
|j|Srr>rrrr�__getitem__FszContainer.__getitem__cCs||j|<dSrr>r!rrr�__setitem__IszContainer.__setitem__cCs|j|=dSrr>rrrr�__delitem__LszContainer.__delitem__cCs
t|j�Sr)�iterr?r/rrr�__iter__OszContainer.__iter__N)rrrr,r@rArBrDrrrrr=Bs
r=c@sjeZdZd�dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/d\d]�Z0d^d_�Z1d`da�Z2dbdc�Z3ddde�Z4dfdg�Z5dhdi�Z6djdk�Z7dldm�Z8dndo�Z9dpdq�Z:drds�Z;dtdu�Z<dvdw�Z=dxdy�Z>dzd{�Z?d|d}�Z@d~d�ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWeXd�d��d�d���ZYeXd�d��d�d���ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d„Zbd�dĄZcd�dƄZdd�dȄZed�dʄZfd�d̄Zgd�d΄Zhd�dЄZid�d҄Zjd�dԄZkd�dքZld�S)��	PatchTestTcCs<t}|st}|�t|�|�t||��|�t|t��dSr)rr�assertRaises�	TypeError�
assertTruer�assertFalser)rr�magic�	MockClassrrr�assertNotCallableVszPatchTest.assertNotCallablecsJGdd�dt��t��dtj���fdd��}|����jtjd�dS)Nc@seZdZejZdS)z4PatchTest.test_single_patchobject.<locals>.SomethingN�rrrr�Original�	attributerrrr�	SomethingasrPrOcs���jtjd�dS�NZ	unpatched��assertEqualrOr�Patchedr�rPrrr�testdsz/PatchTest.test_single_patchobject.<locals>.test�patch not restored�r&rrrTrSrOrN�rrVrrUr�test_single_patchobject`s�z!PatchTest.test_single_patchobjectc	Cs,d}|�t|��t�dd�W5QRXdS)Nz>'Something' must be the actual object to be patched, not a strrPZdo_something)ZassertRaisesRegexrGrr&)r�msgrrr�&test_patchobject_with_string_as_targetlsz0PatchTest.test_patchobject_with_string_as_targetcsHGdd�dt��t��dd���fdd��}|����jtjd�dS)Nc@seZdZejZdS)z7PatchTest.test_patchobject_with_none.<locals>.SomethingNrMrrrrrPrsrPrOcs���jd�dSrQ)�assertIsNonerOrrUrrrVusz2PatchTest.test_patchobject_with_none.<locals>.testrW)r&rrSrOrrNrYrrUr�test_patchobject_with_noneqs�z$PatchTest.test_patchobject_with_nonecslGdd�dt��t��dtj�t��dtj���fdd���}|����jtjd����jtj	d�dS)Nc@seZdZejZejZdS)z6PatchTest.test_multiple_patchobject.<locals>.SomethingN�rrrrrNrO�	Original2�next_attributerrrrrPsrPrOracs(���jtjd����jtjd�dSrQ)rSrOrrTra�Patched2rrUrrrV�s��z1PatchTest.test_multiple_patchobject.<locals>.testrW)
r&rrrTrbrSrOrNrar`rYrrUr�test_multiple_patchobject~s��z#PatchTest.test_multiple_patchobjectcCsFt}tdttj�dd��}ztja|�|�ttj�W5|aXdS)N�%s.somethingcSsdSrrrrrrrV�sz8PatchTest.test_object_lookup_is_quite_lazy.<locals>.test)�	somethingrrr�
Something2Zreplacement_valuerS�r�originalrVrrr� test_object_lookup_is_quite_lazy�s
z*PatchTest.test_object_lookup_is_quite_lazycs�tdttj��fdd��}|���tjtjd�tdttj�tdttj��fdd���}��tjtjd���tj	tjd�|���tjtjd���tj	tjd�t
�}tj|_tdt
|��fdd��}|�|���t|d�dS)	Nrdcs��tjtjd�dSrQ)rS�PTModulererrfrr/rrrV�s�z"PatchTest.test_patch.<locals>.testrWz%s.something_elsecs(��tjtjd���tjtjd�dSrQ)rSrjrerrf�something_else�
SomethingElserr/rrrV�s���%s.opencs��tdd�tjd�dS)N�filename�rzopen not patched)rS�openr�Handlerr/rrrV�s�)rrrrfrSrjrerPrlrkr
rq�return_value�builtin_string�assertNotEqualrp)rrV�mockrr/r�
test_patch�s:�����zPatchTest.test_patchcs6tdttj��fdd��}|���tjjd�dS)Nz%s.SomeClass.class_attributecs��tjjtjd�dSrQ)rSrjr�class_attributer�ClassAttributerr/rrrV�s
�z2PatchTest.test_patch_class_attribute.<locals>.testrW)rrrrxr]rjrrwrYrr/r�test_patch_class_attribute�s�
�z$PatchTest.test_patch_class_attributecs�Gdd�dt��t��d���fdd��}|�t��d�t��d�����fdd���}d��|tjtj�\��|tjtj�dS)Nc@seZdZejZejZdS)z:PatchTest.test_patchobject_with_default_mock.<locals>.TestN)rrrrrNrer`�
something2rrrr�Test�sr{recs"��|�jd���|td�dS)N�"Mock not passed into test function�.patch with two arguments did not create a mock)rSre�assertIsInstancer	�ru)r{rrrrV�s
��z:PatchTest.test_patchobject_with_default_mock.<locals>.testrzcs���|tjd���|tjd���|�jd���|�jd���|td���|td����|d����|d�||fS)Nz0Patched function didn't receive initial argumentz/Patched function didn't receive second argumentr|z)Second Mock not passed into test functionr}zunexpected value for mock1)	rSr�this1�this2rzrer~r	rt)r�r�Zmock1Zmock2�r{Z
outerMock1Z
outerMock2rrrrV�s*
�
�
�
���)r&rrr�r�rYrr�r�"test_patchobject_with_default_mock�s


z,PatchTest.test_patchobject_with_default_mockcs&tdttd��fdd��}|�dS)N�%s.SomeClass��speccs2��t|���ttjt����tdd��dS)NcSstjSr�r�
not_wibblerrrr�<lambda>r-z>PatchTest.test_patch_with_spec.<locals>.test.<locals>.<lambda>�rSrrHr�wibbler	rF�AttributeError��
MockSomeClassr/rrrVsz,PatchTest.test_patch_with_spec.<locals>.test)rrrrYrr/r�test_patch_with_specszPatchTest.test_patch_with_speccs&tjtdtd��fdd��}|�dS)Nrwr�cs6��tj|���ttjjt����tdd��dS)NcSstjjSr�rrwr�rrrrr�r-zDPatchTest.test_patchobject_with_spec.<locals>.test.<locals>.<lambda>�	rSrrwrHrr�r	rFr��Z
MockAttributer/rrrV
s��z2PatchTest.test_patchobject_with_spec.<locals>.test�rr&rrYrr/r�test_patchobject_with_specsz$PatchTest.test_patchobject_with_speccs(tdtdgd��fdd��}|�dS)Nr�r�r�cs2��t|���ttjt����tdd��dS)NcSstjSrr�rrrrr�r-zFPatchTest.test_patch_with_spec_as_list.<locals>.test.<locals>.<lambda>r�r�r/rrrVsz4PatchTest.test_patch_with_spec_as_list.<locals>.test�rrrYrr/r�test_patch_with_spec_as_listsz&PatchTest.test_patch_with_spec_as_listcs(tjtddgd��fdd��}|�dS)Nrwr�r�cs6��tj|���ttjjt����tdd��dS)NcSstjjSrr�rrrrr�)r-zLPatchTest.test_patchobject_with_spec_as_list.<locals>.test.<locals>.<lambda>r�r�r/rrrV#s��z:PatchTest.test_patchobject_with_spec_as_list.<locals>.testr�rYrr/r�"test_patchobject_with_spec_as_list"sz,PatchTest.test_patchobject_with_spec_as_listcs4tdt�tdtdgd��fdd���}|�dS)Nrmr�r�r�cs2��t|���ttjt����tdd��dS)NcSstjSrr�rrrrr�5r-zMPatchTest.test_nested_patch_with_spec_as_list.<locals>.test.<locals>.<lambda>r�)r�ZMockOpenr/rrrV0sz;PatchTest.test_nested_patch_with_spec_as_list.<locals>.test)rrsrrYrr/r�#test_nested_patch_with_spec_as_list.s
z-PatchTest.test_nested_patch_with_spec_as_listcs&tdtdd��fdd��}|�dS)Nr�Tr�cs*��t���j��t�fdd��dS)Ncs�jSr�r�rr�rrr�@r-zIPatchTest.test_patch_with_spec_as_boolean.<locals>.test.<locals>.<lambda>�rSrr�rFr�r�r/r�rrV:sz7PatchTest.test_patch_with_spec_as_boolean.<locals>.testr�rYrr/r�test_patch_with_spec_as_boolean9sz)PatchTest.test_patch_with_spec_as_booleancs&tjtddd��fdd��}|�dS)NrTr�cs*��t���j��t�fdd��dS)Ncs�jSrr�rr�rrr�Lr-zPPatchTest.test_patch_object_with_spec_as_boolean.<locals>.test.<locals>.<lambda>r�r�r/r�rrVFsz>PatchTest.test_patch_object_with_spec_as_boolean.<locals>.test)rr&rjrYrr/r�&test_patch_object_with_spec_as_booleanEsz0PatchTest.test_patch_object_with_spec_as_booleancs&tdtdd��fdd��}|�dS)Nr�Tr�cs>��t|t��|�������j��t�fdd��dS)Ncs�jSrr�r��instancerrr�Zr-zVPatchTest.test_patch_class_acts_with_spec_is_inherited.<locals>.test.<locals>.<lambda>)rHrr	rLr�rFr�r�r/r�rrVRs

zDPatchTest.test_patch_class_acts_with_spec_is_inherited.<locals>.testr�rYrr/r�,test_patch_class_acts_with_spec_is_inheritedQs	z6PatchTest.test_patch_class_acts_with_spec_is_inheritedcs:tdttjdd��fdd��}|���tdd��dS)N�
%s.froobleT��createcs��ttj�dSr)rS�froobler�Frooblerr/rrrV`szLPatchTest.test_patch_with_create_mocks_non_existent_attributes.<locals>.testcSstSr�r�rrrrr�er-zPPatchTest.test_patch_with_create_mocks_non_existent_attributes.<locals>.<lambda>)rrsrr�rF�	NameErrorrYrr/r�4test_patch_with_create_mocks_non_existent_attributes_sz>PatchTest.test_patch_with_create_mocks_non_existent_attributescs:tjtdtjdd��fdd��}|���ttd��dS)Nr�Tr�cs��tjtj�dSr)rSrr�rr�rr/rrrViszRPatchTest.test_patchobject_with_create_mocks_non_existent_attributes.<locals>.test)rr&rrr�rI�hasattrrYrr/r�:test_patchobject_with_create_mocks_non_existent_attributeshszDPatchTest.test_patchobject_with_create_mocks_non_existent_attributesc	CsH|�t��$tdttj�dd��}|�W5QRX|�tdd��dS)Nr�cSsdSrrrrrrrVssz9PatchTest.test_patch_wont_create_by_default.<locals>.testcSstSrr�rrrrr�wr-z=PatchTest.test_patch_wont_create_by_default.<locals>.<lambda>)rFr�rrsrr�r�rYrrr�!test_patch_wont_create_by_defaultqs

z+PatchTest.test_patch_wont_create_by_defaultc	CsH|�t��$t�tdtj�dd��}|�W5QRX|�ttd��dS)N�ordcSsdSrrrrrrrV|sz?PatchTest.test_patchobject_wont_create_by_default.<locals>.test)	rFr�rr&rrr�rIr�rYrrr�'test_patchobject_wont_create_by_defaultzs

z1PatchTest.test_patchobject_wont_create_by_defaultcCsHttd�dd��}ttd�dd��}|�|�d�|�|�d�dS)	Nz.ordcSsd|_td�S)N�e�c)rrr�)Zmock_ordrrr�test_ord�sz>PatchTest.test_patch_builtins_without_create.<locals>.test_ordz.opencSs*|j}d|j_td�}|��}|��|S)N�abcdzdoesnotexists.txt)rr�readrp�close)Z	mock_open�mZfobj�datarrr�	test_open�sz?PatchTest.test_patch_builtins_without_create.<locals>.test_openr�r��rrrS)rr�r�rrr�"test_patch_builtins_without_create�s



	z,PatchTest.test_patch_builtins_without_createcsPGdd�dt��t��dtdd�����fdd��}|������tj�dS)Nc@seZdZedd��ZdS)z5PatchTest.test_patch_with_static_methods.<locals>.FoocSstjSr)r�Staticrrrr�woot�sz:PatchTest.test_patch_with_static_methods.<locals>.Foo.wootN)rrrr8r�rrrrr)�sr)r�cSstjSr)rrTrrrrr��r-z:PatchTest.test_patch_with_static_methods.<locals>.<lambda>cs�����tj�dSr)rSr�rrTr�r)rrr�	anonymous�sz;PatchTest.test_patch_with_static_methods.<locals>.anonymous)r&rr8rSr�rr�)rr�rr�r�test_patch_with_static_methods�s
z(PatchTest.test_patch_with_static_methodscs8tj}t�tdd��fdd��}|���tj|�dS)Nr)cs��tjd�dS�Nr))rSrr)rr/rrr��sz-PatchTest.test_patch_local.<locals>.anonymous)rr)rr&rS)rr7r�rr/r�test_patch_local�s
zPatchTest.test_patch_localcsTGdd�dt�}|��tj�_t��dd���fdd��}|����jtj�dS)Nc@seZdZdZdS)z'PatchTest.test_patch_slots.<locals>.Foo)r)N)rrr�	__slots__rrrrr)�sr)cs���jd�dSr�)rSr)r�r7rrrr��sz-PatchTest.test_patch_slots.<locals>.anonymous)r&rr)rrS)rr)r�rr�r�test_patch_slots�szPatchTest.test_patch_slotscsfGdd�dt��G��fdd�dt�}t��dtj�|�}|�}|��|�����jtjd�dS)Nc@seZdZejZdS)z=PatchTest.test_patchobject_class_decorator.<locals>.SomethingNrMrrrrrP�srPcs(eZdZ��fdd�Z��fdd�ZdS)z7PatchTest.test_patchobject_class_decorator.<locals>.Foocs���jtjd�dSrQrR��
other_selfrUrr�test_method�s�zCPatchTest.test_patchobject_class_decorator.<locals>.Foo.test_methodcs���jtjd�dS�Nznon-test method patched)rSrOrrNr�rUrr�not_test_method�s�zGPatchTest.test_patchobject_class_decorator.<locals>.Foo.not_test_methodN)rrrr�r�rrUrrr)�sr)rOrW)	r&rrrTr�r�rSrOrN)rr)r.rrUr� test_patchobject_class_decorator�s�z*PatchTest.test_patchobject_class_decoratorcsrGdd�dt�}G�fdd�dt�}tdt�|�}|�}|��|����|jtjd���t	j
tjd�dS)Nc@seZdZejZdS)z7PatchTest.test_patch_class_decorator.<locals>.SomethingNrMrrrrrP�srPcs(eZdZdZ�fdd�Z�fdd�ZdS)z1PatchTest.test_patch_class_decorator.<locals>.FooZwhatevercs��tj|d�dSrQ)rSrjre)r�Zmock_somethingr/rrr��s
�z=PatchTest.test_patch_class_decorator.<locals>.Foo.test_methodcs��tjtjd�dSr�)rSrjrerrPr�r/rrr��s�zAPatchTest.test_patch_class_decorator.<locals>.Foo.not_test_methodN)rrrZtest_class_attrr�r�rr/rrr)�sr)rdrW)r&rrr�r�rSrOrrNrjrerP)rrPr)r.rr/r�test_patch_class_decorator�s
��z$PatchTest.test_patch_class_decoratorcsZGdd�dt��t��dtj�t��dtj���fdd���}|����jtjd�dS)Nc@seZdZejZejZdS)z3PatchTest.test_patchobject_twice.<locals>.SomethingNr_rrrrrP�srPrOcs���jtjd�dSrQrRrrUrrrV�sz.PatchTest.test_patchobject_twice.<locals>.testrWrXrYrrUr�test_patchobject_twice�s�z PatchTest.test_patchobject_twicecs�t�dd�����}t����fdd��}|����|�t��ddi���fdd��}|����|�t��dg���fd	d��}|����|�dS)
Nre��initial�othercsd�d<�d=d�d<dS�N�r+r��something elser�rr�r7rrrVsz'PatchTest.test_patch_dict.<locals>.testr+r;cs$��t��d����dd�dS�Nr�r+r;�rS�lenrr�rrrVsr:cs$��t��d����dd�dSr�r�rr�rrrVs�r&�copyr�dictrSrgrr�r�test_patch_dict�szPatchTest.test_patch_dictcs�t��t��d<d�d<�j��}t����fdd��}|����j|�t��ddi���fdd��}|����j|�dS)	Nr�rer�csd�d<�d=d�d<dSr�rrr�rrrV%sz=PatchTest.test_patch_dict_with_container_object.<locals>.testr+r;cs&��t�j�d����dd�dSr�)rSr�r?rr�rrrV/s�r=r&r?r�rr�rSrgrr�r�%test_patch_dict_with_container_objects

z/PatchTest.test_patch_dict_with_container_objectcs�t�dd�����}tj�dd���fdd��}|����|�tj�ddidd���fd	d��}|����|�tj�d
gdd���fdd��}|����|�dS)Nrer�T��clearcs ���i�d�d<d�d<dS�Nr�r+r�r��rSrr�rrrV=sz2PatchTest.test_patch_dict_with_clear.<locals>.testr+r;cs���ddi�dS�Nr+r;r�rr�rrrVGsr:cs���ddi�dSr�r�rr�rrrVOsr�rgrr�r�test_patch_dict_with_clear9sz$PatchTest.test_patch_dict_with_clearcs�t��t��d<d�d<�j��}tj�dd���fdd��}|����j|�tj�dd	idd���fd
d��}|����j|�dS)Nr�rer�Tr�cs"���ji�d�d<d�d<dSr��rSr?rr�rrrV_szGPatchTest.test_patch_dict_with_container_object_and_clear.<locals>.testr+r;cs���jddi�dSr�r�rr�rrrVisr�rgrr�r�/test_patch_dict_with_container_object_and_clearXs

z9PatchTest.test_patch_dict_with_container_object_and_clearc	CsFddi}tj|dd��}|�|ddi�W5QRX|�|ddi�dS)Nr+r;r�)r+)rr�rS)rr7�patchedrrr�"test_patch_dict_as_context_managerrsz,PatchTest.test_patch_dict_as_context_managercCsZi}tdtt��tdtt�dd�t�tt��t�|�dd�����}|�|jd�dS)Nr�T��autospeccSsdSrrrrrr�	some_name|sz0PatchTest.test_name_preserved.<locals>.some_namer�)rrr&rr�rS)rr7r�rrr�test_name_preservedyszPatchTest.test_name_preservedc	CsHi}t�|ddi�dd��}|�t��|�W5QRX|�|i�dS)Nr+r;cSstd��dS)NZKonrad�r�rrrrrV�sz1PatchTest.test_patch_with_exception.<locals>.test)rr�rFr�rS)rr7rVrrr�test_patch_with_exception�s
z#PatchTest.test_patch_with_exceptioncs&t�dddi��fdd��}|�dS)Nz
os.environ�
konrad_delongz
some valuecs��dtj�dS)Nr�)�assertIn�os�environrr/rrrV�sz3PatchTest.test_patch_dict_with_string.<locals>.test)rr�rYrr/r�test_patch_dict_with_string�sz%PatchTest.test_patch_dict_with_stringcsZtj��}t�dddi��fdd��}z&ddit_|���tjddi�W5|t_XdS)Nz%unittest.test.testmock.support.targetr1�BARcs��tjddd��dS)N�BAZr��r7r1)rSr�targetrr/rrrV�sz<PatchTest.test_patch_dict_decorator_resolution.<locals>.testr7r�)rr�r�rr�rSrgrr/r�$test_patch_dict_decorator_resolution�s

z.PatchTest.test_patch_dict_decorator_resolutioncCs�tdttdd�dd��}|�t|�tjtdtdd�dd��}|�t|�tdtdd�d	d��}|�t|�tjtddd�d
d��}|�t|�dS)Nr�T�r��spec_setcSs
d|_dS�Nr7��z�rKrrrrV�sz+PatchTest.test_patch_spec_set.<locals>.testrcSs
d|_dSr�r�r�rrrrV�s�r�cSs
d|_dSr�r�r�rrrrV�scSs
d|_dSr�r�r�rrrrV�s)rrrrFr�r&rrYrrr�test_patch_spec_set�s



zPatchTest.test_patch_spec_setcCs(tdtdd�dd��}|�t|�dS)Nr�Tr�cSs|�}d|_dSr�r�)rKr�rrrrV�sz-PatchTest.test_spec_set_inherit.<locals>.test)rrrFr�rYrrr�test_spec_set_inherit�s
zPatchTest.test_spec_set_inheritcCs\t}tdt�}|�t|�|��}z|�||�|�t|�W5|��X|�t|�dS)Nrd)rerr�assertIs�start�stop�assertIsNot)rrh�patcherrurrr�test_patch_start_stop�s
zPatchTest.test_patch_start_stopcCsttdd�}|�|���dS�Nr1r�)r�foo_namer]r��rrrrr�test_stop_without_start�sz!PatchTest.test_stop_without_startcCs.ttdd�}|��|��|�|���dSr)rrr�r�r]rrrr�test_stop_idempotent�szPatchTest.test_stop_idempotentcCs^t}t�tdd�}|�t|�|��}z|�|d�|�t|�W5|��X|�t|�dS)Nrer7)rerr&rjr�r�r�rS)rrhrZreplacedrrr�test_patchobject_start_stop�s
z%PatchTest.test_patchobject_start_stopcCsfddi}|��}tj|dgdd�}|�||�|��z|�|ddi�W5|��X|�||�dS)Nr7r1)�spam�eggsTr�r	r
)r�rr�rSr�r�)r�drhrrrr�test_patch_dict_start_stop�s
z$PatchTest.test_patch_dict_start_stopcs�|�ddi����}G��fdd�dt�}tj�ddidd�|�}|��|�|�}|��|��|�|��|��|�|�}|��|��|�|��|��|�dS)	Nr	r
cs(eZdZ��fdd�Z��fdd�ZdS)z7PatchTest.test_patch_dict_class_decorator.<locals>.Testcs���ddi�dS�Nr7r1r�r/�r�thisrr�
test_first
szBPatchTest.test_patch_dict_class_decorator.<locals>.Test.test_firstcs���ddi�dSr
r�r/rrr�test_secondszCPatchTest.test_patch_dict_class_decorator.<locals>.Test.test_secondN)rrrrrrrrrr{	sr{r7r1Tr�)r�r&rr�rSrr)rrhr{rVrrr�test_patch_dict_class_decorators z)PatchTest.test_patch_dict_class_decoratorcs�Gdd�dt�}Gdd�d�}|||�|fD]X}t|��t��dd���fdd��}|����jd���|jd���d�j�q,dS)	Nc@seZdZdZdS)z0PatchTest.test_get_only_proxy.<locals>.Somethingr7N�rrrr7rrrrrP$srPc@seZdZdZdS)z4PatchTest.test_get_only_proxy.<locals>.SomethingElser7Nrrrrrrl&srlr7r1cs���jd�dS�Nr1�rSr7r��proxyrrrrV,sz+PatchTest.test_get_only_proxy.<locals>.test�r&r(rrSr7ZassertNotIn�__dict__�rrPrl�thingrVrrr�test_get_only_proxy#szPatchTest.test_get_only_proxycs�Gdd�dt�}Gdd�d�}|||�|fD]\}t|dd��t��dd���fd	d
��}|����jd���|jd���d�j�q,dS)Nc@seZdZdZdS)z6PatchTest.test_get_set_delete_proxy.<locals>.Somethingr7NrrrrrrP6srPc@seZdZdZdS)z:PatchTest.test_get_set_delete_proxy.<locals>.SomethingElser7Nrrrrrrl8srlF)r'r7r1cs���jd�dSrrrrrrrV>sz1PatchTest.test_get_set_delete_proxy.<locals>.testrrrrr�test_get_set_delete_proxy5sz#PatchTest.test_get_set_delete_proxycCsZtdt�d�}ttf|�}|��}|��|�t|�|�|j�	�d�|�
|jt�dS)N�!�Zside_effectzfoo.bar.return_valuer7)�KeyErrorr	rrr�r�rFrSr7r1r~�r�kwargsrrurrr�test_patch_keyword_argsGs�z!PatchTest.test_patch_keyword_argscCs^tdt�d�}tjtdf|�}|��}|��|�t|�|�|j	�
�d�|�|j	t�dS)Nrrr.)r r	rr&r)r�r�rFrSr7r1r~r!rrr�test_patch_object_keyword_argsTs�z(PatchTest.test_patch_object_keyword_argscCs`ddi}|��}tj|dddd�}|��z|�|tdddd��W5|��X|�||�dS)Nr7r1r���)r7r1Zbaz)r�rr�r�r�rS)rrhr�rrrr�test_patch_dict_keyword_argsas
z&PatchTest.test_patch_dict_keyword_argscs�Gdd�dt�}�fdd���fdd�����fdd�}ttd	d
�|�}|�}��t|�|�tjt}tj|dd	d
�|�}|�}��t|�|�dS)Nc@s8eZdZdd�Zdd�Zdd�ZdZGdd	�d	e�Zd
S)z$PatchTest.test_autospec.<locals>.BoocSsdSrrr*rrrr,rr-z-PatchTest.test_autospec.<locals>.Boo.__init__cSsdSrrr*rrrr.sr-z&PatchTest.test_autospec.<locals>.Boo.fcSsdSrrr/rrrr0tr-z&PatchTest.test_autospec.<locals>.Boo.gr1c@seZdZdd�ZdS)z(PatchTest.test_autospec.<locals>.Boo.BarcSsdSrrr/rrrr+xr-z*PatchTest.test_autospec.<locals>.Boo.Bar.aNr5rrrrr6wsr6N)	rrrr,r.r0r7r&r6rrrr�Booqs
r(cs"|d�|�d���t|�dS�N�)�assert_called_withrFrGrr/rr�_testzs
z&PatchTest.test_autospec.<locals>._testcs|�d�|j�d���t|j�|��|j����t|jd���tt|d�|j��|jj����tt|jd�|�	�|j	��|j	�
�|j	j
����t|j	j
d�|�	��
�|�	�j
����t|�	�j
d���tt|j	d���tt|�	�d�dS)Nr*�hr1r;)r.r+rFrGr0r�rr7�lowerr6r+rr/rr�_test2s(




z'PatchTest.test_autospec.<locals>._test2cs,�|��|��|d����|t�|Sr))r�r)r�r,r/rrrr<�s
z)PatchTest.test_autospec.<locals>.functionTr�r))r&rrrr)�sys�modulesr)rr(r<rVru�modulerr0r�
test_autospecps	
zPatchTest.test_autospeccs&tdtdd��fdd��}|�dS)N�%s.functionTr�cs�t����ttj���ttj�td���ttj�t�d�t��t��tdd�t�dd���tt���tt	td�dS)Nr*�r�r7)
r<Zassert_not_calledrF�AssertionErrorZ
assert_calledZassert_called_oncer+rGr�rrr/rrrV�s

z.PatchTest.test_autospec_function.<locals>.testr�rYrr/r�test_autospec_function�sz PatchTest.test_autospec_functioncCs0tdtddd�dd��}|�}|�|d�dS)Nr5Tr�)r�rrcSs
tdd�S)Nr*r6)r<)Z
mock_functionrrrrV�sz.PatchTest.test_autospec_keywords.<locals>.testr�)rrV�resultrrr�test_autospec_keywords�s
�
z PatchTest.test_autospec_keywordsc	Cs0tdtdd��}t��|��W5QRXdS)Nz%s.Foo.static_methodTr�)rrr)r2�assert_called_once_with�r�methodrrr�test_autospec_staticmethod�sz$PatchTest.test_autospec_staticmethodc	Cs0tdtdd��}t��|��W5QRXdS)Nz%s.Foo.class_methodTr�)rrr)r4r;r<rrr�test_autospec_classmethod�sz#PatchTest.test_autospec_classmethodcCsNtdtddd�}|�t|j�tjt}tj|dddd�}|�t|j�dS)Nr5r�T)�newr�r<)rrrFrGr�r1r2r&)rrr3rrr�test_autospec_with_new�s

z PatchTest.test_autospec_with_newcCsRGdd�dt�}tt|d�}|��}z|�||�|�|jt�W5|��XdS)Nc@seZdZgZdS)z0PatchTest.test_autospec_with_object.<locals>.BarN)rrr�extrarrrrr6�sr6r�)r)rrr�r�r~rB�list)rr6rrurrr�test_autospec_with_object�sz#PatchTest.test_autospec_with_objectcCsHt}ttdd�}|��}z |�||�|�|d�|�W5|��XdS)NTr�r�)r)rrr�r�r~)rZFooClassrrurrr�test_autospec_inherits�sz PatchTest.test_autospec_inheritscCstttdd�}|��}zP|�dt|��|�dt|j��|�dt|d���|�dt|d�j��W5|��XdS)NTr�z name='Foo'z
 name='Foo.f'z
 name='Foo()'z name='Foo().f')rrr�r�r��reprr.)rrrurrr�test_autospec_name�szPatchTest.test_autospec_namecCsbt�tdt��dd��}z
|�Wnt��}YnXt�ddd�}|�||�}|�d|�dS)Nr.cSst�dSr)r7rrrrrV
sz'PatchTest.test_tracebacks.<locals>.testrzraise AssertionError)	rr&r)r1�exc_info�unittestZTextTestResultZ_exc_info_to_stringr�)rrV�errr9�	tracebackrrr�test_tracebackss

zPatchTest.test_tracebackscCsTtttd�}|��}|��|��}|��|�||�||fD]}|�|�q@dS)N��new_callable)rrrr�r�rrL�rrZm1Zm2rurrr�test_new_callable_patchsz!PatchTest.test_new_callable_patchcCsXtjtdtd�}|��}|��|��}|��|�||�||fD]}|�|�qDdS)Nr.rM)rr&r)rr�r�rrLrOrrr�test_new_callable_patch_object'sz(PatchTest.test_new_callable_patch_objectcsfG�fdd�dt��tt�ddd�}|��}z*|�t|���|��jt	ddd��W5|��XdS)NcseZdZdZ�fdd�ZdS)z:PatchTest.test_new_callable_keyword_arguments.<locals>.BarNcs
|�_dSr�r"�rr"�r6rrr,7szCPatchTest.test_new_callable_keyword_arguments.<locals>.Bar.__init__�rrrr"r,rrTrrr65sr6r*r6)rN�arg1�arg2)rVrW)
r&rrr�r�r��typerSr"r�)rrr�rrTr�#test_new_callable_keyword_arguments4sz-PatchTest.test_new_callable_keyword_argumentscs�G�fdd�dt��tt��d�}|��z|��jt�d��W5|��Xtt��d�}|��z|��jt�d��W5|��XdS)NcseZdZdZ�fdd�ZdS)z-PatchTest.test_new_callable_spec.<locals>.BarNcs
|�_dSrrRrSrTrrr,Fsz6PatchTest.test_new_callable_spec.<locals>.Bar.__init__rUrrTrrr6Dsr6�rNr�r�)rNr�r�)r&rrr�r�rSr"r�rrrTr�test_new_callable_specCs
z PatchTest.test_new_callable_speccCsZdt}t|td�}|�t|j�t|tdd�}|��}z|j|dd�W5|��XdS)Nz	%s.weeeeerMT)rNr�F)rJ)rrrrFr�r�r�rL)rZnon_existent_attr�pr�rrr�test_new_callable_createXs�z"PatchTest.test_new_callable_createcCs4|jtttt�td�|jttjtdt�td�dS)N)r@rNr.)rF�
ValueErrorrrr&r	r)r/rrr�'test_new_callable_incompatible_with_newfs��z1PatchTest.test_new_callable_incompatible_with_newcCs0|jttttdd�|jttjtdtdd�dS)NT)rNr�r.)rFr^rrr	r&r)r/rrr�,test_new_callable_incompatible_with_autospecps��z6PatchTest.test_new_callable_incompatible_with_autospecc	
Cs�Gdd�dt�}tttt|f}|D]X}dD]N}|di}ttfd|i|��}|��}z|j}|�	t
t|d�W5|��Xq*q"dS)Nc@seZdZdS)z>PatchTest.test_new_callable_inherit_for_mocks.<locals>.MockSubN�rrrrrrr�MockSub|srbr�TrN�x)r
rrr	rrr�r�rrrFr�r)	rrbZMockClassesZKlass�argr"r\r�r�rrr�#test_new_callable_inherit_for_mocks{s �z-PatchTest.test_new_callable_inherit_for_mockscCshGdd�dt�}tt|dd�}|��}z$|�t||��|�tt	|d�W5|��X|�
|jt�dS)Nc@seZdZdd�ZdS)z>PatchTest.test_new_callable_inherit_non_mock.<locals>.NotAMockcSs
||_dSrr�)rr�rrrr,�szGPatchTest.test_new_callable_inherit_non_mock.<locals>.NotAMock.__init__N)rrrr,rrrr�NotAMock�srfTrZrr)
r&rrr�r�rHrrFr�rrSr�r))rrfr\r�rrr�"test_new_callable_inherit_non_mock�s
z,PatchTest.test_new_callable_inherit_non_mockcsR|�t�G��fdd�dt�}tttd�|�}|���|���|�t��dS)Ncs*eZdZ��fdd�Zdd�Zdd�ZdS)z>PatchTest.test_new_callable_class_decorating.<locals>.SomeTestcs(��t����t|���tt�dSr)rr)r�r~r�rZmock_foo�rhrVrrr,�szDPatchTest.test_new_callable_class_decorating.<locals>.SomeTest._testcSs|�|�dSr�r,rhrrr�test_two�szGPatchTest.test_new_callable_class_decorating.<locals>.SomeTest.test_twocSs|�|�dSrrjrhrrr�test_one�szGPatchTest.test_new_callable_class_decorating.<locals>.SomeTest.test_oneN�rrrr,rkrlrrirr�SomeTest�srnrM)r)r&rrrrlrkr�)rrnrrir�"test_new_callable_class_decorating�s

z,PatchTest.test_new_callable_class_decoratingc	s�t�tj}tj}tjtddd�}tjtddd�}||fD]l}|��z,��t����	tjd���	tjd�W5|��X��t����	tj|���	tj|�q8tjtddd���fdd��}|�dS)Nr*r6)r.r0r�r%cs,��t����tjd���tjd�dS)Nr�r%)r�r)rSr.r0r��original_foorrrrV�sz+PatchTest.test_patch_multiple.<locals>.test)
r)r.r0r�multiplerr�r�r�rS)r�
original_f�
original_gZpatcher1Zpatcher2rrVrrpr�test_patch_multiple�s$
zPatchTest.test_patch_multiplecCs$|�ttjt�|�ttjt�dSr)rFr^rrrrr)r/rrr�test_patch_multiple_no_kwargs�sz'PatchTest.test_patch_multiple_no_kwargscsVt�tj}tj}tjttdtd���fdd��}|���tj|���tj|�dS)Nr��r.r0r7csZ��t����tj|���tjd���tj|���t|t����t|t��dS�Nr��	r�r)r.rSr0r7rHrr	)r.r7rprrrV�sz8PatchTest.test_patch_multiple_create_mocks.<locals>.test�r)r.r0rrrrrrS)rrsrtrVrrpr� test_patch_multiple_create_mocks�sz*PatchTest.test_patch_multiple_create_mockscsrtj}tj}t�tdd�}d|_t�tdt�}d|_|g|_|�fdd��}|���tj|���tj|�dS)Nr.r�r0cs ��tj|���tjd�dSrx)r�r)r0rSr.)r0r/rrrV�szHPatchTest.test_patch_multiple_create_mocks_different_order.<locals>.test)	r)r.r0rr&�attribute_namer�additional_patchersrS)rrsrtrr�rVrr/r�0test_patch_multiple_create_mocks_different_order�sz:PatchTest.test_patch_multiple_create_mocks_different_ordercs�t�tj}tj}tjttd�tjttd�ttd��fdd����}tjttd�ttd�tjttd��fdd����}ttd�tjttd�tjttd��fdd	����}��fd
d��|�|�|���tj|���tj|�dS)N)r.r�z.gcs�|f|�dSrr�r0r"rjrr�test1sz?PatchTest.test_patch_multiple_stacked_decorators.<locals>.test1cs�|f|�dSrrrrjrr�test2
sz?PatchTest.test_patch_multiple_stacked_decorators.<locals>.test2cs�|f|�dSrrrrjrr�test3sz?PatchTest.test_patch_multiple_stacked_decorators.<locals>.test3cs�|�d�}|�d�}��|���t����tj|���tj|���tj|���t|t	����t|t	����t|t	��dS)Nr.r7)
�poprIr�r)r.r0r7rHrr	)r0r"r.r7rprrr,s


z?PatchTest.test_patch_multiple_stacked_decorators.<locals>._testrz)rrsrtr�r�r�r)r,rqrr�&test_patch_multiple_stacked_decorators�s*



z0PatchTest.test_patch_multiple_stacked_decoratorscCs�t}tj}tj}tjttdtd�}|��}zt|d}|d}|�	t
|�t
ddg��|�t|�|�tj|�|�tj|�|�
t|t��|�
t|t��W5|��X|�	tj|�|�	tj|�dS)Nr�rwr.r7)r)r.r0rrrrrr�r�rS�setr�r7rHrr	)rrqrsrtrr9r.r7rrr�(test_patch_multiple_create_mocks_patcher*s"
z2PatchTest.test_patch_multiple_create_mocks_patchercsv|�t�tj}tj}G��fdd�dt�}tjttdtd�|�}|�}|��|�	�|�
tj|�|�
tj|�dS)Ncs*eZdZ��fdd�Zdd�Zdd�ZdS)z@PatchTest.test_patch_multiple_decorating_class.<locals>.SomeTestcsZ��t����tj|���tjd���tj|���t|t����t|t��dSrxry�rr.r7�rqrVrrr,KszFPatchTest.test_patch_multiple_decorating_class.<locals>.SomeTest._testcSs|�||�dSrrjr�rrrrkSszIPatchTest.test_patch_multiple_decorating_class.<locals>.SomeTest.test_twocSs|�||�dSrrjr�rrrrlUszIPatchTest.test_patch_multiple_decorating_class.<locals>.SomeTest.test_oneNrmrr�rrrnIsrnr�rw)r)r.r0r&rrrrrrlrkrS)rrsrtrnrrr�r�$test_patch_multiple_decorating_classCs$��z.PatchTest.test_patch_multiple_decorating_classcCsftjtdd�}|�t|j�tjtddd�}|��z|�tjd�W5|��X|�	t
td��dS)N�blam)r�T)r�r�)rrrr)rFr�r�r�rSr�rIr�rrrr�test_patch_multiple_createds
z$PatchTest.test_patch_multiple_createcCs�tjttddgd�}|��}z^|�tj|d�tj�d�tj�	d�tjj�
d�tjj	�
d�|�tt
tjdd�W5|��XdS)Nr+r;)r7r�r7r*r6r�)rrrr)rr�r�rSr7r+r;r+rFr�r )rrr9rrr�test_patch_multiple_spec_setrsz&PatchTest.test_patch_multiple_spec_setcCs�Gdd�dt�}tjttt|d�}|��}zT|�tj|d�|�tj	|d�|�
tj|�|�
tj	|�|�tjtj	�W5|��XdS)Nc@seZdZdS)z9PatchTest.test_patch_multiple_new_callable.<locals>.ThingNrarrrr�Thing�sr�)r.r0rNr.r0)r&rrrr)rr�r�r�r.r0r~r)rr�rr9rrr� test_patch_multiple_new_callable�s�z*PatchTest.test_patch_multiple_new_callablecCs�tj}tj}t�tdd�t�tdd�t�tdd�dd����}t�tdd�t�tdd�t�tdd�dd����}t�tdd�t�tdd�t�tdd�d	d
����}|||fD],}|�t|�|�tj|�|�tj|�q�dS)Nr0r*�missingr.cSsdSrrrrrr�thing1�sz3PatchTest.test_nested_patch_failure.<locals>.thing1cSsdSrrrrrr�thing2�sz3PatchTest.test_nested_patch_failure.<locals>.thing2cSsdSrrrrrr�thing3�sz3PatchTest.test_nested_patch_failure.<locals>.thing3)r)r.r0rr&rFr�rS)rrsrtr�r�r��funcrrr�test_nested_patch_failure�s$z#PatchTest.test_nested_patch_failurec	Cstj}tj}tj}dd�}t�tdd�tjtd|d�t�tdd�dd	����}tjtd|d�t�tdd�t�tdd�d
d����}t�tdd�t�tdd�tjtd|d�dd
����}|||fD]:}|�t|�|�tj|�|�tj|�|�tj|�q�dS)NcSstd��dS�N�crasherr�rrrrr��sz4PatchTest.test_new_callable_failure.<locals>.crasherr0r*r7rMr.cSsdSrrrrrrr��sz3PatchTest.test_new_callable_failure.<locals>.thing1cSsdSrrrrrrr��sz3PatchTest.test_new_callable_failure.<locals>.thing2cSsdSrrrrrrr��sz3PatchTest.test_new_callable_failure.<locals>.thing3)	r)r.r0r7rr&rFr�rS)	rrsrtrqr�r�r�r�r�rrr�test_new_callable_failure�s*z#PatchTest.test_new_callable_failurecCs�tj}tj}t�tdd�}d|_t�tdd�}d|_t�tdd�}d|_||g||gfD]>}||_|dd��}|�t|�|�	tj|�|�	tj|�qXdS)Nr.r*r0r�cSsdSrrrrrrr��sz3PatchTest.test_patch_multiple_failure.<locals>.func)
r)r.r0rr&r|r}rFr�rS)rrsrtr�good�bad�additionalsr�rrr�test_patch_multiple_failure�s
z%PatchTest.test_patch_multiple_failurec
Cs�tj}tj}tj}dd�}t�tdd�}d|_t�tdd�}d|_tjtd|d�}d|_||g||gfD]L}||_|dd	��}	|�t	|	�|�
tj|�|�
tj|�|�
tj|�qhdS)
NcSstd��dSr�r�rrrrr��szCPatchTest.test_patch_multiple_new_callable_failure.<locals>.crasherr.r*r0r7rMcSsdSrrrrrrr��sz@PatchTest.test_patch_multiple_new_callable_failure.<locals>.func)r)r.r0r7rr&r|r}rFr�rS)
rrsrtrqr�rr�r�r�r�rrr�(test_patch_multiple_new_callable_failure�s$
z2PatchTest.test_patch_multiple_new_callable_failurecsLtdtfddi�}|��tj�dd���fdd��}|����jd�dS)Nr)�fishZtasty�nearly gone)r�cs���jd�dS)Nr�)rSr�rr�rrrVsz=PatchTest.test_patch_multiple_string_subclasses.<locals>.test)rX�strrrrrSr�)rr)rVrr�r�%test_patch_multiple_string_subclassessz/PatchTest.test_patch_multiple_string_subclasseszunittest.mock.patch.TEST_PREFIXr7cCslGdd�dt�}t�|dd�|�}|�}|�|��d�|�|��d�|�|��d�|�|��d�dS)Nc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)z-PatchTest.test_patch_test_prefix.<locals>.FoorhcSs|jSr�rr/rrr�foo_onesz5PatchTest.test_patch_test_prefix.<locals>.Foo.foo_onecSs|jSrr�r/rrr�foo_twosz5PatchTest.test_patch_test_prefix.<locals>.Foo.foo_twocSs|jSrr�r/rrrrlsz6PatchTest.test_patch_test_prefix.<locals>.Foo.test_onecSs|jSrr�r/rrrrksz6PatchTest.test_patch_test_prefix.<locals>.Foo.test_twoN)rrrrr�r�rlrkrrrrr)
s
r)r�changedrh)r&rrSr�r�rlrk�rr)r7rrr�test_patch_test_prefixsz PatchTest.test_patch_test_prefixr1cs�G�fdd�dt�}ddi�tj�dd�|�}|�}|�|��ddi�|�|��ddi�|�|��ddi�|�|��ddi�dS)Ncs<eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Zd	S)
z2PatchTest.test_patch_dict_test_prefix.<locals>.Foocst��Sr�r�r/�Zthe_dictrr�bar_one%sz:PatchTest.test_patch_dict_test_prefix.<locals>.Foo.bar_onecst��Srr�r/r�rr�bar_two'sz:PatchTest.test_patch_dict_test_prefix.<locals>.Foo.bar_twocst��Srr�r/r�rrrl)sz;PatchTest.test_patch_dict_test_prefix.<locals>.Foo.test_onecst��Srr�r/r�rrrk+sz;PatchTest.test_patch_dict_test_prefix.<locals>.Foo.test_twoN)rrrr�r�rlrkrr�rrr)$sr)�keyrhr�)r�)r&rr�rSr�r�rlrkr�rr�r�test_patch_dict_test_prefix"s
z%PatchTest.test_patch_dict_test_prefixc	Cs�dD]x}tdtf|di�}|��}zL|�dt|��|�dt|j��|�dt|���|�dt|�j��W5|��XqdS)N�r�r�r�r�Tz name='SomeClass'z! name='SomeClass.class_attribute'z name='SomeClass()'z# name='SomeClass().class_attribute')rrr�r�r�rFrw)rrdr\r�rrr�test_patch_with_spec_mock_repr8s�
�z(PatchTest.test_patch_with_spec_mock_reprc	CsJtddd��4}|�dt|j����|�dt|������W5QRXdS)N�unittest.test.testmock.supportTr�z" name='support.SomeClass.wibble()'z$ name='support.SomeClass().wibble()')rr�rFrr�)rr�rrr�test_patch_nested_autospec_reprGs��z)PatchTest.test_patch_nested_autospec_reprc	Cs�dD]�}tdtf|di�}|��}z�|��t��g}|�|j|�|�|j|�|�|jjt�g�|�}|�	t��|�|j|�|��|�	t����|�|j|�|�|jt��g�|�|jjt�g�|�|jt��g�W5|��XqdS)Nr�r�T)
rrr�r�r�rrSZ
mock_callsZmethod_calls�append)rrdr\r�Zkallsr9rrr�test_mock_calls_with_patchPs&
z$PatchTest.test_mock_calls_with_patchc	Csptd�}|�t|j�td��:t�}|tjd<d|_td�}d|_|��|�	�W5QRX|�
|jd�dS)N�
squizz.squozz�squizz�r�)rrF�ImportErrorr�rr
r1r2Zsquozzr�rS)rZp1r�rrr�test_patch_imports_lazilyks

z#PatchTest.test_patch_imports_lazilyc	s�Gdd�d��G�fdd�dt���fdd�}|d�dd	��}td
��"t�}|tjd
<|�t|�W5QRX|��jdt�|�	�jdd
�|�	�jdd�dS)Nc@seZdZdZdS)z;PatchTest.test_patch_propagates_exc_on_exit.<locals>.holder)NNNN)rrrrHrrrr�holder{sr�cseZdZd�fdd�	ZeZdS)zAPatchTest.test_patch_propagates_exc_on_exit.<locals>.custom_patchNcs t�||||�|||f�_dSr)r
�__exit__rH)r�etype�val�tb�r�rrr�szJPatchTest.test_patch_propagates_exc_on_exit.<locals>.custom_patch.__exit__)NNN)rrrr�r�rr�rr�custom_patch~sr�c
s$t|�\}}�||tdddddi�	S)NF)rr)r��getterrO)r�rr�with_custom_patch�s�zFPatchTest.test_patch_propagates_exc_on_exit.<locals>.with_custom_patchr�cSst�dSr)�RuntimeErrorrrrrrV�sz9PatchTest.test_patch_propagates_exc_on_exit.<locals>.testr�rr*zexception value not propagatedr6z"exception traceback not propagated)
r
rr
r1r2rFr�r�rHZassertIsNotNone)rr�rVr�r)r�r�r�!test_patch_propagates_exc_on_exitzs 


��z+PatchTest.test_patch_propagates_exc_on_exitcCspdD]f}tdtfddi|di��}|�t|j�|�tdd��ttfddi|di��}|��|��qdS)N�r�r�r�z%s.doesnotexistr�TcSstSr)�doesnotexistrrrrr��r-z1PatchTest.test_create_and_specs.<locals>.<lambda>)rrrFrGr�r��MODNAMEr�)r�kwargr\rrr�test_create_and_specs�s�zPatchTest.test_create_and_specscCs�t}dD]6}ttfddi|di��}|�t|j�|�t|�qdD]6}ttfddi|di��}|�t|j�|�t|�qDdD]6}ttfddi|di��}|�t|j�|�t|�q�dS)Nr�r�r�r�r�r�)r�r�r�)rjrr�rFrGr�r�)rrhr�r\rrr�test_multiple_specs�szPatchTest.test_multiple_specscCs8ttdddd�}|��}z|jd|_W5|��XdS)NFr�r�)rr�r�r�Zdoes_not_exist)rr\rurrr� test_specs_false_instead_of_none�s
z*PatchTest.test_specs_false_instead_of_nonec	CsFdD]<}ttf|di�}|��}z|�tt|d�W5|��XqdS)Nr�rZdoesnotexit)rr�r�r�rFr�r�rr�r\r�rrr�test_falsey_spec�szPatchTest.test_falsey_specc	Cs`dD]V}ttfddi|di��}|��}z&|�tt|dd�|�tt|d�W5|��XqdS)Nr�r�Tr�re)rr�r�r�rFr�r rr�rrr�test_spec_set_true�s
�zPatchTest.test_spec_set_truecCs:d}tt|d�}|��}z|�t|��W5|��XdS)N)�__call__r�)rr�r�r�rH�callable�rr�r\r�rrr�test_callable_spec_as_list�sz$PatchTest.test_callable_spec_as_listcCs:d}tt|d�}|��}z|�t|��W5|��XdS)Nr�r�)rr�r�r�rIr�r�rrr�test_not_callable_spec_as_list�sz(PatchTest.test_not_callable_spec_as_listcs^tj�tj�tj}tdt���tdt���td����fdd��}|���tj|�dS)Nz	os.unlinkzos.chdirzos.pathcs6t����tj|���tj����tj��dSr)r�stopallr�r��path�unlink�chdir)Z	mock_path�r�rr�rrr��sz-PatchTest.test_patch_stopall.<locals>.patched)	r�r�r�r�rrer�rkr�)rr�r�rr�r�test_patch_stopall�szPatchTest.test_patch_stopallcsRg�Gdd�dt����fdd���fdd�dD�t��|��dd	d
g�dS)Nc@seZdZdZZZdS)z*PatchTest.test_stopall_lifo.<locals>.thingN)rrr�one�two�threerrrrrsrc
s8G���fdd�dt����fdd��ddddddi�	S)Ncs"eZdZ����fdd�Z�ZS)z?PatchTest.test_stopall_lifo.<locals>.get_patch.<locals>.mypatchcs����t�|���Sr)r��superr�r/)�	__class__rO�mypatch�stoppedrrr�s
zDPatchTest.test_stopall_lifo.<locals>.get_patch.<locals>.mypatch.stop)rrrr��
__classcell__r)rOr�r�)r�rr�sr�cs�Srrrr�rrr�r-z@PatchTest.test_stopall_lifo.<locals>.get_patch.<locals>.<lambda>F)r
)rO)r�r)rOr�r�	get_patchs�z.PatchTest.test_stopall_lifo.<locals>.get_patchcsg|]}�|����qSr)r�)�.0r�)r�rr�
<listcomp>
sz/PatchTest.test_stopall_lifo.<locals>.<listcomp>)r�r�r�r�r�r�)r&rr�rSr/r)r�r�rr�test_stopall_lifoszPatchTest.test_stopall_lifoc	Cs>ddd�}t�|dd��|�|�d�W5QRX|�|�d�t�|dd��|�|jd�W5QRX|�|jd	�t�|d
d��|�|jd�W5QRX|�|jd�t�|d
tdg���|�|jtdg��W5QRX|�|jt��dd�dd�}t�|dtdg���|�|�d�W5QRX|�|�d�dS)NrcSs|S)�TESTr�rcrrrr7sz)PatchTest.test_special_attrs.<locals>.foo�__defaults__)r*r*�__doc__ZFUNr�rZ
testpatch2z unittest.test.testmock.testpatch�__annotations__)�sr*r�cWs|Srr)rcr+rrrr7's�__kwdefaults__)rcr*)r)rr&rSr�rr�r�)rr7rrr�test_special_attrss"
zPatchTest.test_special_attrsc	CsXddl}t�d��<tjd=tjd=tjd=tjd=td�dd	��}|�W5QRXdS)
Nrzsys.modulesr�zunittest.test.testmockz
unittest.testrI� unittest.test.testmock.support.XcSsdSrrrrrrrV:sz9PatchTest.test_dotted_but_module_not_loaded.<locals>.test)�unittest.test.testmock.supportrr�r1r2)rrIrVrrr�!test_dotted_but_module_not_loaded-s
z+PatchTest.test_dotted_but_module_not_loadedc	Cs"|�t��td�W5QRXdS)N�)rFrGrr/rrr�test_invalid_target@szPatchTest.test_invalid_targetc	Cs8tdt�dd�dd��}|�t��|�W5QRXdS)Nr�r*)r@rccSsdSrrrrrrrVFsz@PatchTest.test_cant_set_kwargs_when_passing_a_mock.<locals>.test)rr&rFrGrYrrr�(test_cant_set_kwargs_when_passing_a_mockEs
z2PatchTest.test_cant_set_kwargs_when_passing_a_mockN)T)mrrrrLrZr\r^rcrirvryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrr#r$r'r4r8r:r>r?rArDrErGrLrPrQrYr[r]r_r`rergrorurvr{r~r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrETs�


+*

			
!
	
	


C	




+!

	"



rE�__main__)T)(r�r1rIZunittest.test.testmockrr�rrZtest.test_importlib.utilrZ
unittest.mockrrrr	r
rrr
rrrrsr2rrjr�r(rPrerlrkr&r)rr<r=ZTestCaserE�mainrrrr�<module>sB4



F1le Man4ger