a ze@s$ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZmZddlmZddlmZddlmZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$m%Z%m&Z&ddl'Z'ddl(m)Z)m*Z*ddl+m,Z,m-Z-m.Z.m/Z/zddl0Z0ddl1Z1ddl2Z2Wn e3ydZ0Z1Z2Yn0z ddl4Z4Wne3yYn0Gd d d e j5Z6Gd d d e6Z7Gd dde6Z8dZ9dZ:dZ;dZdZ?dZ@dZAdZBeCeBe9dZDe9de:de;dede?d e@d!eAd"eBd#i ZEGd$d%d%ejFZGGd&d'd'ejFZHGd(d)d)e6ZIGd*d+d+e6ZJGd,d-d-eKZLGd.d/d/ejMZNGd0d1d1eKZOGd2d3d3e6ZPGd4d5d5e'jQZRGd6d7d7eKZSGd8d9d9eSe%ZTGd:d;d;eSe.ZUGdrJGd?d@d@eUZXGdAdBdBeVZYGdCdDdDe6ZZGdEdFdFe6Z[GdGdHdHej\Z]GdIdJdJe6Z^GdKdLdLe6Z_dMdNZ`e aeWed>dOGdPdQdQe_ZbGdRdSdSe6Zce aeWed>dOGdTdUdUecZdGdVdWdWe6Zee aeWed>dOGdXdYdYeeZfe aejgdZGd[d\d\eeZhGd]d^d^e6ZiGd_d`d`e6ZjGdadbdbe6ZkGdcdddde6ZlddedfZmGdgdhdhZndidjZoGdkdldlejMZpGdmdndne6ZqGdodpdpe6ZrGdqdrdre6ZsGdsdtdtejtZuGdudvdve6ZvGdwdxdxe6ZweWejxdyrNddlyZyddzlzm{Z{Gd{d|d|e6Z|e}dZ~Gd}d~d~ejZeZGddde j5ZGdddejZGddde j5ZGddde6ZGddde6ZGdddZGdddejZGddde6ZGddde6ZGddde6ZGddde j5ZGddde j5ZGddde6ZGddde6ZGdddeZGdddeZGdddeZddZddddddedddffD](\ZZeefddZeedeeqe ae0dGddde6ZGddde j5ZddZedkr e dS)N)assert_python_okassert_python_failure)support) socket_helper) TestHandler) HTTPServerBaseHTTPRequestHandler)urlparseparse_qs)ThreadingUDPServerDatagramRequestHandlerThreadingTCPServerStreamRequestHandlerc@s:eZdZdZdZdZddZddZd d d Zd d Z dS)BaseTestz&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rcCst|_tjj}tzvtj |_ tj dd|_ | |_ }tj |_tj |_i|_}|D]}t||dd||<qpWtn t0td|_td|_td|_|j|_t|_|jtjt|j|_ t!|j"|_#|j $|j#|j%r:|jj&|jj&}t'd||j%rb|jj&|jj&}t'd||j(|j |)|j%|)|j%dS)Ndisabledu«×»uĿÖGzUnexpected handlers: %s)*rZthreading_setup_threading_keylogging getLoggermanager loggerDict _acquireLock _handlerscopysaved_handlers _handlerListsaved_handler_list saved_loggers _nameToLevelsaved_name_to_level _levelToNamesaved_level_to_name logger_statesgetattr _releaseLocklogger1logger2 root_loggergetEffectiveLeveloriginal_logging_levelioStringIOstreamsetLevelDEBUG StreamHandler root_hdlr Formatter log_formatroot_formatter setFormatter hasHandlershandlersAssertionError addHandler assertTrue)selfZ logger_dictrr"nameZhlistr<E/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_logging.pysetUpOsB                zBaseTest.setUpcCs8|j|j|j|jjrB|jjd}|j||q|j|jt ztj tj |j tj tj |jtj tj |j|jtjdd<tj}d|_|j}| | |j|j}|jD] }||dur|||j|_qWtn t0|tj|jdS)Nr) r,closer' removeHandlerr0r6r-r)rrr clearupdater!rrrrrrrrdisablerrr"rr$Z doCleanupsrZthreading_cleanupr)r:hrrr"r;r<r<r=tearDownys8           zBaseTest.tearDownNc Cs|p|j}t|p|j}|}|t|t|t||D]8\}}| |}|sh| d||t | |qD| }|r| d|dS)Nz*Log line does not match expected pattern: z'Remaining output at end of log stream: )r,recompileexpected_log_patgetvalue splitlines assertEquallenzipsearchfailtuplegroupsread) r:Zexpected_valuesr,patZ actual_linesactualexpectedmatchsr<r<r=assert_log_liness   zBaseTest.assert_log_linescCs|jd7_d|jS)Nz%d) message_numr:r<r<r= next_messageszBaseTest.next_message)NN) __name__ __module__ __qualname__r2rHrZr>rErXr\r<r<r<r=rGs*" rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)BuiltinLevelsTestcCs"|j}td}|tjttdi}|tjtd}|tj|tj || ||tj || || || ||tj || || || || || || || || ||gddS)NERRINFDEB) )raCRITICAL1)raERROR2)rbrd3)rbrf4)rbWARNING5)rbINFO6)rcrd7)rcrf8)rcrj9)rcrl10)rcr.11)r\rrr-rf LoggerAdapterrlr.logrderrorwarninginfodebugrX)r:mrarbrcr<r<r= test_flats.                 zBuiltinLevelsTest.test_flatcCs|j}td}|tjtd}|tj|tj|||| || || || ddgdS)NrbINF.ERR)r{rdre)r{rfrg r\rrr-rlrfrtrdrurvrwrxrX)r:ryrbINF_ERRr<r<r=test_nested_explicits        z&BuiltinLevelsTest.test_nested_explicitcCs|j}td}|tjtd}|tjtd}td}td}|tj|||| || ||tj|||| || || || || gddS)Nrbr{ INF.UNDEF INF.ERR.UNDEFUNDEF))rrdre)rrfrg)rrjrh)rrlri)rrdrk)rrfrmr|)r:ryrbr}Z INF_UNDEFZ INF_ERR_UNDEFrr<r<r=test_nested_inheriteds&               z'BuiltinLevelsTest.test_nested_inheritedcCs|j}td}td}td}|tj|tj||||tj|||||||| gddS)NrbINF.BADPARENT.UNDEF INF.BADPARENT))rrdre)rrlrg)rrdrh)rrlri) r\rrr-rlrtFATALrwrxrX)r:ryrbZ GRANDCHILDZCHILDr<r<r=test_nested_with_virtual_parent s        z1BuiltinLevelsTest.test_nested_with_virtual_parentcCs,|tdtj|ttjddS)Nrl)rKr getLevelNamerlr[r<r<r=test_regression_22386:sz'BuiltinLevelsTest.test_regression_22386cCstd}||tjdS)Nr)rrrKr)r:fatalr<r<r=test_issue27935?s z!BuiltinLevelsTest.test_issue27935cCs`ttjd|tjtjd|ttjd|ttjd|tdtjdS)NrrlNOTSET)r addLevelNamerl addCleanuprKrrr[r<r<r=test_regression_29220Cs z'BuiltinLevelsTest.test_regression_29220N) r]r^r_rzr~rrrrrr<r<r<r=r`s/#r`c@s$eZdZddZddZddZdS)BasicFilterTestc Cstd}|jjd}z||td}td}td}td}|||||||||ddgW| |n | |0dS)N spam.eggsrspamspam.eggs.fishspam.bakedbeansrrlrgrrlrh) rFilterr'r6 addFilterrrwr\rX removeFilter)r:Zfilter_handlerr spam_eggsspam_eggs_fishspam_bakedbeansr<r<r= test_filterOs"       zBasicFilterTest.test_filterc Csdd}|jjd}z||td}td}td}td}|||||||||dd gW||n ||0dS) NcSs&|jd}d|dd}|dkS)N.r)r;splitjoin)recordpartsprefixr<r<r= filterfuncks z8BasicFilterTest.test_callable_filter..filterfuncrrrrrrr) r'r6rrrrwr\rXr)r:rrrrrrr<r<r=test_callable_filtergs"      z$BasicFilterTest.test_callable_filtercCs*t}tddi}|||dS)Nr;r)rr makeLogRecordr9filter)r:frr<r<r=test_empty_filtersz!BasicFilterTest.test_empty_filterN)r]r^r_rrrr<r<r<r=rKsrxwvutsrqporYSilentTaciturnTerseEffusiveSociableVerbose TalkativeZ Garrulous ChatterboxBoringc@seZdZddZdS)GarrulousFiltercCs |jtkSN)levelno GARRULOUSr:rr<r<r=rszGarrulousFilter.filterNr]r^r_rr<r<r<r=rsrc@seZdZddZdS)VerySpecificFiltercCs|jttfvSr)rSOCIABLETACITURNrr<r<r=rszVerySpecificFilter.filterNrr<r<r<r=rsrc@s8eZdZdZddZddZddZdd Zd d Zd S) CustomLevelsAndFiltersTest^[\w.]+ -> (\w+): (\d+)$cCs,t|tD]\}}t||qdSr)rr>my_logging_levelsitemsrr)r:kvr<r<r=r>s z CustomLevelsAndFiltersTest.setUpcCstD]}|||qdSr) LEVEL_RANGErtr\)r:loggerZlvlr<r<r=log_at_all_levelssz,CustomLevelsAndFiltersTest.log_at_all_levelscCs*|jt||j|gddS)N)rrkrrmrrnrrorrprrq)r'r-VERBOSErrXr[r<r<r=test_logger_filters  z-CustomLevelsAndFiltersTest.test_logger_filterc Cs`|jjdtz2||j|gdW|jjdtjn|jjdtj0dS)Nr)rrrrr)r'r6r-rrrXrrr[r<r<r=test_handler_filters  z.CustomLevelsAndFiltersTest.test_handler_filterc Cs|jjd}d}t}||zl||jgd}||t}|j|||j||gdW|r|j|||n|r|j|||0dS)Nr) )rre)rrg)rrirrrrrr))rrr)rZ12)rZ14)rZ15)rZ17)rZ18)rZ20)r'r6rrrrXrr)r:rZspecific_filterZgarrZ first_linesr<r<r=test_specific_filterss$          z0CustomLevelsAndFiltersTest.test_specific_filtersN) r]r^r_rHr>rrrrr<r<r<r=rs rc@sZeZdZddZddZddZeej dkdd d Z ee ed  d d dZ dS) HandlerTestcCsDt}d|_||jdd|_||jd|t|jddS)NgenericZanothergeneric)rHandlerr;rK assertRaisesNotImplementedErroremitr:rDr<r<r= test_names zHandlerTest.test_namec CstjdvrXdD]}t\}}t||s8t|tjj |dd}|r|j |j }}| |d| |dt ddi}||t||tj||||tj|n| |j d| |j d||rt|qtjdkr d }nd }z4tj|}| |j|j||j|WntyVYn0d D]@} | d kr|ttjjd d| ntjd d| }|q\tjd}t i}||||tjd}||||dS)Nlinuxdarwin)TFTdelaymsgZTestrz/var/run/syslogz/dev/log)GETPOSTPUTr localhostz/logrrY)sysplatformtempfilemkstemposr?unlinkrr6WatchedFileHandlerdevinorKrhandle assertFalsepathexistsr9 SysLogHandlerZfacilityZLOG_USERZ unixsocketOSErrorr ValueError HTTPHandlerZBufferingHandlerZ shouldFlush) r:ZexistingfdfnrDrrrZsocknamemethodr<r<r=test_builtin_handlers s\                    z!HandlerTest.test_builtin_handlerscCst\}}t|t|t|}tj|dfftj j |dfftj j |dfff}t j dvrv|tj j|dfff7}|D]4\}}||}|tj||t|qzdS)NwarDr)rrrr?rpathlibPathr FileHandlerr6RotatingFileHandlerTimedRotatingFileHandlerrrrr9rr)r:rrZpfnZcasesclsargsrDr<r<r=test_path_objectsVs       zHandlerTest.test_path_objectsntz/WatchedFileHandler not appropriate for Windows.c sNfdd}d}d}d_d_dD]"}tdd\}}t|tj|||fd}d|_| t j j ||d }t d } || zt|D]^} td t d d i} zt_|| WqtytdjjfYq0qW||tj|rHt|q$||tj|rFt|0q$dS)Nc sTt|D]F}zt|t_Wnty6Yn0tdtddqdS)NgMbp?r) rangerrtime deletion_timersleeprandomrandint)ZfnameZtries_r[r<r= remove_loopps   z*HandlerTest.test_race..remove_loopiFT.logztest_logging-3-targetr Trz'%(asctime)s: %(levelname)s: %(message)s{Gzt?rZtestingzDeleted at %s, opened at %s)Z handle_timerrrrr? threadingThreaddaemonstartrr6rr1r4rrrrr Exceptionprintrrrr) r:rZ del_countZ log_countrrrZremoverrDrrrr<r[r= test_racemsH           zHandlerTest.test_raceforkzTest requires os.fork().c s&Gdddtj}|ttjd||jjjd_ | ttjd| ttj dt d}| |tjttfdd}tj|d d }|t}|dkrz|d Wtdn td0n(|d |tj|dd dS)Ncs$eZdZfddZddZZS)zAHandlerTest.test_post_fork_child_no_deadlock.._OurHandlercs"ttjtddd|_dS)Nz /dev/nullZwtr,)super__init__rr/open sub_handlerr[ __class__r<r=r&s zJHandlerTest.test_post_fork_child_no_deadlock.._OurHandler.__init__cSs6|jz|j|W|jn |j0dSr)r(acquirerreleaserr<r<r=rs zFHandlerTest.test_post_fork_child_no_deadlock.._OurHandler.emitr]r^r_r&r __classcell__r<r<r)r= _OurHandlers r/rz*because we need at least one for this testrY test_post_fork_child_no_deadlockcsVtz>zdWn 0Wtn t0dS)N?)rrr+setwaitr,r$r<Z+fork_happened__release_locks_and_end_threadZlocks_held__ready_to_forkZrefed_hr<r=lock_holder_thread_fns zKHandlerTest.test_post_fork_child_no_deadlock..lock_holder_thread_fnz,test_post_fork_child_no_deadlock lock holder)rr;z#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcode)rrrKrLrrr(r,r?r; assertGreater_at_fork_reinit_lock_weaksetrr8r-r.rEventrrr3rr#rw_exitr2rrZ wait_process)r:r/Z test_loggerr5Zlock_holder_threadpidr<r4r=r0s8      z,HandlerTest.test_post_fork_child_no_deadlockN) r]r^r_rrr unittestZskipIfrr;r"hasattrr0r<r<r<r=rs6 0rc@seZdZddZdS) BadStreamcCs tddS)Ndeliberate mistake) RuntimeErrorr:datar<r<r=writeszBadStream.writeN)r]r^r_rCr<r<r<r=r>sr>c@seZdZddZdS)TestStreamHandlercCs ||_dSr) error_recordrr<r<r= handleErrorszTestStreamHandler.handleErrorN)r]r^r_rFr<r<r<r=rDsrDc@seZdZejZdZdS)StreamWithIntNamerN)r]r^r_rrlevelr;r<r<r<r=rGsrGc@s$eZdZddZddZddZdS)StreamHandlerTestcCstt}ti}tj}z||||j|tt}t .}||d}| || Wdn1s|0Ydt_t *}||| d| Wdn1s0YW|t_n|t_0dS)Nz" RuntimeError: deliberate mistake Fr)rDr>rrraiseExceptionsrassertIsrEr/rcaptured_stderrassertInrIrK)r:rDrZ old_raisestderrrr<r<r=test_error_handlings       .  0z%StreamHandlerTest.test_error_handlingcCsVt}t}||}||tj||}|||||}||dSr) rr/r*r+ setStreamrKrrN assertIsNone)r:rDr,oldrTr<r<r=test_stream_setting s    z%StreamHandlerTest.test_stream_settingcCs tt}|t|ddS)Nz)rr/rGrKreprrr<r<r='test_can_represent_stream_with_int_names z9StreamHandlerTest.test_can_represent_stream_with_int_nameN)r]r^r_rOrSrUr<r<r<r=rIsrIc@s4eZdZddZddZddZddZd d Zd S) TestSMTPServercCsBtjj||d|dd|jd|_||_d|_d|_||_ dS)NT)mapZ decode_datarYF) smtpd SMTPServerr&socket getsocknameport_handler_thread_quit poll_interval)r:addrrr`sockmapr<r<r=r&7szTestSMTPServer.__init__cCs|||||dSr)r])r:peermailfromrcpttosrBr<r<r=process_message@s zTestSMTPServer.process_messagecCs0tj|j|jfd|_}|d|dSNrTrr serve_foreverr`r^ setDaemonrr:tr<r<r=rLs   zTestSMTPServer.startcCs|jstj||jddqdS)NrY)rWcount)r_asyncoreZloop_mapr:r`r<r<r=riUszTestSMTPServer.serve_forevercCs4d|_t|jd|_|tj|jdddS)NT)rWZ ignore_all)r_r join_threadr^r?rnZ close_allror[r<r<r=stop`s  zTestSMTPServer.stopN)r]r^r_r&rfrrirrr<r<r<r=rV"s     rVcs4eZdZddZddZfddZddZZS) ControlMixincCs d|_||_||_t|_dSr)r^r`r]rr9ready)r:rr`r<r<r=r&|szControlMixin.__init__cCs0tj|j|jfd|_}|d|dSrgrhrkr<r<r=rs   zControlMixin.startcs|jtt||dSr)rtr2r%rsrirpr)r<r=ris zControlMixin.serve_forevercCs:||jdur$t|jd|_||jdSr)shutdownr^rrq server_closertrAr[r<r<r=rrs   zControlMixin.stop)r]r^r_r&rrirrr.r<r<r)r=rsls rsc@seZdZdddZddZdS) TestHTTPServerr1FNcs<Gfdddtt||t|||||_dS)Ncs2eZdZdddZddZfddZZS) z=TestHTTPServer.__init__..DelegatingHTTPRequestHandlerNcSs|dr|jSt|dS)NZdo_) startswithprocess_requestAttributeError)r:r;defaultr<r<r= __getattr__s zITestHTTPServer.__init__..DelegatingHTTPRequestHandler.__getattr__cSs|j|dSrserverr]r[r<r<r=ryszMTestHTTPServer.__init__..DelegatingHTTPRequestHandler.process_requestcs rt|j|g|RdSr)r% log_message)r:formatr )DelegatingHTTPRequestHandlerr*rtr<r=rszITestHTTPServer.__init__..DelegatingHTTPRequestHandler.log_message)N)r]r^r_r|ryrr.r<rrtr)r=rs r)rrr&rssslctx)r:rarr`rtrr<rr=r&s zTestHTTPServer.__init__c Cshz(|j\}}|jr&|jj|dd}Wn6ty^}ztjd|WYd}~n d}~00||fS)NT)Z server_sidezGot an error: %s )rZacceptrZ wrap_socketrrrNrC)r:sockraer<r<r= get_requestszTestHTTPServer.get_request)r1FN)r]r^r_r&rr<r<r<r=rws  rwcs*eZdZdZdddZfddZZS) TestTCPServerTr1cCs2Gdddt}t||||t|||dS)Nc@seZdZddZdS)z;TestTCPServer.__init__..DelegatingTCPRequestHandlercSs|j|dSrr}r[r<r<r=rszBTestTCPServer.__init__..DelegatingTCPRequestHandler.handleN)r]r^r_rr<r<r<r=DelegatingTCPRequestHandlersr)rr r&rs)r:rarr`bind_and_activaterr<r<r=r&s  zTestTCPServer.__init__cs"tt||jd|_dSNrY)r%r server_bindrZr[r\r[r)r<r=rszTestTCPServer.server_bind)r1T)r]r^r_Zallow_reuse_addressr&rr.r<r<r)r=rs  rcs2eZdZd ddZfddZfddZZS) TestUDPServerr1Tcs<Gfdddtt|||t|||d|_dS)Ncs&eZdZddZfddZZS)z;TestUDPServer.__init__..DelegatingUDPRequestHandlercSs|j|dSrr}r[r<r<r=rszBTestUDPServer.__init__..DelegatingUDPRequestHandler.handlecsB|j}|r>zt|Wnty<|jjs8Yn0dSr)ZwfilerIr%finishrr~_closedrA)DelegatingUDPRequestHandlerr*r<r=rs  zBTestUDPServer.__init__..DelegatingUDPRequestHandler.finish)r]r^r_rrr.r<rr)r=rsrF)r r r&rsr)r:rarr`rr<rr=r&szTestUDPServer.__init__cs"tt||jd|_dSr)r%rrrZr[r\r[r)r<r=r szTestUDPServer.server_bindcstt|d|_dS)NT)r%rrvrr[r)r<r=rvszTestUDPServer.server_close)r1T)r]r^r_r&rrvr.r<r<r)r=rs   rAF_UNIXc@seZdZejZdS)TestUnixStreamServerNr]r^r_rZraddress_familyr<r<r<r=rsrc@seZdZejZdS)TestUnixDatagramServerNrr<r<r<r=rsrc@s"eZdZejZddZddZdS)SMTPHandlerTestc Cs i}ttjdf|jd|}|tj|jf}tjj|ddd|j d}| |j dgg|_ t ddi}t|_|||j|j |||j| t|j d |j d\}}}} | |d| |dg|d | || d |dS) NrMbP?meZyouZLog)timeoutru Hello ✓rYz Subject: Log u Hello ✓)rVrZHOSTrfrr\rr6Z SMTPHandlerTIMEOUTrKZtoaddrsmessagesrrr9handledrr3rrr9is_setrLrMendswithr?) r:rbr~rarDrrcrdrerBr<r<r= test_basic"s0     zSMTPHandlerTest.test_basiccGs|j||jdSr)rappendrr2)r:r r<r<r=rf:s zSMTPHandlerTest.process_messageN)r]r^r_rZ LONG_TIMEOUTrrrfr<r<r<r=rsrc@s8eZdZdZddZddZddZdd Zd d Zd S) MemoryHandlerTestrcCsFt|tjdtj|j|_td|_ d|j _ |j |jdS)N Zmemr) rr>rr6 MemoryHandlerrjr0mem_hdlrr mem_logger propagater8r[r<r<r=r>Es   zMemoryHandlerTest.setUpcCs|jt|dSr)rr?rrEr[r<r<r=rEMs zMemoryHandlerTest.tearDowncCs|j||g|j||g|j|gd}||dD]b}tdD]}|j|qf|||j||ddt||dD}||qZ|j|||dS)N)r.rerlrg)rjrh)r cSsg|]}dt|fqS)r.)str).0ir<r<r= gz0MemoryHandlerTest.test_flush..r)rrxr\rXrwrvr)r:linesnrr<r<r= test_flushQs       zMemoryHandlerTest.test_flushcCs|j||g|j||g|j|j|jddg}||tj dtj |j d|_|j |j|j||||j||||j|j|j||dS)NrrrF)rrxr\rXrwr@rr?rr6rrjr0r8)r:rr<r<r=test_flush_on_closems,        z%MemoryHandlerTest.test_flush_on_closec CsGddd}||j}zV|j|tdD]&}td|jd|jdq.W|jD]}t |q^n|jD]}t |qv0dS)Nc@s$eZdZddZddZddZdS)zZMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandlercSs||_g|_dSr)rthreads)r:rr<r<r=r&szcMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.__init__cSs|jddSr)r setTargetr[r<r<r= removeTargetszgMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.removeTargetcSs&tj|jd}|j||dS)N)r)rrrrrr)r:rthreadr<r<r=rs zaMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.handleN)r]r^r_r&rrr<r<r<r=MockRaceConditionHandlersrrrz not flushedZflushed) rrrrrrrwrvrrrq)r:rrrrr<r<r=&test_race_between_set_target_and_flushs       z8MemoryHandlerTest.test_race_between_set_target_and_flushN) r]r^r_rHr>rErrrr<r<r<r=r>s rc@seZdZddZdS)ExceptionFormattercCsd|djS)Nz Got a [%s]r)r])r:eir<r<r=formatExceptionsz"ExceptionFormatter.formatExceptionN)r]r^r_rr<r<r<r=rsrc@seZdZejZdZdZdZdZe ddZ e ddZ d ed Z e d d Z d ZdZdZdZddZddZddZefddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-S).ConfigFileTest^(\w+) \+\+ (\w+)$aN [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= a [loggers] keys=root,parser [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers= [logger_parser] level=DEBUG handlers=hand1 propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= a [loggers] keys=root,parser [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [logger_parser] level=DEBUG handlers= propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= z sys.stdoutz sys.stboutzformatter=form1zformatter=misspelled_namea [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=NOTSET handlers=hand1 [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] class=zS.ExceptionFormatter format=%(levelname)s:%(name)s:%(message)s datefmt= zclass=StreamHandlerzclass=logging.StreamHandlerag [loggers] keys=root,parser [handlers] keys=hand1, hand2 [formatters] keys=form1, form2 [logger_root] level=WARNING handlers= [logger_parser] level=DEBUG handlers=hand1 propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [handler_hand2] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stderr,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= [formatter_form2] format=%(message)s datefmt= a% [loggers] keys=root,parser,compiler [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [logger_compiler] level=DEBUG handlers= propagate=1 qualname=compiler [logger_parser] level=DEBUG handlers= propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 kwargs={'stream': sys.stdout,} [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= z [loggers] keys=root [handlers] keys=file [formatters] keys= [logger_root] level=DEBUG handlers=file [handler_file] class=FileHandler level=DEBUG args=("{tempfile}",) z [loggers] keys=root [handlers] keys=screen [formatters] keys= [logger_root] level=DEBUG handlers=screen [handler_screen] level=DEBUG class=StreamHandler args=(sys.stdout,) formatter= cKs(tt|}tjj|fi|dSr)r*r+textwrapdedentrconfig fileConfig)r:confkwargsfiler<r<r= apply_configszConfigFileTest.apply_configcCsvtZ}||jt}|||||j dg|d| gWdn1sh0YdSNrfrgr$ rcaptured_stdoutrconfig0rrrwr\rurXr:outputrr<r<r=test_config0_oks  zConfigFileTest.test_config0_okcCst~}tt|j}t}| |t j |t }|||||jdg|d|gWdn1s0YdSr)rrr*r+rrr configparser ConfigParserZ read_filerrrrrwr\rurX)r:rrZcprr<r<r=test_config0_using_cp_oks   z'ConfigFileTest.test_config0_using_cp_okcCsxt\}||td}|||||jddg|d|gWdn1sj0YdSNcompiler.parserrlrerr$ rrrrrrwr\rurXr:rrrr<r<r=test_config1_oks   zConfigFileTest.test_config1_okcCs|t|j|jdSrrr rconfig2r[r<r<r=test_config2_failuresz#ConfigFileTest.test_config2_failurecCs|t|j|jdSrrr rconfig3r[r<r<r=test_config3_failuresz#ConfigFileTest.test_config3_failurec Cstr}||jt}z tWntyDtdYn0tj d| | d| gWdn1s0YdSNz just testingrz-ERROR:root:just testing Got a [RuntimeError] )rrrconfig4rrr@ exceptionrstdoutseekrKrIrXrr<r<r=test_config4_oks      zConfigFileTest.test_config4_okcCs|j|jddSN)rrconfig5r[r<r<r=test_config5_okszConfigFileTest.test_config5_okcCs|j|jddSr)rconfig6r[r<r<r=test_config6_okszConfigFileTest.test_config6_okcCsJtv}||jtd}td}||||| ||j gd|d| gWdn1s0Yt}||j td}| |j ||||td}||||| ||j gd|d| gWdn1s<0YdSNrzcompiler-hyphenated)rr)rdrhr$compiler.lexer))rlri)rfrk)rlrm)rfrn)rrrconfig1arrrwr\rucriticalrXconfig7rrr:rrZ hyphenatedr<r<r=test_config7_oks2     (      zConfigFileTest.test_config7_okcCsdd}|btdd\}}t|tjdkrB|dd}|jj|d}| || |Wdn1sx0Yt j j d }| |||dS) NcSs|t|dSrr?rremoveh1rr<r<r=cleanup)sz/ConfigFileTest.test_config8_ok..cleanuprtest_logging-X-r \z\\)rr)check_no_resource_warningrrrr?r;replaceconfig8rrrrootr6r)r:rrrrrr<r<r=test_config8_ok's     ( zConfigFileTest.test_config8_okcCsZ||jtd}||j||j||j|j|jdd||jdS)NZsome_pristine_loggerF)disable_existing_loggers)r disable_testrrrrr9r:rr<r<r=test_logger_disabling>s     z$ConfigFileTest.test_logger_disablingcCs*d}|||tjdjddS)Naw [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] handlers=hand1 [handler_hand1] class=StreamHandler formatter=form1 [formatter_form1] format=%(levelname)s ++ %(message)s rhand1)rrKrrr6r;)r:Z test_configr<r<r=test_config_set_handler_namesGs z,ConfigFileTest.test_config_set_handler_namesc Cstd}tjddd\}}zPt||dt|t j j |t dddd d d d id dWt |n t |0dS)Nat [formatters] keys=default [formatter_default] [handlers] keys=console [handler_console] class=logging.StreamHandler args=tuple() [loggers] keys=root [logger_root] formatter=default handlers=console test_logging_z.inirsuffixasciirYFrz5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)rdatefmtclass)versionr formatters)defaults)rrstriprrrrCencoder?rrrdictr)r:Zinirrr<r<r=!test_defaults_do_no_interpolation_s& z0ConfigFileTest.test_defaults_do_no_interpolationN) r]r^r_rrrHrconfig1rrrrrrrrrrrrrrrrrrrrrrrrr<r<r<r=rs>    *& + rc@s<eZdZeZdZddZddZddZdd Z d d Z d S) SocketHandlerTestrrc Cst|d|_|_|_z$||j|jd|_}|Wn,t yl}z||_WYd}~dSd}~00|j t j j}t|jtr|d|j|_n||jd|_d|_|j|jj d|j|jtd|_dSN{Gz?rrr)rr>r~ sock_hdlrserver_exception server_classaddress handle_socketrrrtr3rr6Z SocketHandler isinstanceserver_addressrPr\ log_outputr'r@r8r Semaphorerr:r~rZhclsr<r<r=r>s&     zSocketHandlerTest.setUpc CsNz<|jr |j|j|j|jr0|jWt|n t|0dSr)rr'r@r?r~rrrrEr[r<r<r=rEs  zSocketHandlerTest.tearDowncCs|j}|d}t|dkrqtd|d}||}t||kr\|||t|}q8t|}t|}|j |j d7_ |j qdS)Nr>Lr ) connectionrecvrLstructunpackpickleloadsrrrrrr,)r:requestconnchunkslenobjrr<r<r=rs      zSocketHandlerTest.handle_socketcCsV|jr||jtd}|d|j|d|j||j ddS)NZtcpreggs spam eggs ) rskipTestrrrurr+rxrKrrr<r<r= test_outputs      zSocketHandlerTest.test_outputcCs|jr||jd|j_|jz tdWntyN|jdYn0|j dt }| |jj |t |jj |d|j ddS)Ng@zDeliberate mistakez Never sentzNever sent, eitherrzNor this)rr/rZ retryStartr~rrr@r'rrurr7Z retryTimer)r:nowr<r<r= test_noservers     zSocketHandlerTest.test_noserverN) r]r^r_rrrr>rErr0r2r<r<r<r=rs  rcCs*tjddd\}}t|t||S)Nrz.sockr)rrrr?r)rrr<r<r=_get_temp_domain_sockets  r3zUnix sockets requiredc@s*eZdZeedreZddZddZdS)UnixSocketHandlerTestrcCst|_t|dSr)r3rrr>r[r<r<r=r>szUnixSocketHandlerTest.setUpcCst|t|jdSr)rrErrrr[r<r<r=rEs zUnixSocketHandlerTest.tearDownN) r]r^r_r=rZrrr>rEr<r<r<r=r4s r4c@s4eZdZeZdZddZddZddZdd Z d S) DatagramHandlerTestrc Cst|d|_|_|_z$||j|jd|_}|Wn,t yl}z||_WYd}~dSd}~00|j t j j}t|jtr|d|j|_n||jd|_d|_|j|jj d|j|jt|_dSr)rr>r~rrrrhandle_datagramrrrtr3rr6ZDatagramHandlerrrrPr\rr'r@r8rr9rrr<r<r=r>s&     zDatagramHandlerTest.setUpc CsNz<|jr|j|jr0|j|j|jWt|n t|0dSr)r~rrrr'r@r?rrEr[r<r<r=rEs  zDatagramHandlerTest.tearDowncCsTtdd}|jt|d}t|}t|}|j|j d7_|j dS)Nr rr!) r$packpacketrLr&r'rrrrrr2)r:r(r+r8r,rr<r<r=r6)s    z#DatagramHandlerTest.handle_datagramcCs`|jr||jtd}|d|j|j|d|j||j ddS)NZudprr-r.) rr/rrrurr3rArKrrr<r<r=r01s       zDatagramHandlerTest.test_outputN r]r^r_rrrr>rEr6r0r<r<r<r=r5s  r5c@s*eZdZeedreZddZddZdS)UnixDatagramHandlerTestrcCst|_t|dSr)r3rr5r>r[r<r<r=r>EszUnixDatagramHandlerTest.setUpcCst|t|jdSr)r5rErrrr[r<r<r=rEJs z UnixDatagramHandlerTest.tearDownN r]r^r_r=rZrrr>rEr<r<r<r=r:=s r:c@s4eZdZeZdZddZddZddZdd Z d S) SysLogHandlerTestrc Cst|d|_|_|_z$||j|jd|_}|Wn,t yl}z||_WYd}~dSd}~00|j t j j}t|jtr||jd|jf|_n ||j|_d|_|j|jj d|j|jt|_dS)Nrrr)rr>r~sl_hdlrrrrr6rrrtr3rr6rrrrPr\rr'r@r8rr9rrr<r<r=r>Us&      zSysLogHandlerTest.setUpc CsNz<|jr|j|jr0|j|j|jWt|n t|0dSr)r~rrr=r'r@r?rrEr[r<r<r=rEos  zSysLogHandlerTest.tearDowncCs|j|_|jdSr)r8rrr2)r:r(r<r<r=r6zsz!SysLogHandlerTest.handle_datagramcCs|jr||jtd}|d|j||jd|j d|j _ |d|j||jd|j d|j _ |d|j||jddS)NZslhspäms <11>spämFs <11>spämuhäm-s<11>häm-späm) rr/rrrurr3rKrrAr=Z append_nulidentrr<r<r=r0~s           zSysLogHandlerTest.test_outputNr9r<r<r<r=r<Ns  r<c@s*eZdZeedreZddZddZdS)UnixSysLogHandlerTestrcCst|_t|dSr)r3rr<r>r[r<r<r=r>szUnixSysLogHandlerTest.setUpcCst|t|jdSr)r<rErrrr[r<r<r=rEs zUnixSysLogHandlerTest.tearDownNr;r<r<r<r=r@s r@z$IPv6 support required for this test.cs0eZdZeZdZfddZfddZZS)IPv6SysLogHandlerTest)z::1rcstj|j_tt|dSr)rZAF_INET6rrr%rAr>r[r)r<r=r>s zIPv6SysLogHandlerTest.setUpcstj|j_tt|dSr)rZAF_INETrrr%rArEr[r)r<r=rEs zIPv6SysLogHandlerTest.tearDown) r]r^r_rrrr>rEr.r<r<r)r=rAs rAc@s$eZdZddZddZddZdS)HTTPHandlerTestcCst|t|_dSr)rr>rr9rr[r<r<r=r>s zHTTPHandlerTest.setUpcCsr|j|_t|j|_|jdkrRz t|jd}|j||_Wnd|_Yn0| d| |j dS)NrzContent-Length) commandr rlog_dataintZheadersZrfilerR post_dataZ send_responseZ end_headersrr2)r:r(Zrlenr<r<r=handle_requests    zHTTPHandlerTest.handle_requestc Cstd}|j}||jjddD]}d}|rz ddl}WntyVd}Yq0tj t }tj |d}| |j }|||j|d} nd}d} t||jd|d|_} | | jd | j} |o|} tjj| d | | d d |_d|_||jd D]} | |j_|jd}|||j||jjd ||j | | dkrlt!|jj"}nt!|j#$d}||ddg||ddg||d|gq|j%|j|j|j&q&dS)Nhttprrrz keycert.pem)Zcafiler)rz localhost:%dz/frob)foobar)securecontextZ credentials)rrr>rutf-8r;funcNamer0r)'rrr'r@r6ssl ImportErrorrrdirname__file__rZ SSLContextZPROTOCOL_TLS_SERVERZload_cert_chainZcreate_default_contextrwrJr~rrtr3Z server_portrZh_hdlrrGr8rrrArurKrFr queryrIdecoderrr?)r:rr'rNrarRrhereZlocalhost_certrOr~hostZ secure_clientrrdr<r<r=r0s`                  zHTTPHandlerTest.test_outputN)r]r^r_r>rJr0r<r<r<r=rDs rDc@s,eZdZddZddZddZddZd S) MemoryTestcCst|i|_dSr)rr> _survivorsr[r<r<r=r>s zMemoryTest.setUpcGs.|D]$}t|t|f}t||j|<qdSr)idrTweakrefrefr\)r:r r,keyr<r<r=_watch_for_survival szMemoryTest._watch_for_survivalcCs\tg}|jD] \\}}}|dur||q|rX|dt|d|fdS)Nz;%d objects should have survived but have been destroyed: %sz, )gcZcollectr\rrrOrLr)r:ZdeadZid_repr_r_r<r<r=_assertTruesurvivals  zMemoryTest._assertTruesurvivalcCs|jtjtd}|||tj|j|||| dg~| td}||| ddgdS)NrL)rLr.rg)rLr.rh) r'r-rrlrrar.rxr\rXrd)r:rLrMr<r<r=test_persistent_loggerss"    z"MemoryTest.test_persistent_loggersN)r]r^r_r>rardrer<r<r<r=r[s r[c@seZdZddZddZdS) EncodingTestc Cstd}tdd\}}t|d}ztj|dd}||z ||W| ||n| ||0t |dd}z | | |W|n |0Wtj|rt|ntj|rt|0dS)Ntestrztest_logging-1-ufoo€rPencoding)rrrrrr?rr8rvr@r'rKrRrstriprisfiler)r:rtrrrBrrr<r<r=test_encoding_plain_file5s*          z%EncodingTest.test_encoding_plain_filec Cstd}d}td}d|_t}||d}t|}||z | |W| || n| || 0| }| |ddS)Nrguдо свиданияcp1251stricts )rrcodecs getwriterrir*BytesIOr/r8rvr@r?rIrK)r:rtmessageZ writer_classr,writerrrWr<r<r=test_encoding_cyrillic_unicodeOs          z+EncodingTest.test_encoding_cyrillic_unicodeN)r]r^r_rlrtr<r<r<r=rf4srfc@seZdZddZddZdS) WarningsTestc Csttd|tjdtjdtdt}t |}t d}| |t d| ||}|||ddt}td td d |d |}|||d Wdn1s0YdS)NTFalways)category py.warningszI'm warning you...z UserWarning: I'm warning you... rExplicitdummy.py*z Dummy linez0dummy.py:42: UserWarning: Explicit Dummy line )warningscatch_warningsrcaptureWarningsrfilterwarnings UserWarningr*r+r/rr8warnr@rIr?r7find showwarningrK)r:r,rDrrWZa_filer<r<r= test_warningsgs,        zWarningsTest.test_warningscCstvtd|tjdtd}||jgtdt dd|t |jd| |jdtj Wdn1s0YdS) NTFrxryrzr{rYr) r|r}rr~rrrKr6rrrLassertIsInstance NullHandlerrr<r<r=test_warnings_no_handlerss   z&WarningsTest.test_warnings_no_handlersN)r]r^r_rrr<r<r<r=ruesrucCs t||Sr)rr1)rrr<r<r= formatFuncsrc@seZdZdddZdS)myCustomFormatterNcCsdSrr<)r:fmtrr<r<r=r&szmyCustomFormatter.__init__)N)r]r^r_r&r<r<r<r=rsrcCstSr)rr/r<r<r<r= handlerFuncsrc@s eZdZdS) CustomHandlerNr]r^r_r<r<r<r=rsrc @seZdZejZdZddddiiddddd d id dgd d Zddddiiddddd d idddgd idd idZddddiiddddd d idddiid dgd dZddddiidddddd idddgd idd idZ ddddiiddddd d idddgd idd idZ ddddiiddddd d idddgd iddidZ ddddiiddddd d idddgd idd idZ ddedddiddddd d iddgd d Z deddedddeddddddd d deidddgd d Zddddiidedddd d idddgd idd idZddddiidedddd ddidddgd idd idZddddiiddddd d id ddgd idd idZdd!dddiiddddd d iddgd id"dd id#Zdd$dddiiddddd d iddgd id"dd id#Zddddiidddd d d idd dgd iddidZdd$ddd iiddd%iid&Zdd$ddd%iiddd%iid&Zddddiid'd(diiddddd d'gd)iddd'gd*id dgd d+Zddddiiddddd d id,dd-idddgd idd id.Zdddiiddddd d id,dd-idddgd idd id/Zd0dddiiddddd d id,dd-idddgd idd id.Zddddiiddddd d1d2d3d4id dgd d Zdd5d6d7d8iddd5d9d:d;d5dd?dd@gdAdBidCZddeddd!dDiddddd d idEddgdAdBidCZ ddeddd!dFiddddd d idEddgdAdBidCZ!ddedGdd!dFiddddd d idEddgdAdBidCZ"ddedd!dDiddddd d idEddgdAdBidCZ#dHdIZ$dJdKZ%efdLdMZ&dNdOZ'dPdQZ(dRdSZ)dTdUZ*dVdWZ+dXdYZ,dZd[Z-d\d]Z.d^d_Z/d`daZ0dbdcZ1dddeZ2dfdgZ3dhdiZ4djdkZ5dldmZ6dndoZ7dpdqZ8ddsdtZ9dudvZ:dwdxZ;dydzZddZ?ddZ@ddZAddZBddZCddZDddZEdrS)ConfigDictTestrrYform1rz%(levelname)s ++ %(message)srzlogging.StreamHandlerrzext://sys.stdout)r  formatterrHr,rjrHr6)r r r6rrr.rH)r r r6loggersrzext://sys.stdboutZNTOSETZWRANINGZmisspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)()rz .formatFunc)rZform2Zform3r)rZhand2z.CustomHandlerzinvalid parameter name)r rrHr,rprF)compilerr)r rr r6rrTrl)r Z incrementalr6rZfilt1r;)r rrHr,filters)rHr)r r rr6rrzcfg://true_formatterszcfg://handler_configs[hand1])r true_formattershandler_configsr r6rr)rrr r6rrrrM! )rL terminator)r rrHr,rmySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s$)rstyle)r rHrzlogging.handlers.MemoryHandler fileGlobal)r ZcapacityrrrH)r bufferGlobalmymodulertrue)rHr6r)r r r6r)rrvalidatemy_test_logger_custom_formatter)r rrz.myCustomFormattercCstj|dSr)rrZ dictConfig)r:rr<r<r=r szConfigDictTest.apply_configcCsvtZ}||jt}|||||j dg|d| gWdn1sh0YdSrrrr<r<r=r s  zConfigDictTest.test_config0_okcCsxt\}||td}|||||jddg|d|gWdn1sj0YdSrrrr<r<r=r s   zConfigDictTest.test_config1_okcCs|t|j|jdSrrr[r<r<r=r sz#ConfigDictTest.test_config2_failurecCs|t|j|jdSr)rr rconfig2ar[r<r<r=test_config2a_failure sz$ConfigDictTest.test_config2a_failurecCs|t|j|jdSr)rr rconfig2br[r<r<r=test_config2b_failure sz$ConfigDictTest.test_config2b_failurecCs|t|j|jdSrrr[r<r<r=r sz#ConfigDictTest.test_config3_failurec Cstj}||jz tWnty<tdYn0tj d| | d| gWdn1sx0YdSr) rrrrr@rrrrrrKrIrXr:rr<r<r=r s      zConfigDictTest.test_config4_okc Cstj}||jz tWnty<tdYn0tj d| | d| gWdn1sx0YdSr) rrrconfig4ar@rrrrrrKrIrXrr<r<r=test_config4a_ok s      zConfigDictTest.test_config4a_okcCs|j|jddSrrr[r<r<r=r szConfigDictTest.test_config5_okcCs|t|j|jdSr)rr rrr[r<r<r=test_config6_failure sz#ConfigDictTest.test_config6_failurecCst^}||jtd}|||||j ddg|d| gWdn1sl0Ytt}||j td}| |j td}|||||j ddg|d| gWdn1s0YdS)Nrrrr$rrlrhrfri) rrrrrrrwr\rurXrr9rrr<r<r=r s4   (     zConfigDictTest.test_config7_okcCs$t^}||jtd}|||||j ddg|d| gWdn1sl0Yt}||j td}| |j ||||td}|||||j gd|d| gWdn1s0YdS)Nrrrr$r)rrrlrkrfrm) rrrrrrrwr\rurXrrrrr<r<r=test_config_8_ok s2   (      zConfigDictTest.test_config_8_okcCsJtv}||jtd}td}||||| ||j gd|d| gWdn1s0Yt}||j td}| |j ||||td}||||| ||j gd|d| gWdn1s<0YdSr)rrrrrrrwr\rurrXconfig8arrrr<r<r=test_config_8a_ok s2     (      z ConfigDictTest.test_config_8a_okcCst}||jtd}|||jg|d||j |||jg|d||j |||jdg|dWdn1s0YdS)Nrr$r) rrrconfig9rrrwr\rXconfig9aconfig9brr<r<r=test_config_9_ok> s     zConfigDictTest.test_config_9_okcCst}||jtd}||td}||td}||td}|||j ddg|dWdn1s0YdSNrrrzcompiler.parser.codegen)rjrerr$) rrrconfig10rrrvr\rurXrr<r<r=test_config_10_okP s       z ConfigDictTest.test_config_10_okcCs||jdSr)rconfig11r[r<r<r=test_config11_okc szConfigDictTest.test_config11_okcCs|t|j|jdSr)rr rconfig12r[r<r<r=test_config12_failuref sz$ConfigDictTest.test_config12_failurecCs|t|j|jdSr)rr rconfig13r[r<r<r=test_config13_failurei sz$ConfigDictTest.test_config13_failurecCs|t`}||jtjd}||jd||jdt d| | dWdn1sn0YdS)NrrMrZ Exclamationz Exclamation! ) rrrconfig14rrrKrLrrvr9rIr)r:rrDr<r<r=test_config14_okl s    zConfigDictTest.test_config14_okcCsdd}|Ztdd\}}t|ddd|did dgid }||||Wdn1sp0Ytjjd }| |||dS) NcSs|t|dSrrrr<r<r=rw sz0ConfigDictTest.test_config15_ok..cleanuprrrYrzlogging.FileHandler)r filenamer6r r6rr) rrrrr?rrrr6r)r:rrrrrr<r<r=test_config15_oku s"   ( zConfigDictTest.test_config15_okNc Cs|d}tjd|}||j|j}|jzt t j t j }| d| d|ftdt|}||}d}t|} | dkr|||d} || 7}| | 8} q|W|jdtjt|n"|jdtjt|0dS)NrPrg@rr )rrrlistenrrtr3r\rArZrC SOCK_STREAM settimeoutconnectr$r7rLsendr?Z stopListeningrrq) r:textZverifyrlr\rr+rWZ sentsofarleftsentr<r<r=setup_via_listener s2          z!ConfigDictTest.setup_via_listenercCst}|t|jtd}|| td}|| td}|| td}| | |j ddg|dWdn1s0YdSr) rrrjsondumpsrrrrvr\rurXrr<r<r=test_listen_config_10_ok s      z'ConfigDictTest.test_listen_config_10_okcCstd}|ttjtd}| | | | |j ddg|d| gWdn1sr0YdSr) rrrrrrrrrrwr\rurXrr<r<r=test_listen_config_1_ok s  z&ConfigDictTest.test_listen_config_1_okcCsdd}dd}td}ttj}t8}|||| | | | Wdn1sl0Y|j g|d|j ddgd d t@}||td}| | | | Wdn1s0Y|j d d g|d|j ddgd d tL}||ddd |td}| | | | Wdn1sn0Y|j ddg|d|j ddgd d dS)NcSsdSrr<stuffr<r<r= verify_fail sz6ConfigDictTest.test_listen_verify..verify_failcSs|dddS)Nrr<rr<r<r=verify_reverse sz9ConfigDictTest.test_listen_verify..verify_reverserr$rrr)rSrrrrr) rrrrrrrrrrwr\rurX)r:rrrZto_sendrr<r<r=test_listen_verify sb    ,   ,  .z!ConfigDictTest.test_listen_verifycCs|t|j|jdSr)rrr out_of_orderr[r<r<r=test_out_of_order sz ConfigDictTest.test_out_of_ordercCs\t|j}d|ddd<||tdjd}||jtj ||j j tj dS)Nz-${asctime} (${name}) ${levelname}: ${message}r rrrr) rdeepcopyrrrrr6rrrr_styleStringTemplateStyler:rrr<r<r=#test_out_of_order_with_dollar_style s   z2ConfigDictTest.test_out_of_order_with_dollar_stylecCs.||jtdjd}||jtdSNrr)rcustom_formatter_class_validaterrr6rrrr:rr<r<r=)test_custom_formatter_class_with_validate s z8ConfigDictTest.test_custom_formatter_class_with_validatecCs.||jtdjd}||jtdSr)r custom_formatter_class_validate2rrr6rrrrr<r<r=*test_custom_formatter_class_with_validate2 s z9ConfigDictTest.test_custom_formatter_class_with_validate2cCsF|j}d|ddd<||tdjd}||jtdS)Nrr rrrr) rrrrrr6rrrrr<r<r=9test_custom_formatter_class_with_validate2_with_wrong_fmt$ s   zHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmtcCs|t|j|jdSr)rrr custom_formatter_class_validate3r[r<r<r=*test_custom_formatter_class_with_validate3- sz9ConfigDictTest.test_custom_formatter_class_with_validate3cCs|t|j|jdSr)rrrcustom_formatter_with_functionr[r<r<r=,test_custom_formatter_function_with_validate0 sz;ConfigDictTest.test_custom_formatter_function_with_validatecCsdgdddddddd gd ggd d }tj|}||d d||dd||dd||dd ||dd||dd|d}||dgd|t|jd|t|jd|t|jddS)N)rYr)rbcrr)rZr)g)rDrjrlryr)oz cfg://alistp)ZatupleZalistZadictZnest1Znest2Znest3zcfg://atuple[1]rzcfg://alist[1]rzcfg://nest1[1][0]rDzcfg://nest2[1][1]z cfg://adict.dzcfg://adict[f]z cfg://nest3rYz cfg://nosuchzcfg://!zcfg://adict[2]) rrZBaseConfiguratorrKconvertpoprKeyErrorr)r:rZZbcrr<r<r=test_baseconfig3 s&   zConfigDictTest.test_baseconfigcsddlmGfdddtj}dddg}|dd gd }d d ||d idd gdd}t$}||tdWdn1s0Y|| ddS)Nr namedtuplecs*eZdZfddZfddZZS)z1ConfigDictTest.test_namedtuple..MyHandlercstj|i|||_dSr)r%r&resource)r:rr r)r*rr<r=r&N sz:ConfigDictTest.test_namedtuple..MyHandler.__init__cs$|jd|jj7_t|SN )rrtyper%rrr)r<r=rR sz6ConfigDictTest.test_namedtuple..MyHandler.emitr-r<rr)r= MyHandlerM srResourcerlabelsZmy_typer)rrrYZ myhandler)rrrlrrzsome logzsome log my_type ) collectionsrrr/rrLrrwrKrI)r:rrrrrNr<rr=test_namedtupleI s      (zConfigDictTest.test_namedtuple)N)Fr]r^r_rrrHrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr<r<r<r=rs         #         #!  !     !+  >  rc@seZdZddZddZdS) ManagerTestcsngGfdddtj}td}|t|jt|||d}|dtd| dgdS)NcseZdZdfdd ZdS)z6ManagerTest.test_manager_loggerclass..MyLoggerNcs|dSrr)r:rHrr exc_infoextraZloggedr<r=_logm sz;ManagerTest.test_manager_loggerclass..MyLogger._log)NN)r]r^r_rr<rr<r=MyLoggerl srrgzshould appear in loggedzshould not appear in logged) rLoggerManagerr TypeErrorsetLoggerClassrHrrvrK)r:rmanrr<rr=test_manager_loggerclassi s     z$ManagerTest.test_manager_loggerclasscCs,td}t}||||j|dSr)rrobjectsetLogRecordFactoryrKlogRecordFactory)r:r rUr<r<r=test_set_log_record_factoryy s  z'ManagerTest.test_set_log_record_factoryN)r]r^r_r rr<r<r<r=rh src@seZdZddZdS)ChildLoggerTestcCst}td}td}|d}|d}||td||td|d}|d}|d}||td||td|||dS) Nabczdef.ghiZxyzzuvw.xyzdefZghiabc.defz abc.def.ghi)rrgetChildrK)r:rl1l2c1c2Zc3r<r<r=test_child_loggers s       z"ChildLoggerTest.test_child_loggersN)r]r^r_rr<r<r<r=r src@s eZdZdS)DerivedLogRecordNrr<r<r<r=r src@s$eZdZddZddZddZdS)LogRecordFactoryTestcCsBGdddtj}t||t|_|j|jt|_ dS)Nc@seZdZddZddZdS)z2LogRecordFactoryTest.setUp..CheckingFiltercSs ||_dSr)r )r:r r<r<r=r& sz;LogRecordFactoryTest.setUp..CheckingFilter.__init__cSs,t|}||jur(d||jf}t|dS)Nz)Unexpected LogRecord type %s, expected %sT)rr r )r:rrlrr<r<r=r s z9LogRecordFactoryTest.setUp..CheckingFilter.filterN)r]r^r_r&rr<r<r<r=CheckingFilter sr) rrrr>rrr'rgetLogRecordFactory orig_factory)r:rr<r<r=r> s   zLogRecordFactoryTest.setUpcCs(|j|jt|t|jdSr)r'rrrrErrrr[r<r<r=rE s zLogRecordFactoryTest.tearDowncCs@|t|jj|tt|j|| dgdS)N)rrfrg) rr r'rvr\rrrrurXr[r<r<r=test_logrecord_class s  z)LogRecordFactoryTest.test_logrecord_classN)r]r^r_r>rEr r<r<r<r=r src@seZdZdZddZddZddZdd Ze e e j d d d d Z e e e j d d ddZe e e j d d ddZdS)QueueHandlerTestrcCs`t|td|_tj|j|_d|_t d|_ d|j _ |j tj |j |jdS)NrZqueF)rr>queueQueuerr6 QueueHandlerque_hdlrr;r que_loggerrr-rjr8r[r<r<r=r> s   zQueueHandlerTest.setUpcCs|jt|dSr)r%r?rrEr[r<r<r=rE s zQueueHandlerTest.tearDowncCs|j||tj|jj|j||tj|jj|}|j||j}| t |t j | |j|jj| |j|jf|dfdSr)r&rxr\rr"Empty get_nowaitrwrvr9rr LogRecordrKr;rr )r:rrBr<r<r=test_queue_handler s  z#QueueHandlerTest.test_queue_handlercCsx|}ttj}d}|j|j||d}t|j}|j ||j ||j }|||j|||jdS)Nz {name} -> {levelname}: {message})r; levelnamerr)r\rrrjrr;r1r2r%r4r&rvr"r(rKrrr)r:rr+Zlog_format_strZ formatted_msgrZ log_recordr<r<r=test_formatting s     z QueueHandlerTest.test_formatting QueueListenerz5logging.handlers.QueueListener required for this testcCstt}tj|j|}|z<|j | |j | |j | W| n | 0||jtjdd||jtjdd||jtjdd|tt}|tjtjj|j|dd}|z<|j | |j | |j | W| n | 0||jtjdd||jtjdd||jtjd d|dS) Nre)rrrrgrhT)Zrespect_handler_levelrirkrm)rrZMatcherrr6r-r"rr&rvr\rurrrr9matchesrjrfrdr?r-r)r:rlistenerr<r<r=test_queue_listener s6    z$QueueHandlerTest.test_queue_listenerc Cstj|j|j}|z ddWn<tyb}z$|}|jj| |dWYd}~n d}~00| | |j dddS)NrYrrZ Traceback)rr6r-r"r0rZeroDivisionErrorr&rr\rrrKr,rIr rm)r:r/rexcr<r<r=&test_queue_listener_with_StreamHandlers *z7QueueHandlerTest.test_queue_listener_with_StreamHandlercCsd|j|j|j|jtj|j |j}| |j d| | |jddS)Nruzque -> ERROR: error)r%r4r3r&r8r0rr6r-r"rrurrrKr,rIr )r:r/r<r<r=*test_queue_listener_with_multiple_handlerss z;QueueHandlerTest.test_queue_listener_with_multiple_handlersN)r]r^r_rHr>rEr*r,r< skipUnlessr=rr6r0r4r5r<r<r<r=r! s"    ! r!r-)patchc@sheZdZdZeddZeej j dddZ eej j dddZ ed d Z d d Zd dZdS)QueueListenerTestcCstd|}|tjtj|}||tj|}|| d| d| d| d| d| | || dS)Nztest_logger_with_id_%sonetwoZthreeZfourZfive) rrr-r.r6r$r8r-rrwrrr@r?) log_queuer?rrr/r<r<r= setup_and_log+s          zQueueListenerTest.setup_and_logrcCsJt|jD]$}t}||d||fq ||jd|jddSN%s_%srz&correct number of handled log messages)rrepeatr"r#r=r]rK call_countr:Z mock_handlerr<r<r<r=#test_handle_called_with_queue_queueCs z5QueueListenerTest.test_handle_called_with_queue_queuecCsbtt|jD]4}t}||d||f|| q| |j d|jddSr>) r*skip_if_broken_multiprocessing_synchronizerr@multiprocessingr#r=r]r?rqrKrArBr<r<r= test_handle_called_with_mp_queueKs z2QueueListenerTest.test_handle_called_with_mp_queueccs.z|VqWntjy(gYS0dSr)r(r"r')r<r<r<r=get_all_from_queueXsz$QueueListenerTest.get_all_from_queuecCstt|jD]n}t}||d||ft| |}| | gt j jjgg}|||ddd|DqdS)Nr?z&Found unexpected messages in queue: %scSs"g|]}t|tjr|jn|qSr<)rrr)r)rryr<r<r=ruszJQueueListenerTest.test_no_messages_in_queue_after_stop..)rrDrr@rEr#r=r]listrGr?rqrr6r- _sentinelrM)r:rr"rrUr<r<r=$test_no_messages_in_queue_after_stop`s z6QueueListenerTest.test_no_messages_in_queue_after_stopcCsZt}tj|}|||t| Wdn1sL0YdSr) r"r#rr6r-rrrrr task_done)r:r<r/r<r<r=test_calls_task_done_after_stopxs   z1QueueListenerTest.test_calls_task_done_after_stopN)r]r^r_r@ staticmethodr=r7r rr6r-rCrFrGrJrLr<r<r<r=r8#s    r8c@s eZdZddZeZddZdS)UTCcCstSr)ZEROr:dtr<r<r= utcoffsetsz UTC.utcoffsetcCsdS)NrNr<rPr<r<r=tznamesz UTC.tznameN)r]r^r_rRdstrSr<r<r<r=rNsrNc@s^eZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ dS) FormatterTestc Cs0dtjtjddddddddd|_i|_dS) Nzformatter.testrtoz dummy.extr{zMessage with %d %s)rZ placeholders)r;rHpathnamelinenorfuncrr )rr.rrrcommonvariantsr[r<r<r=r>s zFormatterTest.setUpNcCs,t|j}|dur"||j|t|Sr)rrZrBr[rr)r:r;resultr<r<r= get_records zFormatterTest.get_recordc OsTz|j|g|Ri|Wn2|yN}z|||jWYd}~n d}~00dSr)rrKrr)r:rrrr rrr<r<r=assert_error_messagesz"FormatterTest.assert_error_messagecCs|}td}|||dtd}|t|j|||td}| |td}| |td}| |dS)Nz${%(message)s}z${Message with 2 placeholders}z %(random)s %(asctime)sz%(asctime)-15sz%(asctime)#15s r]rr1rKrrrrusesTimer9r:rrr<r<r= test_percents     zFormatterTest.test_percentcCs|}tjddd}|||dtjddd}|t|j|tjddd}||tjddd}| |tjddd}| |tjd dd}| |dS) Nz $%{message}%${r$%Message with 2 placeholders%$z{random}z {message} {asctime}z{asctime!s:15}z {asctime:15}r`rbr<r<r= test_bracesszFormatterTest.test_bracescCs|}tjddd}|||dtjddd}|||dtjddd}|||dtjddd}|t|j|||tjd dd}| |tjd dd}| |tjddd}||tjd dd}| |dS) N ${message}rrezMessage with 2 placeholdersz$messagez$$%${message}%$$rfz ${random}z ${asctime}z$asctimez ${asctime}--r`rbr<r<r= test_dollarss$zFormatterTest.test_dollarscCstd}||jdtd}||jdtd}||jdtd}||jdtjddd}||jdtjddd}||jdtjd dd}||jd tjd dd}||jd tjd dd}||jd tjd dd}||jd tjd dd}||jd tjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jdtjddd}||jd|ttjd|ttjd|ttjd|ttjd|ttjd|ttjd|ttjd|ttjd |ttjd!|jtd"tjd#dd|jtd$tjd%dd|td&|jttjd'dd|jtd(tjd)dd|jtd*tjd+dd|jttjd,dd|jttjd-dd|jttjd.dd|jttjd/dd|jtd0tjd1dd|jtd0tjd2dd|jttjd3dd|jttjd4dd|jttjd5dd|jttjd6dd|jttjd7dd|jttjd8dd|jttjd9dd|jttjd:dd|jttjd;dd|jtddd|jtd.NoMsecFormatterNz%d/%m/%Y %H:%M:%S)r]r^r_default_msec_formatdefault_time_formatr<r<r<r=NoMsecFormattersrrprrqrrrrrsz21/04/1993 08:03:00)rr1r]rurvrrwrxryrzr|r}rKr~)r:rrrQrr<r<r=test_default_msec_format_nonesz+FormatterTest.test_default_msec_format_none)N) r]r^r_r>r]r^rcrhrjrmrorrr<r<r<r=rUs rUc@seZdZddZddZdS)TestBufferingFormattercCs dt|S)Nz[(%d)rLr:recordsr<r<r= formatHeadersz#TestBufferingFormatter.formatHeadercCs dt|S)Nz(%d)]rrr<r<r= formatFootersz#TestBufferingFormatter.formatFooterN)r]r^r_rrr<r<r<r=rsrc@s$eZdZddZddZddZdS)BufferingFormatterTestcCs"tdditddig|_dS)Nrr:r;)rrrr[r<r<r=r>s  zBufferingFormatterTest.setUpcCs2t}|d|g|d||jdS)NrZonetwo)rBufferingFormatterrKrrrlr<r<r= test_defaultsz#BufferingFormatterTest.test_defaultcCsDt}|d||jtd}t|}|d||jdS)Nz[(2)onetwo(2)]z <%(message)s>z[(2)(2)])rrKrrrr1)r:rZlfr<r<r= test_customs  z"BufferingFormatterTest.test_customN)r]r^r_r>rrr<r<r<r=rsrc@seZdZddZdS) ExceptionTestcCs|j}t}||z tdWntjdddYn0||||jd}| |j d| |j d| |j d| |j d dS) Nr?ZfailedT stack_inforz#Traceback (most recent call last): z! RuntimeError: deliberate mistakeStack (most recent call last): z,logging.exception('failed', stack_info=True))r'RecordingHandlerr8r@rrr@r?rr9exc_textrxrr)r:rrDr<r<r=r,s    zExceptionTest.test_formattingN)r]r^r_r,r<r<r<r=rsrc@seZdZddZdS)LastResortTestc Cs|j}||jtj}tj}zZtD}|d| | d| d| | dWdn1st0Ydt_t.}| dd}| | |Wdn1s0Yt*}| d| | dWdn1s0Yd|j _ dt_t*}| d| | dWdn1sV0YW||j|t_|t_n||j|t_|t_0dS)NzThis should not appearrz Final chance!zFinal chance! z-No handlers could be found for logger "root" F)r'r@r0r lastResortrJrrLrxrKrIrvremittedNoHandlerWarningr8)r:rZold_lastresortZold_raise_exceptionsrNrr<r<r=test_last_resorts:    .  .  0  2  zLastResortTest.test_last_resortN)r]r^r_rr<r<r<r=rsrc@seZdZddZddZdS) FakeHandlerc Cs$dD]}t||||||qdS)N)r+flushr?r,)setattr record_call)r: identifiercalledrr<r<r=r&szFakeHandler.__init__csfdd}|S)NcsddS)Nz{} - {})rrr<rr method_namer<r=innersz&FakeHandler.record_call..innerr<)r:rrrrr<rr=rszFakeHandler.record_callN)r]r^r_r&rr<r<r<r=rsrcs$eZdZfddZddZZS)rcs tt|j|i|g|_dSr)r%rr&r)r:r rr)r<r=r&szRecordingHandler.__init__cCs|j|dSr)rrrr<r<r=rszRecordingHandler.handle)r]r^r_r&rr.r<r<r)r=rs rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd ZZS)! ShutdownTestcs.tt|g|_tj}|ttd|dS)NrJ)r%rr>rrrJrr)r:Zraise_exceptionsr)r<r=r>szShutdownTest.setUpcsfdd}|S)Ncs dSrr<r<rur<r=r sz'ShutdownTest.raise_error..innerr<)r:rurr<rr= raise_error s zShutdownTest.raise_errorcCsbtd|j}td|j}td|j}ttjj|||g}tjt|dgd}|||jdS)NrrYr handlerList) z 2 - acquirez 2 - flushz 2 - closez 2 - releasez 1 - acquirez 1 - flushz 1 - closez 1 - releasez 0 - acquirez 0 - flushz 0 - close 0 - release) rrrWrr^r_rurHrK)r:Zhandler0Zhandler1Zhandler2r6rUr<r<r=test_no_failures   zShutdownTest.test_no_failurecCsRtd|j}t||||tj|g}tjt|d| d|jddS)Nrrrr) rrrrrr^r_rurHrK)r:rrurr6r<r<r=_test_with_failure_in_method!s  z)ShutdownTest._test_with_failure_in_methodcCs|dtdSNr+rrr[r<r<r=test_with_ioerror_in_acquire*sz)ShutdownTest.test_with_ioerror_in_acquirecCs|dtdSNrrr[r<r<r=test_with_ioerror_in_flush-sz'ShutdownTest.test_with_ioerror_in_flushcCs|dtdSNr?rr[r<r<r=test_with_ioerror_in_close0sz'ShutdownTest.test_with_ioerror_in_closecCs|dtdSrrrr[r<r<r=test_with_valueerror_in_acquire3sz,ShutdownTest.test_with_valueerror_in_acquirecCs|dtdSrrr[r<r<r=test_with_valueerror_in_flush6sz*ShutdownTest.test_with_valueerror_in_flushcCs|dtdSrrr[r<r<r=test_with_valueerror_in_close9sz*ShutdownTest.test_with_valueerror_in_closecCsdt_|dtdS)NFr+rrJr IndexErrorr[r<r<r=.test_with_other_error_in_acquire_without_raise<sz;ShutdownTest.test_with_other_error_in_acquire_without_raisecCsdt_|dtdS)NFrrr[r<r<r=,test_with_other_error_in_flush_without_raise@sz9ShutdownTest.test_with_other_error_in_flush_without_raisecCsdt_|dtdS)NFr?rr[r<r<r=,test_with_other_error_in_close_without_raiseDsz9ShutdownTest.test_with_other_error_in_close_without_raisecCsdt_|t|jdtdS)NTr+rrJrrrr[r<r<r=+test_with_other_error_in_acquire_with_raiseHs z8ShutdownTest.test_with_other_error_in_acquire_with_raisecCsdt_|t|jdtdS)NTrrr[r<r<r=)test_with_other_error_in_flush_with_raiseMs z6ShutdownTest.test_with_other_error_in_flush_with_raisecCsdt_|t|jdtdS)NTr?rr[r<r<r=)test_with_other_error_in_close_with_raiseRs z6ShutdownTest.test_with_other_error_in_close_with_raise)r]r^r_r>rrrrrrrrrrrrrrrr.r<r<r)r=rs   rc@sneZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)ModuleLevelMiscTestcCstjjj}||d|tj|td|tjjjd|ttjdGddd}|ttj|tdt|tjjjtj dS)NrSZ doesnotexistsc@s eZdZdS)z;ModuleLevelMiscTest.test_disable.._NotAnIntOrStringNrr<r<r<r=_NotAnIntOrStringgsrWARN) rrrrCrKrrrr rd)r: old_disablerr<r<r= test_disable\s    z ModuleLevelMiscTest.test_disableNcsgt|tdfddt}tj|tt|}|durN||d|n |d||t|j d|j d}|| d||dur|n tt| }||j ||gdS)N basicConfigcs||fSrr)rkwrr<r=vrz/ModuleLevelMiscTest._test_log..z test me: %rrYr) rr7rrrr8r#rKrLr getMessageupperr)r:rrH recording log_methodrZexpected_levelr<rr= _test_logss       zModuleLevelMiscTest._test_logcCs|dtjdSNrt)rrrfr[r<r<r=test_logszModuleLevelMiscTest.test_logcCs|ddSNrxrr[r<r<r= test_debugszModuleLevelMiscTest.test_debugcCs|ddSNrwrr[r<r<r= test_infoszModuleLevelMiscTest.test_infocCs|ddSNrvrr[r<r<r= test_warningsz ModuleLevelMiscTest.test_warningcCs|ddSNrurr[r<r<r= test_errorszModuleLevelMiscTest.test_errorcCs|ddSNrrr[r<r<r= test_criticalsz!ModuleLevelMiscTest.test_criticalcCs^|ttjtGdddtj}t||t|ttj|ttjdS)Nc@s eZdZdS)z;ModuleLevelMiscTest.test_set_logger_class..MyLoggerNrr<r<r<r=rsr)rr rr r rrKgetLoggerClass)r:rr<r<r=test_set_logger_classs   z)ModuleLevelMiscTest.test_set_logger_classc sgGfdddt}t|td}|dgt}t|}||z| tj | d|| d|d|d| tj| d|| dW|||ttjn |||ttj0dS)Ncs&eZdZdejffdd ZZS)z@ModuleLevelMiscTest.test_subclass_logger_cache..MyLoggerrcst||ddS)N initialized)r%r&r)r:r;rH)r*rrr<r=r&szIModuleLevelMiscTest.test_subclass_logger_cache..MyLogger.__init__)r]r^r_rrr&r.r<rrr)r=rsrZjust_some_loggerrZhellorr)rrr rrKr*r+r/r8r-r.rxrIr truncaterrlr@r?r)r:rrr,rDr<rr=test_subclass_logger_caches.            z.ModuleLevelMiscTest.test_subclass_logger_cachecCs8d}td|\}}}|}|d||d|dS)Na&if 1: import logging class A: def __del__(self): try: raise ValueError("some error") except Exception: logging.exception("exception in __del__") a = A()-czexception in __del__zValueError: some error)rrWrMr:codercouterrr<r<r=test_logging_at_shutdowns   z,ModuleLevelMiscTest.test_logging_at_shutdowncCs8d}td|\}}}|}|d|||ddS)Nzif 1: import logging def rec(): logging.error("foo") rec() rec()rz#Cannot recover from stack overflow.rY)rrWZ assertNotInrKrr<r<r=test_recursion_errors  z(ModuleLevelMiscTest.test_recursion_error)N)r]r^r_rrrrrrrrrrrrr<r<r<r=rXs  rc@s,eZdZddZddZddZddZd S) LogRecordTestcCs6ti}t|}||d||ddS)Nz )rrrr9rxr)r:rrWr<r<r= test_str_reps zLogRecordTest.test_str_repcCsjt}t}||ddi}td|||jdj|||jdj d| || dS)NZlessZmorezless is %(less)srz less is more) rrrr8rvrKrr rKrrr@r?)r:rDrrZr<r<r= test_dict_args   zLogRecordTest.test_dict_argcCsZti}||jdz*ddl}ti}||j|jWntyTYn0dS)N MainProcessr)rrrK processNamerEcurrent_processr;rS)r:rmpr<r<r=test_multiprocessings   z"LogRecordTest.test_multiprocessingcCsti}|j}||j||j||j||jtj}tj}tj }z`dt_dt_dt_ ti}|j }||j||j||j||jW|t_|t_|t_ n|t_|t_|t_ 0dS)NF) rrassertIsNotNoner threadNameprocessr logThreads logProcesseslogMultiprocessingrQ)r:rZNOT_NONEZ log_threadsZ log_processesZlog_multiprocessingNONEr<r<r= test_optionals2          zLogRecordTest.test_optionalN)r]r^r_rrrrr<r<r<r=rs  rcseZdZfddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd8d*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7ZZS)9BasicConfigTestcsVtt|tjj|_tj|_tj dd|_ tjj |_ | |jgtj_dSr)r%rr>rrr6rrrrrrHr)rrr[r)r<r=r>#s    zBasicConfigTest.setUpcs<tjjddD]}tj||qtt|dSr)rrr6r@r?r%rrErr)r<r=rE,s  zBasicConfigTest.tearDowncCsJttjd|jtjtj|j|jtj dd<tj |j dS)Nr6) rrrr6rrArBrrrr-r)r[r<r<r=r2s  zBasicConfigTest.cleanupcCst|ttjjdtjjd}||tj||jt j |j }||j j tj||j||j tj|tjj|jdS)NrYr)rrrKrLrr6rr/r,rrNrrrk BASIC_FORMATrQr PercentStylerHr))r:rrr<r<r=test_no_kwargs9s  zBasicConfigTest.test_no_kwargscCsftJ}tjtjddtdtjd|| dWdn1sX0YdS)Nrdr,r Log an errorrERROR:root:Log an error rrrrrrrurrKrIr rr<r<r=test_strformatstyleMs   z#BasicConfigTest.test_strformatstylecCsftJ}tjtjddtdtjd|| dWdn1sX0YdS)Nrrrrrrrr<r<r=test_stringtemplatestyleUs   z(BasicConfigTest.test_stringtemplatestylecCsdd}tjdd|ttjjdtjjd}||tjtdd}||jj |jj ||jj |jj | |||ddS)NcSs||t|dSrrrZh2rr<r<r=r_sz.BasicConfigTest.test_filename..cleanuptest.log)rrYrr) rrrKrLrr6rrr,moder;rr:rrrUr<r<r= test_filename]s   zBasicConfigTest.test_filenamecCsVdd}tjdddtjjd}tdd}||jj|jj||||ddS)NcSs||t|dSrrrr<r<r=rqsz.BasicConfigTest.test_filemode..cleanuprwbrfilemoder) rrrr6rrKr,rrrr<r<r= test_filemodeos   zBasicConfigTest.test_filemodecCs`t}||jtj|d|ttjj dtjj d}| |tj ||j |dS)Nr$rYr) r*r+rr?rrrKrLrr6rr/r,)r:r,rr<r<r= test_stream}s   zBasicConfigTest.test_streamcCs.tjddtjjdj}||jjddS)Nz%(asctime)s - %(message)s)rr)rrrr6rrKrrkr:rr<r<r= test_formats zBasicConfigTest.test_formatcCs,tjddtjjdj}||jddS)NrM)rr)rrrr6rrKrr r<r<r= test_datefmts zBasicConfigTest.test_datefmtcCs.tjddtjjdj}||jtjdS)Nrrer)rrrr6rrrrr r<r<r= test_styles zBasicConfigTest.test_stylecCsTtjj}|tjj|tjdd|tjjdtjdd|tjjddS)N9)rH:)rrrHrr-rrK)r: old_levelr<r<r= test_levels   zBasicConfigTest.test_levelcCsp|j}tg}tj}|ttjd|d|ttjd|d|ttj||d|ttjtjdtjddddS)Nr)rr,)rr6)r,r6)Zloglevelrr )rrr/rrNrrrl)r:rr6r,r<r<r=test_incompatibles    z!BasicConfigTest.test_incompatiblecCstttjtg}t}|d|tj|d||dtjj d||dtjj d||dtjj d| |dj | |dj ||dj |||dj |dj dS)Nr)r6rrY) rr/rrr1r4rrKrr6rr)r:r6rr<r<r= test_handlerss  zBasicConfigTest.test_handlerscCst}t}t|g}t|g}tjtj|dtdtdtd| t tj j dtjtj |ddtdtdtd| t tj j d| |d| |d dS) NrrrwrxrYT)rHr6forcezWARNING:root:warnz WARNING:root:warn INFO:root:info)r*r+rr/rrjrvrwrxrKrLrr6rlrIr )r:Z old_string_ioZ new_string_ioZ old_handlersZ new_handlersr<r<r= test_forces,         zBasicConfigTest.test_forcecCszd}tjd|ddtjd|ttjjdtjjd}||tj||j |t dW| t ddd }| }Wdn1s0Ytd||dnX| t ddd }| }Wdn1s0Ytd||d0dS) NrPrrn %(message)srrierrorsrrHrYr.The Øresund Bridge joins Copenhagen to Malmörhrrr.rKrLrr6rrrirxr?r'rRr rrr:rirrrBr<r<r= test_encodings2  * * zBasicConfigTest.test_encodingcCszd}tjd|ddtjd|ttjjdtjjd}||tj||j |t dW| t dd d }| }Wdn1s0Ytd||d nX| t dd d }| }Wdn1s0Ytd||d 0dS) NrrignorerrrYrrrPrhz*The resund Bridge joins Copenhagen to Malmrrr<r<r=test_encoding_errorss*  * * z$BasicConfigTest.test_encoding_errorscCs$zd}tjd|dtjd|ttjjdtjjd}||tj||j |||j dt dW| t dd d }|}Wdn1s0Ytd||d nX| t dd d }|}Wdn1s0Ytd||d 0dS) Nrrr)rrirrHrYrbackslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to MalmörPrhzL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)rrr.rKrLrr6rrrirrxr?r'rRr rrrr<r<r=test_encoding_errors_defaults*  * * z,BasicConfigTest.test_encoding_errors_defaultcsVzd}tjd|ddtjd|ttjjdtjjd}||tj||j || |j gfdd}||_ t d ||d dW|tdd d }|}Wdn1s0Ytd||d nZ|tdd d }|}Wdn1s00Ytd||d 0dS)NrrrrrYrcs t\}}}t|dSr)rrrr)rrrrr<r=dummy_handle_error#szEBasicConfigTest.test_encoding_errors_none..dummy_handle_errorrz:'ascii' codec can't encode character '\xd8' in position 4:rPrhr)rrr.rKrLrr6rrrirQrrFrxr9rMr?r'rRr rr)r:rirr$rrBr<rr=test_encoding_errors_nones:     * , z)BasicConfigTest.test_encoding_errors_noneNcsfgtjfdd}ttd|tt|}|durH||dn|ddifgdS)Ncs<tjj}tjdtjj|||fdS)Nd)rrrHr-rr)rrrrZold_basic_configr:r<r=my_basic_config:s  z2BasicConfigTest._test_log..my_basic_configrztest mer<)rrrr7r#rK)r:rrHr(rr<r'r=r5s  zBasicConfigTest._test_logcCs|dtjdSr)rrrjr[r<r<r=rLszBasicConfigTest.test_logcCs|ddSrrr[r<r<r=rOszBasicConfigTest.test_debugcCs|ddSrrr[r<r<r=rRszBasicConfigTest.test_infocCs|ddSrrr[r<r<r=rUszBasicConfigTest.test_warningcCs|ddSrrr[r<r<r=rXszBasicConfigTest.test_errorcCs|ddSrrr[r<r<r=r[szBasicConfigTest.test_critical)N)r]r^r_r>rErrrrrr r rrrrrrrrr!r#r%rrrrrrrr.r<r<r)r=rs6   " rcsLeZdZfddZddZddZddZd d Zd d Zd dZ Z S)LoggerAdapterTestcstt|tjddt|_tj|_|j |j| |jj |j| |jj fdd}| || tj tj|jdd|_dS)Ncstjdd<dSr)rrr<Zold_handler_listr<r=rjsz(LoggerAdapterTest.setUp..cleanuprr)r%r)r>rrrrrrr8rr@r?rursadapter)r:rr)r*r=r>`s   zLoggerAdapterTest.setUpc Csd}d}z ddWn8tyL}z |}|j||jWYd}~n d}~00|t|jjd|jjd}||jtj ||j |||j |jf||j |j ||jfdSNztesting exception: %rrYr)r2r,rrrKrLrrrrfrr rr* __traceback__r:rr3rrr<r<r=test_exceptionqs &  z LoggerAdapterTest.test_exceptionc Csz ddWn(ty4}z|}WYd}~n d}~00|jjd|d|t|jjd|jjd}||j|j||j fdS)NrYrz exc_info testr1) r2r,rrKrLrrrr*r.)r:rr3rr<r<r=test_exception_excinfos   z(LoggerAdapterTest.test_exception_excinfocCshd}|j||j|t|jjd|jjd}||jtj||j |||j |jfdS)Nzcritical test! %rrYr) r,rrrKrLrrrrdrr )r:rrr<r<r=rs zLoggerAdapterTest.test_criticalcCsD|jjjj}d|jjj_|t|jjjd|||jddS)N!rC )r,rrrCrrr isEnabledForr:rr<r<r=test_is_enabled_fors   z%LoggerAdapterTest.test_is_enabled_forcCsN||j|jjD]}|j|q||j||jdSr)r9r,r5rr6r@rrr<r<r=test_has_handlerss  z#LoggerAdapterTest.test_has_handlerscCsRGdddtj}d}||jdd}||dd}d|_|t|t||tj||j|t |jj d|jj d}||j tj||j d|||j |jf|j}||j|||jj|t}z<||_||j|||j|||jj|W||_n||_0||j|||j|||jj|dS) Nc@seZdZdZddZdS)z.LoggerAdapterTest.test_nested..AdapterAdaptercSs|jd||fSr)r)r:rrr<r<r=rsz6LoggerAdapterTest.test_nested..Adapter.processN)r]r^r_rrr<r<r<r=r8sr8zAdapters can be nested, yo.r+ZAdapterAdapterrYrzAdapter AdapterAdapter )rrsrrrKrTrtrdrrLrrrr rrKr )r:r8rr,Zadapter_adapterrZ orig_managerZ temp_managerr<r<r= test_nesteds2  zLoggerAdapterTest.test_nested) r]r^r_r>r0r1rr6r7r9r.r<r<r)r=r)_s    r)cseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"ZZS)# LoggerTestcsbtt|t|_tjdd|_|j|j| |jj |j| |jj | tj dS)NZblahr;) r%r:r>rrrrrr8rr@r?rur[r)r<r=r>szLoggerTest.setUpcCs|t|jjtdSr)rr rr-r r[r<r<r=test_set_invalid_levelsz!LoggerTest.test_set_invalid_levelc Csd}d}z ddWn8tyL}z |}|j||jWYd}~n d}~00|t|jjd|jjd}||jtj ||j |||j |jf||j |j ||jfdSr-)r2rrrrKrLrrrrfrr rr*r.r/r<r<r=r0s &  zLoggerTest.test_exceptioncCsFttdd$|t|jjddWdn1s80YdS)NrJTrq test message)r swap_attrrrr rrtr[r<r<r=!test_log_invalid_level_with_raisesz,LoggerTest.test_log_invalid_level_with_raisecCs@ttdd|jddWdn1s20YdS)NrJFrqr=)rr>rrrtr[r<r<r=test_log_invalid_level_no_raisesz*LoggerTest.test_log_invalid_level_no_raisecsPgt|tjdfdd|jjdd|td|dddS) N print_stackcs|Sr)rrI)rrrr<r=rrz=LoggerTest.test_find_caller_with_stack_info..TrrYrr)rr7r tracebackr findCallerrKrLr[r<rr= test_find_caller_with_stack_infos  z+LoggerTest.test_find_caller_with_stack_infocsdfddfddfdd}jj}||djd |dj}d7||djd |dj||dj}d7||djd |dj||dj}d7||djd |dj|dS) NrYcsjjdddS)Nrg) stacklevel)rrvr<)r: the_levelr<r= innermostsz>LoggerTest.test_find_caller_with_stacklevel..innermostcs dSrr<r<)rGr<r=rsz:LoggerTest.test_find_caller_with_stacklevel..innercs dSrr<r<)rr<r=outersz:LoggerTest.test_find_caller_with_stacklevel..outerrrGrrH test_find_caller_with_stacklevel)rrrKrQrXr7)r:rHrrXr<)rrGr:rFr=rIs,     z+LoggerTest.test_find_caller_with_stacklevelc Csd}d}d}}}}}}} t||||||||| } dt| jD]0} | di} |jt|jj|||||||| | d qPdS)N my record )rrr some valuersinfo) r_logRecordFactoryrP__dict__keysrrr makeRecord) r:r;rHrlnorr rrYrNrvr`rr<r<r=%test_make_record_with_extra_overwrites z0LoggerTest.test_make_record_with_extra_overwritec Cs\d}d}d}}}}}}} ddi} |jj|||||||| | d } |d| jdS)NrJrKZ valid_keyrLrM)rrRrMrP) r:r;rHrrSrr rrYrNrr\r<r<r=(test_make_record_with_extra_no_overwrite(sz3LoggerTest.test_make_record_with_extra_no_overwritecCs>||j|jjD]}|j|q||jdSr)r9rr5r6r@rrr<r<r=r71s zLoggerTest.test_has_handlerscCs"td}d|_||dS)Nz blah.childF)rrrrr5)r:Z child_loggerr<r<r=test_has_handlers_no_propagate8s z)LoggerTest.test_has_handlers_no_propagatecCs>|jjj}d|jj_|t|jjd|||jddS)NrC)rrrCrrrr4r5r<r<r=r6=s  zLoggerTest.test_is_enabled_forcCs`|jj}|jjj}d|j_d|jj_|t|jd||t|jjd|||jddS)NTrqrrCrY)rrrrCrrrr4)r:Z old_disabledrr<r<r=#test_is_enabled_for_disabled_loggerCs  z.LoggerTest.test_is_enabled_for_disabled_loggercCst}||tj||td||td||td||tdj||tdj||tdj||td||tdjdS)NrrrLfoo.bar)rrrKrparentZ assertIsNot)r:rr<r<r=test_root_logger_aliasesOsz#LoggerTest.test_root_logger_aliasescCs$|ttjt|ttjddS)Nsfoo)rr rranyr[r<r<r=test_invalid_names\szLoggerTest.test_invalid_namescCsNttjdD]:}dD]0}t|}t||}t|}|||qqdS)NrY)rrrLr[zbaz.bar)rr&HIGHEST_PROTOCOLrrrr'rK)r:protor;rrWZ unpickledr<r<r= test_pickling`s    zLoggerTest.test_picklingcCs6|j}td}td}|tj||tj||ji|| tj| | tj ||jtjdtj di||ji|| tj||ji|| tj||jtjdi|tj ||tj ||ji| | tj|tj ||tj ||ji||ji||ji| | tj|| tj | | tj|| tj || tjt||tj ||ji||ji||ji| | tj | | tj | | tj dS)NrrTF)r'rrr-rfrKr(_cacher9r4rr.rdrrC)r:rr%r&r<r<r= test_cachinghsH     zLoggerTest.test_caching)r]r^r_r>r<r0r?r@rDrIrUrVr7rWr6rZr^r`rcrer.r<r<r)r=r:s"      r:c@s$eZdZddZddZddZdS) BaseFileTestcCs0t|tdd\}|_t|g|_dS)Nrztest_logging-2-)rr>rrrrr?rmfiles)r:rr<r<r=r>s  zBaseFileTest.setUpcCs>|jD]}t|qtj|jr0t|jt|dSr)rgrrrrrrrE)r:rr<r<r=rEs    zBaseFileTest.tearDowncCs*|jtj|d|d|j|dS)NzLog file %r does not existr)r9rrrrgr)r:rr<r<r= assertLogFileszBaseFileTest.assertLogFileN)r]r^r_r>rErir<r<r<r=rfsrfc@seZdZddZdS)FileHandlerTestcCsxt|jtj|jdd}||j|tj |j| t i| |j| tj |j|dS)NTr)rrrrrrQr,rrrrrrr9r?)r:fhr<r<r= test_delays   zFileHandlerTest.test_delayN)r]r^r_rlr<r<r<r=rjsrjc@sLeZdZddZddZddZddZd d Zd d Ze d dZ dS)RotatingFileHandlerTestc Cstdtjdd|dddS)NrrrY)rr)r.r\r[r<r<r=next_recs z RotatingFileHandlerTest.next_reccCs^tjj|jdd}||d|tjjtjddd}||| |dS)NrmaxBytesrPrY)rirp) rr6rrrshouldRolloverr?rdevnullrnr:rhr<r<r=test_should_not_rolloversz0RotatingFileHandlerTest.test_should_not_rollovercCs2tjj|jdd}||||dS)NrYro)rr6rrr9rqrnr?rsr<r<r=test_should_rolloversz,RotatingFileHandlerTest.test_should_rollovercCs4tj|j}||||j|dSr)rr6rrrrnrir?rsr<r<r=test_file_createds z)RotatingFileHandlerTest.test_file_createdcCsdd}tjj|jddd}||_||||j|||||jd|||||jd|t j ||jd| dS) NcSs|dSN.testr<r;r<r<r=namersz>RotatingFileHandlerTest.test_rollover_filenames..namerrrY backupCountrp.1.2.3) rr6rrrzrrnrirrrrr?)r:rzrtr<r<r=test_rollover_filenamess z/RotatingFileHandlerTest.test_rollover_filenamescCsGdddtjj}||jddd}|||j|jd||||j|||||jdd| t j ||jd| dS) Nc@seZdZddZddZdS)zZRotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotatorcSs|dSrxr<)r:r;r<r<r=rzsz`RotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotator.namercSs tj|rt||ddS)N.rotated)rrrr)r:sourcedestr<r<r=rotators zbRotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotator.rotatorN)r]r^r_rzrr<r<r<r=HandlerWithNamerAndRotatorsrrrYr{ryr}r)rr6rrrKrzrrnrirrrrr?)r:rrtr<r<r=test_namer_rotator_inheritances z6RotatingFileHandlerTest.test_namer_rotator_inheritancec Csdd}dd}tjj|jddd}||_||_|}||||j|}||||jd}||t j }t |d :}| } t | } || d |j|Wdn1s0Y||||jd }||t |d :}| } t | } || d |j|Wdn1sD0Y||||jd }t |d :}| } t | } || d |j|Wdn1s0Y|t j||jd |dS) NcSs|dS)Nz.gzr<r;r<r<r=rzsz3RotatingFileHandlerTest.test_rotator..namerc Sst|dX}|}t|d}t|d}||Wdn1sJ0YWdn1sh0Yt|dS)Nrbrr)r'rRzlibcompressrCrr)rrZsfrB compresseddfr<r<r=r s    Fz5RotatingFileHandlerTest.test_rotator..rotatorrrYr{r}rrr~r)rr6rrrrzrnrrirlinesepr'rRr decompressrKrWrrrrr?) r:rzrrtZm1Zm2rnewlinerrrBr<r<r= test_rotatorsD      6   8  8z$RotatingFileHandlerTest.test_rotatorN) r]r^r_rnrurvrwrrrZ requires_zlibrr<r<r<r=rms rmc@s4eZdZddZddZddZddZd d Zd S) TimedRotatingFileHandlerTestcCsJtjjtjdddd}tdtddi}|| || dS)NSrPrY)rir|皙?rztesting - device file) rr6r rrrrrrrrqr?)r:rkrr<r<r=ru2s  z5TimedRotatingFileHandlerTest.test_should_not_rolloverc stjj|jddd}td}||tddi}||||jt dtddi}||| d }t j }d }t|D]D}|t j|d } |j| d tj}|r|jqqd |} |stj|j\} fddt| D} td|dtjdtd| tjd| D]X} td| tj| | }t|d}t|Wdn1s0Yq<|j|| ddS)NrrY)r|rtrztesting - initialrztesting - after delayFi,Zsecondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondscsg|]}|r|qSr<)rx)rrrr<r=r\rz>TimedRotatingFileHandlerTest.test_rollover..z Test time: %sz%Y-%m-%d %H-%M-%SrzThe only matching files are: %szContents of %s:rrh)rr6r rr1r4rrrirrr?rur1r timedeltastrftimerrrrgrrlistdirr!rrNrr'rRr9)r:rkrZr1Zr2foundr1GO_BACKsecsprevrZdnfilesrrZtfr<rr= test_rollover<sD             0z*TimedRotatingFileHandlerTest.test_rollovercCsR|j}|ttjj|jddd|ttjj|jddd|ttjj|jddddS)NXTrWZW7)rrrr6r r)r:rr<r<r= test_invalidfs   z)TimedRotatingFileHandlerTest.test_invalidcCsd}tddd}tjj|jdddd|d}zD||}|||d||d}|||d W|n |0dS) Nr MIDNIGHTrYTwhenintervalr|rvatTimeжi@) rurrr6r rcomputeRolloverrKr?)r: currentTimerrtrTr<r<r="test_compute_rollover_daily_attimeos  z?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimec Cs:tt}||d}tddd}t|j}tdD]}tjj|j d|ddd|d}z||krtd||}n||}|d9}|d 7}||7}| |}||krt d tj t d t |||||kr|d 7}| |d }||krt d tj t d t |||W|q:|0q:dS)NQrrzW%drYTrrzfailed in timezone: %dzlocal vars: %si: r)rHrrur|tm_wdayrrr6r rrr!timezonelocalsrKr?) r:rZtodayrZwdayZdayrtrUrTr<r<r=#test_compute_rollover_weekly_attimes:       z@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimeN)r]r^r_rurrrrr<r<r<r=r1s  * rcKstjfi|tjddS)NrYr)rur)rr<r<r=rsr)rrY)M<)Hi)Dr)rrZW0r)ZdaysZhoursc CsPtjj|j|dddd}d}||}||kr8|dkr8z|jrNt|}n t|}|d}|d}|d } tjj |d |d | } || } t d ||jft j d t d |t j d t d|t j d t d| t j d t d| t j d t d| t j d Wn.t y6t dt dt j d Yn0||||dS)NrYrT)rrr|rvgrrrrrz t: %s (%s)rzcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz result: %sz exception in diagnostic code: %s)rr6r rrrvrr| localtimeZ _MIDNIGHTr!rrNr rrKr?) r:rexprtrrTrlZ currentHourZ currentMinuteZ currentSecondrr\r<r<r=test_compute_rollovers@         rztest_compute_rollover_%sz>win32evtlog/win32evtlogutil/pywintypes required for this test.c@seZdZddZdS)NTEventLogHandlerTestc Cs d}td|}t|}ztjd}Wn<tjyf}z"|jdkrPt dWYd}~n d}~00t ddi}| || ||t|tjtjB}d}d} t||| } | D].}|jdkrqt||} | d krqd }qqd | } |j|| d dS) NZ ApplicationZ test_loggingrz#Insufficient privileges to run testrzTest Log MessageFr&zTest Log Message Tz3Record not found in event log, went back %d recordsrh) win32evtlogZ OpenEventLogZGetNumberOfEventLogRecordsrr6ZNTEventLogHandler pywintypesruwinerrorr<ZSkipTestrrr?Z assertLessZEVENTLOG_BACKWARDS_READZEVENTLOG_SEQUENTIAL_READZ ReadEventLogZ SourceNamewin32evtlogutilZSafeFormatMessager9) r:ZlogtypeZelhZnum_recsrDrrflagsrreventsrr<r<r=rs:       z NTEventLogHandlerTest.test_basicN)r]r^r_rr<r<r<r=rsrc@seZdZddZdS) MiscTestCasecCshd}tj|t|ddS)N> rrr PlaceHolder currentframerrStrFormatStyle RootLoggerFiltererrrr) blacklist)rZ check__all__r)r:rr<r<r= test__all__szMiscTestCase.test__all__N)r]r^r_rr<r<r<r=rsrcCs*tdd}|t|jddddS)NLC_ALLr)rZrun_with_locale __enter__r<ZaddModuleCleanup__exit__)cmr<r<r= setUpModules r__main__)N)rZlogging.handlersZlogging.configrorrrurr&r*rbrrr"rrFrZr$rrZtest.support.script_helperrrrgrZ test.supportrZtest.support.logging_helperrrrrr<r|r^rnZ http.serverrrrX urllib.parser r socketserverr r r rrrrrSrZTestCaserr`rZSILENTrZTERSEZEFFUSIVErrZ TALKATIVErZ CHATTERBOXZBORINGrrrrrrrrr r>r/rDrGrIrYrVrsrwrrr=rrrrr1rrrr3r6r4r5r:r<r@Z IPV6_ENABLEDrArDr[rfrurrrrrrrr)rrr!r6rEZ unittest.mockr7r8rrOZtzinforNrvrUrrrrrrrrrrrrr)r:rfrjrmrrrrrrrrrr]mainr<r<r<r=s^    mF YT,J2)/  hbY@CM41( W#i `  '  W5BlW nw ! #