a 5dgZ@sddlZddlZddlmZddlmZddlZddlZddlZddl Z ddl Z Gddde Z ddZ Gdd d ZGd d d ejeZGd d d ejeZddZedkredS)N) DocTestSuite)supportc@s eZdZdS)WeakN__name__ __module__ __qualname__r r 5/usr/local/lib/python3.9/test/test_threading_local.pyrsrcCs t}||_|t|dSN)rweakappendweakrefref)localweaklistr r r r targetsrc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) BaseLocalTestcCs"|d|d|ddS)N2d) _local_refsselfr r r test_local_refss  zBaseLocalTest.test_local_refscCs|}g}t|D]&}tjt||fd}||q~t| t ||dd|D}| t ||d|fd|_ tdd|D}| t ||d|f|t |fdS)NrargscSsg|]}|dur|qSr r .0r r r r +z-BaseLocalTest._local_refs..cSsg|]}|dur|qSr r rr r r r1r ) _localrange threadingThreadrstartjoingccollect assertEquallenZassertInZ someothervar)rnrritZdeadlistr r r rs  zBaseLocalTest._local_refscsrddlGfdddj}|fddtfddtdDWdn1sd0YdS) NrcseZdZfddZdS)z)BaseLocalTest.test_derived..LocalcsddS)Ng{Gz?)sleeprtimer r __init__;sz2BaseLocalTest.test_derived..Local.__init__Nrrrr2r r0r r Local:sr4cs|_j|dSr )xr*)r-)rrr r f?sz%BaseLocalTest.test_derived..fc3s|]}tj|fdVqdS)rN)r$r%rr-)r6r r Dsz-BaseLocalTest.test_derived.. )r1r"rZ start_threadsr#)rr4r )r6rrr1r test_derived4s zBaseLocalTest.test_derivedcsGddd|jddttfdd}tj|d}|fddtd D|| dS) Nc@s eZdZdS)z7BaseLocalTest.test_derived_cycle_dealloc..LocalNrr r r r r4Jsr4FcsLg}||d|d_~ttddDdS)Nbarrcss|]}t|d VqdS)fooN)hasattr)rrr r r r8`r zFBaseLocalTest.test_derived_cycle_dealloc..f..)r r<r(r)setwaitall)cycler4e1e2localsZpassedr r r6Qs  z3BaseLocalTest.test_derived_cycle_dealloc..frcsg|] }qSr r r7)r4r r rir z.r9) r"r$Eventr%r&r?r#r>r'Z assertTrue)rr6r.r rBr test_derived_cycle_deallocHs z(BaseLocalTest.test_derived_cycle_dealloccCsJGddd|j}|dd|d|jt|jdd|t|jddS)Nc@seZdZddZdS)z-BaseLocalTest.test_arguments..MyLocalc_sdSr r )rrkwargsr r r r2rsz6BaseLocalTest.test_arguments..MyLocal.__init__Nr3r r r r MyLocalqsrJr!)a)r" assertRaises TypeError)rrJr r r test_argumentsos  zBaseLocalTest.test_argumentscsd_ttfdd}fdd}tj|d}|tj|d}|||jjdS)Nz No error message set or cleared.cs$d_d_`dS)Nr<r;)r5yr>r?r )rCrDobjr r f1s z)BaseLocalTest._test_one_class..f1csDz j}Wnty"d_Yn0d|f_tjjdS)Nz'Incorrectly got value %r from class %r )r5AttributeError_failedsysstderrwrite)r<)crPrr r f2s   z)BaseLocalTest._test_one_class..f2rF) rTr$rGr%r&r?r'r>Z assertFalse)rrXrQrYt1t2r )rXrCrDrPrr _test_one_classzs  zBaseLocalTest._test_one_classcCs||jdSr )r\r"rr r r test_threading_localsz"BaseLocalTest.test_threading_localcCs Gddd|j}||dS)Nc@s eZdZdS)zBBaseLocalTest.test_threading_local_subclass..LocalSubclassNrr r r r LocalSubclasssr^)r"r\rr^r r r test_threading_local_subclasssz+BaseLocalTest.test_threading_local_subclasscCs|}d|_||jddi|ti|_Wdn1sD0Y|t|`Wdn1sr0YdS)Nr5)r5r*__dict__rLrS)rclsrPr r r _test_dict_attributes $ z"BaseLocalTest._test_dict_attributecCs||jdSr )rdr"rr r r test_dict_attributesz!BaseLocalTest.test_dict_attributecCs Gddd|j}||dS)Nc@s eZdZdS)zABaseLocalTest.test_dict_attribute_subclass..LocalSubclassNrr r r r r^sr^)r"rdr_r r r test_dict_attribute_subclasssz*BaseLocalTest.test_dict_attribute_subclasscCsJGddd}|}||_||j_t|}~t||dS)Nc@s eZdZdS)z.BaseLocalTest.test_cycle_collection..XNrr r r r Xsrg)r"rr5rrr(r)Z assertIsNone)rrgr5wrr r r test_cycle_collections  z#BaseLocalTest.test_cycle_collectionN)rrrrrr:rHrNr\r]r`rdrerfrir r r r rs' $ rc@seZdZejZdS)ThreadLocalTestN)rrr_threadr"r r r r rjsrjc@seZdZejZdS)PyThreadingLocalTestN)rrr_threading_localrr"r r r r rlsrlcsrt}|td|tt|tttjdd}fdd}|td||dt |dS)NrmcSs tjt_dSr )rkr"rmrtestr r r setUpsztest_main..setUpcs t_dSr )rmrrnZ local_origr r tearDownsztest_main..tearDown)rprr) unittestZ TestSuiteZaddTestrZ makeSuiterjrlrmrrZ run_unittest)Zsuiterprrr rqr test_mains rt__main__)rUrsdoctestrrorrr(rkr$rmobjectrrrZTestCaserjrlrtrr r r r s"  .