o =?h@s ddlZddlZddlmZddlZddlmZddlmZm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZmZdZejeZdeZdd d Zejaej Z!Gd d d e"Z#deZ$e#fddZ%Gddde"Z&Gdddej'Z(edkre)dSdS)N) OrderedDict)support) SomeClass is_instance)uncache) NonCallableMock CallableMixinsentinel MagicMockMockNonCallableMagicMockpatch_patchDEFAULTcall _get_targetbuiltinsz %s.PTModuleTcsBGfdddt}|sfdd}fdd}||_||_|S)NcseZdZfddZdS)z_get_proxy..Proxycs t|SN)getattrselfnameobjG/opt/alt/python310/lib64/python3.10/unittest/test/testmock/testpatch.py __getattr__ z%_get_proxy..Proxy.__getattr__N)__name__ __module__ __qualname__rrrrrProxyr!cst||dSr)setattrrrvaluerrr __setattr__ z_get_proxy..__setattr__cst|dSr)delattrrrrr __delattr__"z_get_proxy..__delattr__)objectr&r))rget_onlyr!r&r)rrr _get_proxys  r-c@sPeZdZddZddZddZdZedd Ze d d Z Gd d d e Z dS)FoocCdSrrrarrr__init__/z Foo.__init__cCr/rrr0rrrf0r3zFoo.fcCr/rrrrrrg1r3zFoo.gbarcCr/rrrrrr static_method4zFoo.static_methodcCr/rr)clsrrr class_method7r9zFoo.class_methodc@eZdZddZdS)zFoo.BarcCr/rrr5rrrr1;r3z Foo.Bar.aNrrr r1rrrrBar: r>N) rrr r2r4r6foo staticmethodr8 classmethodr;r+r>rrrrr..s  r.z%s.FoocCr/rrr1brrrfunction@r3rEc@s4eZdZddZddZddZddZd d Zd S) ContainercCs i|_dSrvaluesr5rrrr2DrzContainer.__init__cCs |j|SrrGrrrr __getitem__GrzContainer.__getitem__cCs||j|<dSrrGr$rrr __setitem__Jr*zContainer.__setitem__cCs |j|=dSrrGrrrr __delitem__Ms zContainer.__delitem__cCs t|jSr)iterrHr5rrr__iter__PrzContainer.__iter__N)rrr r2rIrJrKrMrrrrrFCs  rFc@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*dRdSZ+dTdUZ,dVdWZ-dXdYZ.dZd[Z/d\d]Z0d^d_Z1d`daZ2dbdcZ3dddeZ4dfdgZ5dhdiZ6djdkZ7dldmZ8dndoZ9dpdqZ:drdsZ;dtduZdzd{Z?d|d}Z@d~dZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXeYddddZZeYddddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZadd„ZbddĄZcddƄZdddȄZeddʄZfdd̄Zgdd΄ZhddЄZidd҄ZjddԄZkddքZldd؄ZmddڄZndd܄ZoddބZpdS) PatchTestTcCs<t}|st}|t||t|||t|tdSr)r r assertRaises TypeError assertTruer assertFalser)rrmagic MockClassrrrassertNotCallableWs  zPatchTest.assertNotCallablecsJGdddttdtjfdd}|jtjddS)Nc@eZdZejZdS)z4PatchTest.test_single_patchobject..SomethingNrrr r Original attributerrrr Somethingb rZrYcjtjddSNZ unpatched assertEqualrYr PatchedrrZrrrtestez/PatchTest.test_single_patchobject..testpatch not restoredr+r r r`r_rYrXrrbrrartest_single_patchobjectas z!PatchTest.test_single_patchobjectcCsBd}|t|tddWddS1swYdS)Nz>'Something' must be the actual object to be patched, not a strrZZ do_something)ZassertRaisesRegexrPr r+)rmsgrrr&test_patchobject_with_string_as_targetms"z0PatchTest.test_patchobject_with_string_as_targetcsHGdddttddfdd}|jtjddS)Nc@rV)z7PatchTest.test_patchobject_with_none..SomethingNrWrrrrrZsr[rZrYcjddSr]) assertIsNonerYrrarrrbvz2PatchTest.test_patchobject_with_none..testrd)r+r r_rYr rXrfrrartest_patchobject_with_noners  z$PatchTest.test_patchobject_with_nonecslGdddttdtjtdtjfdd}|jtjdjtj ddS)Nc@eZdZejZejZdS)z6PatchTest.test_multiple_patchobject..SomethingNrrr r rXrY Original2next_attributerrrrrZ rZrYrqcs(jtjdjtjddSr])r_rYr r`rqPatched2rrarrrb  z1PatchTest.test_multiple_patchobject..testrd) r+r r r`rsr_rYrXrqrprfrrartest_multiple_patchobjects  z#PatchTest.test_multiple_patchobjectcCsHt}tdttjdd}ztja||ttjW|adS|aw)N %s.somethingcSr/rrrrrrrbz8PatchTest.test_object_lookup_is_quite_lazy..test) somethingr rr Something2Zreplacement_valuer_roriginalrbrrr test_object_lookup_is_quite_lazys z*PatchTest.test_object_lookup_is_quite_lazycstdttjfdd}|tjtjdtdttjtdttjfdd}tjtjdtj tjd|tjtjdtj tjdt }tj |_ tdt |fdd}||t|ddS) NrvctjtjddSr])r_PTModulerxr ryrr5rrrbs z"PatchTest.test_patch..testrdz%s.something_elsecs(tjtjdtjtjddSr])r_r~rxr rysomething_else SomethingElserr5rrrbrt%s.opencstddtjddS)Nfilenamerzopen not patched)r_openr Handlerr5rrrbs)r rr ryr_r~rxrZrrr r return_valuebuiltin_stringassertNotEqualr)rrbmockrr5r test_patchs:      zPatchTest.test_patchcs6tdttjfdd}|tjjddS)Nz%s.SomeClass.class_attributecstjjtjddSr])r_r~rclass_attributer ClassAttributerr5rrrbs z2PatchTest.test_patch_class_attribute..testrd)r rr rrkr~rrrfrr5rtest_patch_class_attributes z$PatchTest.test_patch_class_attributecsGdddttdfdd}|tdtdfdd}d|tjtj\|tjtjdS)Nc@rn)z:PatchTest.test_patchobject_with_default_mock..TestN)rrr r rXrxrp something2rrrrTestrrrrxcs"|jd|tddS)N"Mock not passed into test function.patch with two arguments did not create a mock)r_rxassertIsInstancer r)rrrrrbs z:PatchTest.test_patchobject_with_default_mock..testrcs|tjd|tjd|jd|jd|td|td|d|d||fS)Nz0Patched function didn't receive initial argumentz/Patched function didn't receive second argumentrz)Second Mock not passed into test functionrzunexpected value for mock1) r_r this1this2rrxrr r)rrZmock1Zmock2rZ outerMock1Z outerMock2rrrrbs*    )r+r r rrrfrrr"test_patchobject_with_default_mocks   z,PatchTest.test_patchobject_with_default_mockcs&tdttdfdd}|dS)N %s.SomeClassspecc2t|ttjttdddS)NcStjSrr not_wibblerrrrz>PatchTest.test_patch_with_spec..test..r_rrQrwibbler rOAttributeError MockSomeClassr5rrrb z,PatchTest.test_patch_with_spec..test)r rrrfrr5rtest_patch_with_specs zPatchTest.test_patch_with_speccs&tjtdtdfdd}|dS)Nrrc6tj|ttjjttdddS)NcStjjSrrrrrrrrrzDPatchTest.test_patchobject_with_spec..test.. r_rrrQrrr rOrZ MockAttributer5rrrb z2PatchTest.test_patchobject_with_spec..testr r+rrfrr5rtest_patchobject_with_spec  z$PatchTest.test_patchobject_with_speccs(tdtdgdfdd}|dS)Nrrrcr)NcSrrrrrrrrrzFPatchTest.test_patch_with_spec_as_list..test..rrr5rrrbrz4PatchTest.test_patch_with_spec_as_list..testr rrfrr5rtest_patch_with_spec_as_lists z&PatchTest.test_patch_with_spec_as_listcs(tjtddgdfdd}|dS)Nrrrcr)NcSrrrrrrrr*rzLPatchTest.test_patchobject_with_spec_as_list..test..rrr5rrrb$rz:PatchTest.test_patchobject_with_spec_as_list..testrrfrr5r"test_patchobject_with_spec_as_list#s z,PatchTest.test_patchobject_with_spec_as_listcs4tdttdtdgdfdd}|dS)Nrrrrcr)NcSrrrrrrrr6rzMPatchTest.test_nested_patch_with_spec_as_list..test..r)rZMockOpenr5rrrb1s z;PatchTest.test_nested_patch_with_spec_as_list..test)r rrrfrr5r#test_nested_patch_with_spec_as_list/s  z-PatchTest.test_nested_patch_with_spec_as_listc&tdtddfdd}|dS)NrTrc*tjtfdddS)NcjSrrrrrrrArzIPatchTest.test_patch_with_spec_as_boolean..test..r_rrrOrrr5rrrb; z7PatchTest.test_patch_with_spec_as_boolean..testrrfrr5rtest_patch_with_spec_as_boolean:rz)PatchTest.test_patch_with_spec_as_booleancs&tjtdddfdd}|dS)NrTrcr)NcrrrrrrrrMrzPPatchTest.test_patch_object_with_spec_as_boolean..test..rrr5rrrbGrz>PatchTest.test_patch_object_with_spec_as_boolean..test)r r+r~rfrr5r&test_patch_object_with_spec_as_booleanFrz0PatchTest.test_patch_object_with_spec_as_booleancr)NrTrcs>t|t|jtfdddS)Ncrrrrinstancerrr[rzVPatchTest.test_patch_class_acts_with_spec_is_inherited..test..)rQrr rUrrOrrr5rrrbSs  zDPatchTest.test_patch_class_acts_with_spec_is_inherited..testrrfrr5r,test_patch_class_acts_with_spec_is_inheritedRs z6PatchTest.test_patch_class_acts_with_spec_is_inheritedcs:tdttjddfdd}|tdddS)N %s.froobleTcreatecsttjdSr)r_froobler Frooblerr5rrrbarlzLPatchTest.test_patch_with_create_mocks_non_existent_attributes..testcStSrrrrrrrfr3zPPatchTest.test_patch_with_create_mocks_non_existent_attributes..)r rr rrO NameErrorrfrr5r4test_patch_with_create_mocks_non_existent_attributes`z>PatchTest.test_patch_with_create_mocks_non_existent_attributescs:tjtdtjddfdd}|ttddS)NrTrcstjtjdSr)r_rrr rrr5rrrbjzRPatchTest.test_patchobject_with_create_mocks_non_existent_attributes..test)r r+rr rrRhasattrrfrr5r:test_patchobject_with_create_mocks_non_existent_attributesirzDPatchTest.test_patchobject_with_create_mocks_non_existent_attributescCs\|ttdttjdd}|Wdn1swY|tdddS)NrcSr/rrrrrrrbtr9z9PatchTest.test_patch_wont_create_by_default..testcSrrrrrrrrxr3z=PatchTest.test_patch_wont_create_by_default..)rOrr rr rrrfrrr!test_patch_wont_create_by_defaultrs  z+PatchTest.test_patch_wont_create_by_defaultcCs\|tttdtjdd}|Wdn1swY|ttddS)NordcSr/rrrrrrrb}r9z?PatchTest.test_patchobject_wont_create_by_default..test) rOrr r+rr rrRrrfrrr'test_patchobject_wont_create_by_default{s  z1PatchTest.test_patchobject_wont_create_by_defaultcCsHttddd}ttddd}||d||ddS) Nz.ordcSsd|_tdS)Nec)rr)Zmock_ordrrrtest_ordsz>PatchTest.test_patch_builtins_without_create..test_ordz.opencSs*|j}d|j_td}|}||S)Nabcdzdoesnotexists.txt)rreadrclose)Z mock_openmZfobjdatarrr test_opens z?PatchTest.test_patch_builtins_without_create..test_openrrr rr_)rrrrrr"test_patch_builtins_without_creates     z,PatchTest.test_patch_builtins_without_createcsPGdddttdtddfdd}|tjdS)Nc@seZdZeddZdS)z5PatchTest.test_patch_with_static_methods..FoocSrr)r Staticrrrrwootsz:PatchTest.test_patch_with_static_methods..Foo.wootN)rrr rArrrrrr.sr.rcSrr)r r`rrrrrrz:PatchTest.test_patch_with_static_methods..cstjdSr)r_rr r`rr.rrr anonymousrcz;PatchTest.test_patch_with_static_methods..anonymous)r+r rAr_rr r)rrrrrtest_patch_with_static_methodss z(PatchTest.test_patch_with_static_methodscs8tj}ttddfdd}|tj|dS)Nr.cstjddSNr.)r_r r.rr5rrrrlz-PatchTest.test_patch_local..anonymous)r r.r r+r_)rr@rrr5rtest_patch_locals  zPatchTest.test_patch_localcsTGdddt}|tj_tddfdd}|jtjdS)Nc@eZdZdZdS)z'PatchTest.test_patch_slots..Foo)r.N)rrr __slots__rrrrr.r.crjr)r_r.rr@rrrrrlz-PatchTest.test_patch_slots..anonymous)r+r r.r r_)rr.rrrrtest_patch_slotss zPatchTest.test_patch_slotscsfGdddtGfdddt}tdtj|}|}||jtjddS)Nc@rV)z=PatchTest.test_patchobject_class_decorator..SomethingNrWrrrrrZr[rZc(eZdZfddZfddZdS)z7PatchTest.test_patchobject_class_decorator..Foocr\r]r^ other_selfrarr test_method zCPatchTest.test_patchobject_class_decorator..Foo.test_methodcr\Nznon-test method patched)r_rYr rXrrarrnot_test_methodrzGPatchTest.test_patchobject_class_decorator..Foo.not_test_methodN)rrr rrrrarrr.sr.rYrd) r+r r r`rrr_rYrX)rr.r4rrar test_patchobject_class_decorators z*PatchTest.test_patchobject_class_decoratorcsrGdddt}Gfdddt}tdt|}|}|||jtjdt j tj ddS)Nc@rV)z7PatchTest.test_patch_class_decorator..SomethingNrWrrrrrZr[rZcs(eZdZdZfddZfddZdS)z1PatchTest.test_patch_class_decorator..FooZwhatevercstj|ddSr])r_r~rx)rZmock_somethingr5rrrs z=PatchTest.test_patch_class_decorator..Foo.test_methodcr}r)r_r~rxr rZrr5rrrrzAPatchTest.test_patch_class_decorator..Foo.not_test_methodN)rrr Ztest_class_attrrrrr5rrr.s r.rvrd) r+r rrrr_rYr rXr~rxrZ)rrZr.r4rr5rtest_patch_class_decorators   z$PatchTest.test_patch_class_decoratorcsZGdddttdtjtdtjfdd}|jtjddS)Nc@rn)z3PatchTest.test_patchobject_twice..SomethingNrorrrrrZrrrZrYcr\r]r^rrarrrbsz.PatchTest.test_patchobject_twice..testrdrerfrrartest_patchobject_twices z PatchTest.test_patchobject_twicecstdd}tfdd}||tddifdd}||tdgfd d}||dS) Nrxinitialothercdd<d=dd<dSNr1rsomething elserrrr@rrrb z'PatchTest.test_patch_dict..testr1rDc$tddddSNrr1rDr_lenrrrrrb rCcrrrrrrrrbrr+copyr dictr_rzrrrtest_patch_dicts    zPatchTest.test_patch_dictcsttd<dd<j}tfdd}|j|tddifdd}|j|dS) Nrrxrcrrrrrrrrb&rz=PatchTest.test_patch_dict_with_container_object..testr1rDcs&tjddddSr)r_rrHrrrrrb0srFr+rHrr rr_rzrrr%test_patch_dict_with_container_objects  z/PatchTest.test_patch_dict_with_container_objectcstdd}tjddfdd}||tjddiddfd d}||tjd gddfd d}||dS) NrxrTclearcs idd<dd<dSNrr1rrr_rrrrrb>s  z2PatchTest.test_patch_dict_with_clear..testr1rDcddidSNr1rDr rrrrrbHrrCcr r r rrrrrbPrrrzrrrtest_patch_dict_with_clear:s    z$PatchTest.test_patch_dict_with_clearcsttd<dd<j}tjddfdd}|j|tjdd iddfd d}|j|dS) NrrxrTrcs"jidd<dd<dSrr_rHrrrrrb`s zGPatchTest.test_patch_dict_with_container_object_and_clear..testr1rDcsjddidSr r rrrrrbjrcrrzrrr/test_patch_dict_with_container_object_and_clearYs   z9PatchTest.test_patch_dict_with_container_object_and_clearcCsZddi}tj|dd}||ddiWdn1swY||ddidS)Nr1rDr)r1)r rr_)rr@patchedrrr"test_patch_dict_as_context_managerss z,PatchTest.test_patch_dict_as_context_managercCsZi}tdtttdttddtttt|dd}||jddS)NrTautospeccSr/rrrrrr some_name}sz0PatchTest.test_name_preserved..some_namer)r rr+rrr_)rr@rrrrtest_name_preservedzs zPatchTest.test_name_preservedcCs\i}t|ddidd}|t |Wdn1s!wY||idS)Nr1rDcStd)NZKonradrrrrrrbsz1PatchTest.test_patch_with_exception..test)r rrOrr_)rr@rbrrrtest_patch_with_exceptions  z#PatchTest.test_patch_with_exceptioncs&tdddifdd}|dS)Nz os.environ konrad_delongz some valuecsdtjdS)Nr)assertInosenvironrr5rrrbrlz3PatchTest.test_patch_dict_with_string..test)r rrfrr5rtest_patch_dict_with_strings z%PatchTest.test_patch_dict_with_stringcs^tj}tdddifdd}zddit_|tjddiW|t_dS|t_w)Nz%unittest.test.testmock.support.targetr7BARcstjddddS)NBAZrr@r7)r_rtargetrr5rrrbsz.testr@r)rr rr rr_rzrr5r$test_patch_dict_decorator_resolutions  z.PatchTest.test_patch_dict_decorator_resolutioncCstdttdddd}|t|tjtdtdddd}|t|tdtddd d}|t|tjtdddd d}|t|dS) NrTrspec_setcS d|_dSNr@zrTrrrrb z+PatchTest.test_patch_spec_set..testrcSr$r%r&r(rrrrbr)r#cSr$r%r&r(rrrrbr)cSr$r%r&r(rrrrbr))r rrrOrr+rrfrrrtest_patch_spec_sets       zPatchTest.test_patch_spec_setcCs(tdtdddd}|t|dS)NrTr*cSs|}d|_dSr%r&)rTrrrrrbs z-PatchTest.test_spec_set_inherit..test)r rrOrrfrrrtest_spec_set_inherits zPatchTest.test_spec_set_inheritcCsdt}tdt}|t||}z||||t|W|n|w|t|dS)Nrv)rxr rassertIsstart assertIsNotstop)rr{patcherrrrrtest_patch_start_stops   zPatchTest.test_patch_start_stopcCsttdd}||dSNr7r)r foo_namerkr0rr1rrrtest_stop_without_starts z!PatchTest.test_stop_without_startcCs.ttdd}||||dSr3)r r4r.r0rkr5rrrtest_stop_idempotents zPatchTest.test_stop_idempotentcCsft}ttdd}|t||}z||d|t|W|n|w|t|dS)Nrxr@)rxr r+r~r-r.r_r0)rr{r1Zreplacedrrrtest_patchobject_start_stops  z%PatchTest.test_patchobject_start_stopcCsnddi}|}tj|dgdd}||||z||ddiW|n|w|||dS)Nr@r7spameggsTrr:r;)rr rr_r.r0rdr{r1rrrtest_patch_dict_start_stops z$PatchTest.test_patch_dict_start_stopcCs@ddi}|}tj|dgdd}|||||dS)Nr@r7r9Tr)rr rrRr0r_r<rrr"test_patch_dict_stop_without_starts z,PatchTest.test_patch_dict_stop_without_startcs|ddi}Gfdddt}tjddidd|}|||}|||||||}||||||dS) Nr:r;cr)z7PatchTest.test_patch_dict_class_decorator..Testcr Nr@r7r r5r=thisrr test_firstzBPatchTest.test_patch_dict_class_decorator..Test.test_firstcr r@r r5rArr test_secondrDzCPatchTest.test_patch_dict_class_decorator..Test.test_secondN)rrr rCrErrArrrsrr@r7Tr)rr+r rr_rCrE)rr{rrbrrArtest_patch_dict_class_decorator s     z)PatchTest.test_patch_dict_class_decoratorcsGdddt}Gddd}||||fD],}t|tddfdd}|jd|jddjqdS) Nc@r)z0PatchTest.test_get_only_proxy..Somethingr@Nrrr r@rrrrrZ-rrZc@r)z4PatchTest.test_get_only_proxy..SomethingElser@NrGrrrrr/rrr@r7crjNr7r_r@rproxyrrrrb5rlz+PatchTest.test_get_only_proxy..testr+r-r r_r@Z assertNotIn__dict__rrZrthingrbrrJrtest_get_only_proxy,s zPatchTest.test_get_only_proxycsGdddt}Gddd}||||fD].}t|ddtddfd d }|jd|jddjqdS) Nc@r)z6PatchTest.test_get_set_delete_proxy..Somethingr@NrGrrrrrZ?rrZc@r)z:PatchTest.test_get_set_delete_proxy..SomethingElser@NrGrrrrrArrF)r,r@r7crjrHrIrrJrrrbGrlz1PatchTest.test_get_set_delete_proxy..testrLrNrrJrtest_get_set_delete_proxy>s  z#PatchTest.test_get_set_delete_proxycCs^tdtd}ttfi|}|}||t|||j d| |jtdS)N!Z side_effectzfoo.bar.return_valuer@) KeyErrorr r r4r.r0rOr_r@r7rrkwargsr1rrrrtest_patch_keyword_argsPs z!PatchTest.test_patch_keyword_argscCsbtdtd}tjtdfi|}|}||t|||j d| |j tdS)NrRrSr4) rTr r r+r.r.r0rOr_r@r7rrUrrrtest_patch_object_keyword_args]s z(PatchTest.test_patch_object_keyword_argscCshddi}|}tj|dddd}|z||tddddW|n|w|||dS)Nr@r7r)r@r7Zbaz)rr rr.r_r0)rr{rr1rrrtest_patch_dict_keyword_argsjsz&PatchTest.test_patch_dict_keyword_argscsGdddt}fddfddfdd}ttd d |}|}t||tjt}tj|d d d |}|}t||dS) Nc@s8eZdZddZddZddZdZGdd d eZd S) z$PatchTest.test_autospec..BoocSr/rrr0rrrr2{r3z-PatchTest.test_autospec..Boo.__init__cSr/rrr0rrrr4|r3z&PatchTest.test_autospec..Boo.fcSr/rrr5rrrr6}r3z&PatchTest.test_autospec..Boo.gr7c@r<)z(PatchTest.test_autospec..Boo.BarcSr/rrr5rrrr1r3z*PatchTest.test_autospec..Boo.Bar.aNr=rrrrr>r?r>N) rrr r2r4r6r@r+r>rrrrBoozs r\cs"|d|dt|dSN)assert_called_withrOrPrr5rr_tests z&PatchTest.test_autospec.._testcs|d|jdt|j||jt|jdtt|d|j|jjtt|jd| |j |j |j j t|j j d| | j t| j dtt|j dtt| ddS)Nr^hr7rD) r4r_rOrPr6rrr@lowerr>r1rr5rr_test2s(         z'PatchTest.test_autospec.._test2cs,|||d|t|Sr])r-r.rr`rcrrrrEs   z)PatchTest.test_autospec..functionTrr.)r+r r4r/r.sysmodulesr)rr\rErbrmodulerrdr test_autospecys     zPatchTest.test_autospeccr)N %s.functionTrcstttjttjtdttjtdtttddtddtttt tddS)Nr^rr@) rEZassert_not_calledrOAssertionErrorZ assert_calledZassert_called_oncer_rPrrrr5rrrbs    z.PatchTest.test_autospec_function..testrrfrr5rtest_autospec_functions z PatchTest.test_autospec_functioncCs0tdtddddd}|}||ddS)NriTr)rrcSs tddS)Nr^rj)rE)Z mock_functionrrrrbs z.PatchTest.test_autospec_keywords..testr)rrbresultrrrtest_autospec_keywordss  z PatchTest.test_autospec_keywordscCFtdtdd}t|WddS1swYdS)Nz%s.Foo.static_methodTr)r rr.r8assert_called_once_withrmethodrrrtest_autospec_staticmethod "z$PatchTest.test_autospec_staticmethodcCro)Nz%s.Foo.class_methodTr)r rr.r;rprqrrrtest_autospec_classmethodrtz#PatchTest.test_autospec_classmethodcCsNtdtddd}|t|jtjt}tj|dddd}|t|jdS)NrirT)newrrE)r rrOrPr.rerfr+)rr1rgrrrtest_autospec_with_news  z PatchTest.test_autospec_with_newcCsXGdddt}tt|d}|}z|||||jtW|dS|w)Nc@seZdZgZdS)z0PatchTest.test_autospec_with_object..BarN)rrr extrarrrrr>rr>r)r.r r4r.rrxlistr0)rr>r1rrrrtest_autospec_with_objects  z#PatchTest.test_autospec_with_objectcCsNt}ttdd}|}z|||||d|W|dS|w)NTrr)r.r r4r.rr0)rZFooClassr1rrrrtest_autospec_inheritss  z PatchTest.test_autospec_inheritscCszttdd}|}z-|dt||dt|j|dt|d|dt|djW|dS|w)NTrz name='Foo'z name='Foo.f'z name='Foo()'z name='Foo().f')r r4r.rreprr4r0)rr1rrrrtest_autospec_names zPatchTest.test_autospec_namecCs^ttdtdd}z|Wnt}Ytddd}|||}|d|dS)Nr4cStr)rkrrrrrbrwz'PatchTest.test_tracebacks..testrzraise AssertionError) r r+r.reexc_infounittestZTextTestResultZ_exc_info_to_stringr)rrberrrm tracebackrrrtest_tracebackss    zPatchTest.test_tracebackscCsTtttd}|}||}||||||fD]}||q dS)N new_callable)r r4r r.r0r/rUrr1Zm1Zm2rrrrtest_new_callable_patch#s    z!PatchTest.test_new_callable_patchcCsXtjtdtd}|}||}||||||fD]}||q"dS)Nr4r)r r+r.r r.r0r/rUrrrrtest_new_callable_patch_object0s   z(PatchTest.test_new_callable_patch_objectcslGfdddtttddd}|}z|t||jtdddW| dS| w)NceZdZdZfddZdS)z:PatchTest.test_new_callable_keyword_arguments..BarNc |_dSrrVrrVr>rrr2@rzCPatchTest.test_new_callable_keyword_arguments..Bar.__init__rrr rVr2rrrrr>>r>r^rj)rarg1arg2)rr) r+r r4r.r-typer_rVrr0)rr1rrrr#test_new_callable_keyword_arguments=sz-PatchTest.test_new_callable_keyword_argumentscsGfdddtttd}|z|jtdW|n|wttd}|z|jtdW|dS|w)Ncr)z-PatchTest.test_new_callable_spec..BarNcrrrrrrrr2Orz6PatchTest.test_new_callable_spec..Bar.__init__rrrrrr>Mrr>rrr)rr#r*)r+r r4r.r_rVrr0r5rrrtest_new_callable_specLsz PatchTest.test_new_callable_speccCs`dt}t|td}|t|jt|tdd}|}z|j|ddW|dS|w)Nz %s.weeeeerT)rrF)rS)r4r rrOrr.rUr0)rZnon_existent_attrprrrrtest_new_callable_createas z"PatchTest.test_new_callable_createcCs4|jtttttd|jttjtdttddS)N)rvrr4)rO ValueErrorr r4r+r r.r5rrr'test_new_callable_incompatible_with_newos  z1PatchTest.test_new_callable_incompatible_with_newcCs0|jttttdd|jttjtdtdddS)NT)rrr4)rOrr r4r r+r.r5rrr,test_new_callable_incompatible_with_autospecys  z6PatchTest.test_new_callable_incompatible_with_autospecc CsGdddt}tttt|f}|D]/}dD]*}|di}ttfd|i|}|}z|j}|t t |dW| q| wqdS)Nc@ eZdZdS)z>PatchTest.test_new_callable_inherit_for_mocks..MockSubNrrr rrrrMockSubrr"Trx) r rr r r r4r.rrOrrr0) rrZ MockClassesZKlassargrVrrrrrr#test_new_callable_inherit_for_mockss z-PatchTest.test_new_callable_inherit_for_mockscCspGdddt}tt|dd}|}z|t|||tt|dW| n| w| |j t dS)Nc@r<)z>PatchTest.test_new_callable_inherit_non_mock..NotAMockcSs ||_dSrr)rrrrrr2rzGPatchTest.test_new_callable_inherit_non_mock..NotAMock.__init__N)rrr r2rrrrNotAMockr?rTrr) r+r r4r.rQrrOrrr0r_rr.)rrrrrrr"test_new_callable_inherit_non_mocksz,PatchTest.test_new_callable_inherit_non_mockcsR|tGfdddt}tttd|}|||tdS)Nc*eZdZfddZddZddZdS)z>PatchTest.test_new_callable_class_decorating..SomeTestcs(tt|ttdSr)r/r.r-rrrZmock_foor{rbrrr`s  zDPatchTest.test_new_callable_class_decorating..SomeTest._testcS||dSrr`rrrrtest_twor*zGPatchTest.test_new_callable_class_decorating..SomeTest.test_twocSrrrrrrrtest_oner*zGPatchTest.test_new_callable_class_decorating..SomeTest.test_oneNrrr r`rrrrrrSomeTests rr)r.r+r r4rrrr-)rrrrr"test_new_callable_class_decoratings  z,PatchTest.test_new_callable_class_decoratingc sttj}tj}tjtddd}tjtddd}||fD]:}|zttjdtjdW| n| wttj|tj|qtjtdddfdd}|dS)Nr^rj)r4r6rrYcs,ttjdtjddS)NrrY)r-r.r_r4r6r original_foorrrrbs z+PatchTest.test_patch_multiple..test) r.r4r6r multipler4r.r-r_r0)r original_f original_gZpatcher1Zpatcher2r1rbrrrtest_patch_multiples$    zPatchTest.test_patch_multiplecCs$|ttjt|ttjtdSr)rOrr rr4r.r5rrrtest_patch_multiple_no_kwargssz'PatchTest.test_patch_multiple_no_kwargscsVttj}tj}tjttdtdfdd}|tj|tj|dS)Nrr4r6r@csZttj|tjdtj|t|tt|tdSNr r-r.r4r_r6r@rQrr )r4r@rrrrbs z8PatchTest.test_patch_multiple_create_mocks..testr.r4r6r rr4rr_)rrrrbrrr test_patch_multiple_create_mockssz*PatchTest.test_patch_multiple_create_mockscsrtj}tj}ttdd}d|_ttdt}d|_|g|_|fdd}|tj|tj|dS)Nr4rr6cs tj|tjddSr)r-r.r6r_r4)r6r5rrrbszHPatchTest.test_patch_multiple_create_mocks_different_order..test) r.r4r6r r+attribute_nameradditional_patchersr_)rrrr1rrbrr5r0test_patch_multiple_create_mocks_different_ordersz:PatchTest.test_patch_multiple_create_mocks_different_ordercsttj}tj}tjttdtjttdttdfdd}tjttdttdtjttdfdd}ttdtjttdtjttdfdd }fd d |||tj|tj|dS) N)r4rz.gc|fi|dSrrr6rVrrrtest1 z?PatchTest.test_patch_multiple_stacked_decorators..test1crrrrrrrtest2rz?PatchTest.test_patch_multiple_stacked_decorators..test2crrrrrrrtest3rz?PatchTest.test_patch_multiple_stacked_decorators..test3cs|d}|d}|ttj|tj|tj|t|t t|t t|t dS)Nr4r@) poprRr-r.r4r6r@rQrr )r6rVr4r@rrrr`s    z?PatchTest.test_patch_multiple_stacked_decorators.._testr)rrrrrrr)r`rrr&test_patch_multiple_stacked_decoratorss*          z0PatchTest.test_patch_multiple_stacked_decoratorscCst}tj}tj}tjttdtd}|}z>|d}|d}|t |t ddg| t|| tj|| tj || t |t| t |tW|n|w|tj||tj|dS)Nrrr4r@)r.r4r6r rr4rr.r_setr-r@rQrr r0)rrrrr1rmr4r@rrr(test_patch_multiple_create_mocks_patcher3s" z2PatchTest.test_patch_multiple_create_mocks_patchercsv|ttj}tj}Gfdddt}tjttdtd|}|}|| | tj|| tj|dS)Ncr)z@PatchTest.test_patch_multiple_decorating_class..SomeTestcsZttj|tjdtj|t|tt|tdSrrrr4r@rrbrrr`Ts zFPatchTest.test_patch_multiple_decorating_class..SomeTest._testcS|||dSrrrrrrr\r'zIPatchTest.test_patch_multiple_decorating_class..SomeTest.test_twocSrrrrrrrr^r'zIPatchTest.test_patch_multiple_decorating_class..SomeTest.test_oneNrrrrrrRs rrr) r.r4r6r+r rr4rrrr_)rrrrrOrrr$test_patch_multiple_decorating_classLsz.PatchTest.test_patch_multiple_decorating_classcCsntjtdd}|t|jtjtddd}|z |tjdW|n|w| t tddS)Nblam)rT)rr) r rr.rOrr.r_rr0rRrr5rrrtest_patch_multiple_createmsz$PatchTest.test_patch_multiple_createcCstjttddgd}|}z4|tj|dtjdtjdtjj dtjj d| t t tjddW| dS| w)Nr1rD)r@r#r@r^rjr)r rr.rr.r_r@r1rDr_rOrr#r0)rr1rmrrrtest_patch_multiple_spec_set{s  z&PatchTest.test_patch_multiple_spec_setcCsGdddt}tjttt|d}|}z/|tj|d|tj|d| tj|| tj|| tjtjW| dS| w)Nc@r)z9PatchTest.test_patch_multiple_new_callable..ThingNrrrrrThingrr)r4r6rr4r6) r+r rr.rr.r-r4r6rr/r0)rrr1rmrrr test_patch_multiple_new_callablesz*PatchTest.test_patch_multiple_new_callablecCstj}tj}ttddttddttdddd}ttddttddttdddd}ttddttddttddd d }|||fD]}|t||tj||tj|qVdS) Nr6r^missingr4cSr/rrrrrrthing1z3PatchTest.test_nested_patch_failure..thing1cSr/rrrrrrthing2rz3PatchTest.test_nested_patch_failure..thing2cSr/rrrrrrthing3rz3PatchTest.test_nested_patch_failure..thing3)r.r4r6r r+rOrr_)rrrrrrfuncrrrtest_nested_patch_failures&          z#PatchTest.test_nested_patch_failurec Cstj}tj}tj}dd}ttddtjtd|dttdddd }tjtd|dttddttddd d }ttddttddtjtd|dd d }|||fD]}|t||tj||tj||tj|q`dS)NcSrNcrasherrrrrrrz4PatchTest.test_new_callable_failure..crasherr6r^r@rr4cSr/rrrrrrrrz3PatchTest.test_new_callable_failure..thing1cSr/rrrrrrrrz3PatchTest.test_new_callable_failure..thing2cSr/rrrrrrrrz3PatchTest.test_new_callable_failure..thing3) r.r4r6r@r r+rOrr_) rrrrrrrrrrrrtest_new_callable_failures,       z#PatchTest.test_new_callable_failurecCstj}tj}ttdd}d|_ttdd}d|_ttdd}d|_||g||gfD]}||_|dd}|t|| tj|| tj|q,dS)Nr4r^r6rcSr/rrrrrrrr9z3PatchTest.test_patch_multiple_failure..func) r.r4r6r r+rrrOrr_)rrrr1goodbad additionalsrrrrtest_patch_multiple_failures   z%PatchTest.test_patch_multiple_failurec Cstj}tj}tj}dd}ttdd}d|_ttdd}d|_tjtd|d}d|_||g||gfD]&}||_|dd } |t | | tj|| tj|| tj|q4dS) NcSrrrrrrrrrzCPatchTest.test_patch_multiple_new_callable_failure..crasherr4r^r6r@rcSr/rrrrrrrr9z@PatchTest.test_patch_multiple_new_callable_failure..func) r.r4r6r@r r+rrrOrr_) rrrrrr1rrrrrrr(test_patch_multiple_new_callable_failures&  z2PatchTest.test_patch_multiple_new_callable_failurecsLtdtfddi}|tjddfdd}|jddS)Nr.fishZtasty nearly gone)rcrj)Nr)r_rrrrrrb rlz=PatchTest.test_patch_multiple_string_subclasses..test)rstrr rr_r)rr.rbrrr%test_patch_multiple_string_subclasses s  z/PatchTest.test_patch_multiple_string_subclasseszunittest.mock.patch.TEST_PREFIXr@cCslGdddt}t|dd|}|}||d||d||d||ddS)Nc@s0eZdZdZddZddZddZdd Zd S) z-PatchTest.test_patch_test_prefix..Foor{cS|jSrrOr5rrrfoo_onez5PatchTest.test_patch_test_prefix..Foo.foo_onecSrrrr5rrrfoo_tworz5PatchTest.test_patch_test_prefix..Foo.foo_twocSrrrr5rrrrrz6PatchTest.test_patch_test_prefix..Foo.test_onecSrrrr5rrrrrz6PatchTest.test_patch_test_prefix..Foo.test_twoN)rrr rOrrrrrrrrr.s  r.rOchangedr{)r+r r_rrrrrr.r@rrrtest_patch_test_prefixs z PatchTest.test_patch_test_prefixr7csGfdddt}dditjdd|}|}||ddi||ddi||ddi||ddidS)Ncs<eZdZfddZfddZfddZfddZd S) z2PatchTest.test_patch_dict_test_prefix..FooctSrrr5Zthe_dictrrbar_one.rz:PatchTest.test_patch_dict_test_prefix..Foo.bar_onecrrrr5rrrbar_two0rz:PatchTest.test_patch_dict_test_prefix..Foo.bar_twocrrrr5rrrr2rz;PatchTest.test_patch_dict_test_prefix..Foo.test_onecrrrr5rrrr4rz;PatchTest.test_patch_dict_test_prefix..Foo.test_twoN)rrr rrrrrrrrr.-s    r.keyr{r)r)r+r rr_rrrrrrrrtest_patch_dict_test_prefix+s z%PatchTest.test_patch_dict_test_prefixc CsdD]A}tdtfi|di}|}z*|dt||dt|j|dt||dt|jW|q|wdS)Nrrr#rTz name='SomeClass'z! name='SomeClass.class_attribute'z name='SomeClass()'z# name='SomeClass().class_attribute')r rr.rr|rr0)rrrrrrrtest_patch_with_spec_mock_reprAs z(PatchTest.test_patch_with_spec_mock_reprcCs`tddd }|dt|j|dt|WddS1s)wYdS)Nunittest.test.testmock.supportTrz" name='support.SomeClass.wibble()'z$ name='support.SomeClass().wibble()')r rr|rr)rrrrrtest_patch_nested_autospec_reprPs "z)PatchTest.test_patch_nested_autospec_reprc CsdD]}tdtfi|di}|}zh|tg}||j|||j|||jjtg|}|t||j|||t||j|||jtg||jjtg||jtgW| q| wdS)NrrT) r rr.rrr_Z mock_callsZ method_callsappendr0)rrrrZkallsrmrrrtest_mock_calls_with_patchYs(  z$PatchTest.test_mock_calls_with_patchcCstd}|t|jtd"t}|tjd<d|_td}d|_|| Wdn1s4wY| |jddS)N squizz.squozzsquizzr) r rO ImportErrorr.rr rerfZsquozzr0r_)rZp1rrrrtest_patch_imports_lazilyts    z#PatchTest.test_patch_imports_lazilycsGdddGfdddtfdd}|ddd }td t}|tjd <|t|Wdn1s.holderNNNN)rrr rrrrrholderrrcseZdZdfdd ZeZdS)zAPatchTest.test_patch_propagates_exc_on_exit..custom_patchNcs t|||||||f_dSr)r__exit__r)retypevaltbrrrrszJPatchTest.test_patch_propagates_exc_on_exit..custom_patch.__exit__r)rrr rr0rrrr custom_patchsrc s$t|\}}||tdddddi S)NF)rr)r getterrY)rrrwith_custom_patchs  zFPatchTest.test_patch_propagates_exc_on_exit..with_custom_patchrcSr~r) RuntimeErrorrrrrrbrwz9PatchTest.test_patch_propagates_exc_on_exit..testrrr^zexception value not propagatedrjz"exception traceback not propagated) rrr rerfrOrr-rZassertIsNotNone)rrrbrr)rrr!test_patch_propagates_exc_on_exits"      z+PatchTest.test_patch_propagates_exc_on_exitcCspdD]3}tdtfddi|di}|t|j|tddttfddi|di}||qdS)Nrr#rz%s.doesnotexistrTcSrr) doesnotexistrrrrrr3z1PatchTest.test_create_and_specs..)r rrOrPr.rMODNAMEr0)rkwargrrrrtest_create_and_specss zPatchTest.test_create_and_specscCst}dD]}ttfddi|di}|t|j|t|qdD]}ttfddi|di}|t|j|t|q"dD]}ttfddi|di}|t|j|t|q@dS)Nr"rrrrr#)r#rr)r~r r rOrPr.r-)rr{r rrrrtest_multiple_specsszPatchTest.test_multiple_specscCs>ttdddd}|}z |jd|_W|dS|w)NFr r)r r r.Zdoes_not_existr0)rrrrrr test_specs_false_instead_of_nones z*PatchTest.test_specs_false_instead_of_nonec CsPdD]#}ttfi|di}|}z|tt|dW|q|wdS)NrrZ doesnotexit)r r r.rOrrr0rr rrrrrtest_falsey_specszPatchTest.test_falsey_specc CsfdD].}ttfddi|di}|}z|tt|dd|tt|dW|q|wdS)Nrr#Tr rx)r r r.rOrr#rr0rrrrtest_spec_set_trues zPatchTest.test_spec_set_truecC@d}tt|d}|}z|t|W|dS|w)N)__call__r)r r r.rQcallabler0rrrrrrrtest_callable_spec_as_list  z$PatchTest.test_callable_spec_as_listcCr)Nrr)r r r.rRrr0rrrrtest_not_callable_spec_as_listrz(PatchTest.test_not_callable_spec_as_listcs^tjtjtj}tdttdttdfdd}|tj|dS)N os.unlinkos.chdirzos.pathcs6ttj|tjtjdSr)r stopallr-rpathunlinkchdir)Z mock_pathr!rr rrrsz-PatchTest.test_patch_stopall..patched) rr r!rr rxr.rr-)rrrrr"rtest_patch_stopallszPatchTest.test_patch_stopallcsPgGdddtfddfdddDt|gddS) Nc@seZdZdZZZdS)z*PatchTest.test_stopall_lifo..thingN)rrr onetwothreerrrrrO r"rOc s8Gfdddtfddddddddi S)Ncs"eZdZfddZZS)z?PatchTest.test_stopall_lifo..get_patch..mypatchcst|Sr)rsuperr0r5) __class__rYmypatchstoppedrrr0s zDPatchTest.test_stopall_lifo..get_patch..mypatch.stop)rrr r0 __classcell__r)rYr)r*)r(rr)sr)csSrrrrrrrr3z@PatchTest.test_stopall_lifo..get_patch..F)r)rY)r*rO)rYr)r get_patchs z.PatchTest.test_stopall_lifo..get_patchcsg|]}|qSr)r.).0r)r,rr sz/PatchTest.test_stopall_lifo..)r$r%r&)r&r%r$)r+r rr_r5r)r,r*rOrtest_stopall_lifo s zPatchTest.test_stopall_lifocsi}ddi}ddd|}|}}t|dddt|dd itfd d }|||||||||t||||||||dS) Nr^r1ABr^rjIIIrjrDcs d=dSr]rrZdic3rrr%r)z2PatchTest.test_patch_dict_stopall..patched)rr rr.rr_r)rdic1dic2origdic1origdic2Zorigdic3rrr5rtest_patch_dict_stopalls$      z!PatchTest.test_patch_dict_stopallcCstj}tj}i}ddd}|}|}tdttdtt|dddt||d=| tj|| tj|| ||| ||t | tj|| tj|| ||| ||dS) Nr0r1r2rrr3r4r^)rr r!rr rxr.rrr/rrr-r_)rZoriginal_unlinkZoriginal_chdirr6r7r8r9rrr!test_patch_and_patch_dict_stopall5s(    z+PatchTest.test_patch_and_patch_dict_stopallcCsddd}t|dd||dWdn1swY||d|j}t|dd||jdWdn1sFwY||j|t|d d ||jd Wdn1skwY||jd t|d td g||jtd gWdn1swY||jtdddd}t|dtdg||dWdn1swY||ddS)NrcS|S)ZTESTrrrrrr@Orwz)PatchTest.test_special_attrs..foo __defaults__)r^r^__doc__ZFUNrZ testpatch2z unittest.test.testmock.testpatch__annotations__)sr^r=cWr<rr)rr1rrrr@cr9__kwdefaults__)rr^)r)r r+r_r?rrr@)rr@Zorig_docrrrtest_special_attrsNs. zPatchTest.test_special_attrscCst}t|d<d|d<|}ttdtd}t||}t|t|| t||Wdn1s>wY| ||t||| t||Wdn1sdwY| ||dS)Nr1ZpythonrDZcdefghijklmnopqrstuvwxyz) rr+rryziprangeitemsr rr_)rr@r{Z update_valuesZpatched_valuesrrrtest_patch_orderdictis  zPatchTest.test_patch_orderdictcCsnddl}td$tjd=tjd=tjd=tjd=tddd }|WddS1s0wYdS) Nrz sys.modulesrzunittest.test.testmockz unittest.testr unittest.test.testmock.support.XcSr/rrrrrrrbrwz9PatchTest.test_dotted_but_module_not_loaded..test)unittest.test.testmock.supportr rrerf)rrrbrrr!test_dotted_but_module_not_loaded|s  "z+PatchTest.test_dotted_but_module_not_loadedc CsGddd}dd|fD]1}|j|d!|t t|Wdn1s*wYWdn1s9wYq dS)Nc@r)z*PatchTest.test_invalid_target..FooNrrrrrr.rr. )r )ZsubTestrOrPr )rr.r rrrtest_invalid_targets  zPatchTest.test_invalid_targetcCsNtdtdddd}|t |WddS1s wYdS)NrIr^)rvrcSr/rrrrrrrbr9z@PatchTest.test_cant_set_kwargs_when_passing_a_mock..test)r r+rOrPrfrrr(test_cant_set_kwargs_when_passing_a_mocks   "z2PatchTest.test_cant_set_kwargs_when_passing_a_mockNT)qrrr rUrgrirmrur|rrrrrrrrrrrrrrrrrrrrrrrrr rrrrrr!r+r,r2r6r7r8r>r?rFrPrQrWrXr[rhrlrnrsrurwrzr{r}rrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrr rrrrrrrr#r/r:r;rCrHrKrNrOrrrrrNUs    + *           !        C         +!   "       rN__main__rP)*rre collectionsrrZunittest.test.testmockrrJrrZtest.test_importlib.utilrZ unittest.mockrrr r r r r rrrrrrfrr~r r-rZrxrrr+r.r4rErFZTestCaserNmainrrrrsH   4   Y