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@seZdZdZdS)zBBaseLocalTest.test_threading_local_subclass..LocalSubclass(To test that subclasses behave properly.Nrrr__doc__r r r r LocalSubclasssra)r"r\rrar 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 )rgr"rr r r test_dict_attributesz!BaseLocalTest.test_dict_attributecCs Gddd|j}||dS)Nc@seZdZdZdS)zABaseLocalTest.test_dict_attribute_subclass..LocalSubclassr^Nr_r r r r rasra)r"rgrbr 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 Xsrj)r"rr5rrr(r)Z assertIsNone)rrjr5wrr r r test_cycle_collections  z#BaseLocalTest.test_cycle_collectionN)rrrrrr:rHrNr\r]rcrgrhrirlr r r r rs' $ rc@seZdZejZdS)ThreadLocalTestN)rrr_threadr"r r r r rmsrmc@seZdZejZdS)PyThreadingLocalTestN)rrr_threading_localrr"r r r r rosrocsrt}|td|tt|tttjdd}fdd}|td||dt |dS)NrpcSs tjt_dSr )rnr"rprtestr r r setUpsztest_main..setUpcs t_dSr )rprrqZ local_origr r tearDownsztest_main..tearDown)rsru) unittestZ TestSuiteZaddTestrZ makeSuitermrorprrZ run_unittest)Zsuitersrur rtr test_mains rw__main__)rUrvdoctestrrrrrr(rnr$rpobjectrrrZTestCasermrorwrr r r r s"  .