a 4dg#@sdZddlZddlZGdddZddZddZd d Zd d Zejd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zed)krdd*lmZeejd+ZeedS),zThis script contains the actual auditing tests. It should not be imported directly, but should be run by the test_audit module with arguments identifying each test. Nc@sJeZdZdZdefddZddZddZd d Ze d d Z d dZ dS)TestHookzUsed in standard hook tests to collect any logged events. Should be used in a with block to ensure that it has no impact after the test completes. NcCs |pd|_||_g|_d|_dS)NF)raise_on_eventsexc_typeseenclosed)selfrrrr,/usr/local/lib/python3.9/test/audit-tests.py__init__s zTestHook.__init__cGst||SN)sys addaudithookrarrr __enter__s zTestHook.__enter__cGs |dSr )closerrrr __exit__szTestHook.__exit__cCs d|_dS)NT)rrrrr r szTestHook.closecCsdd|jDS)NcSsg|] }|dqS)rr.0irrr %z(TestHook.seen_events..)rrrrr seen_events#szTestHook.seen_eventscCs6|jr dS|j||f||jvr2|d|dS)Nz saw event )rrappendrr)reventargsrrr __call__'s  zTestHook.__call__) __name__ __module__ __qualname____doc__ RuntimeErrorr rrrpropertyrrrrrr r s rcCs||krt|d|dS)N should equal AssertionErrorxyrrr assertEqual0sr*cCs||vrt|d|dS)Nz should be in r%elZseriesrrr assertIn5sr-cCs||vrt|d|dS)Nz should not be in r%r+rrr assertNotIn:sr.cCsPt|t|kr"t|d|tddt||DrLt|d|dS)Nr$css|]\}}||kVqdSr r)rZixZiyrrr Brz&assertSequenceEqual..)lenr&anyzipr'rrr assertSequenceEqual?sr3c cspzdVdsJd|WnNtyj}z6t|tr8t||usVJ|d|WYd}~n d}~00dS)NFz expected z should be ) BaseException isinstancer&type)Zex_typeexrrr assertRaisesFs r8cCsbtH}tddddt|jdddt|jdddWdn1sT0YdS)N test_eventr)r:r;r<)rr auditr*rhookrrr test_basicQsr@c CsvtddX}t2}tdtd|jtd|jWdn1sJ0YWdn1sh0YdS)Nsys.addaudithookrr9)rr r=r-rr.Zhook1Zhook2rrr test_block_add_hookXs    rDc Cs~ttbtdtd6}t}Wdn1s40YWdn1sR0YWdn1sp0YdS)NrA)rr)r8r4rrCrrr !test_block_add_hook_baseexceptionbs rEc Csddl}Gddd}||}|d}td||tddL}tt||Wdn1sp0Y||Wdn1s0YdS)Nrc@seZdZddZdS)z test_pickle..PicklePrintcSstdfS)N)Pwned!)str)rprrr __reduce_ex__qsz.test_pickle..PicklePrint.__reduce_ex__N)rrr rIrrrr PicklePrintpsrJ)rbcr:r;r<rFzpickle.find_classrB)pickledumpsr*loadsrr8r")rMrJZ payload_1Z payload_2r?rrr test_picklems    (rPcCsGddd}Gddd}Gddd|}|}tF}d|_|f|_tjd||f|j|_d |_||_Wdn1s0Yd d |j D}t |d f|df|df|d fg|dS)Nc@s eZdZdS)ztest_monkeypatch..ANrrr rrrr AsrRc@s eZdZdS)ztest_monkeypatch..BNrQrrrr BsrSc@s eZdZdS)ztest_monkeypatch..CNrQrrrr CsrTX __bases__{cSs(g|] \}}|dkr|d|dfqS)zobject.__setattr__rr:rrerrrr rrz$test_monkeypatch..r __class__) rrrVr6__dict____set__r Znew_attrrZrr3)rRrSrTrr?actualrrr test_monkeypatchs$r^cCsbzddl}|j}Wnty,d}Yn0tdhd}ttjddfttjdftddfttjdd d dddd d d f |tjdffD]>^}}|sqt t ||Wdq1s0YqWdn1s0Ydd|j D}dd|j D}t ddtjddftjdfdtjdd f|rFtjddfndfD|t g|dS)NropenrBr;rrbr<wbwFcWsdS)Nr:r)rrrr rztest_open..cSs0g|](\}}|dkr|dr|d|dfqS)r_r:rrrXrrr rrztest_open..cSs0g|](\}}|dkr|ds|d|dfqS)r_r:rr;rrXrrr rrcSsg|]}|dur|qSr rrrrr rs)r<rc) sslZcreate_default_contextload_dh_params ImportErrorrr_r argv executabler8r"rr3)rfrgr?fnrZ actual_modeZ actual_flagrrr test_opens<     F   rlc sgfdd}t|}zltH}tdd|_tdd|_tdd|_td d |_Wdn1sp0YWt|n t|0td gd dS) Ncs|jtjjkr|dSr )f_coderr__code__r)framerrZtracedrr tracesztest_cantrace..trace1F2T3r:4rcall)r settracerevalZ __cantrace__r3)rqoldr?rrpr test_cantraces  &r{cCsZddl}t8}|ddt|jdddddWdn1sL0YdS)Nrrdr:r;)rdr|)mmaprr*r)r}r?rrr test_mmaps r~cs0ddfdd}t|t_tddS)NcSs|turt|||dSr )r"r __excepthook__)r exc_valueexc_tbrrr excepthooksz#test_excepthook..excepthookcsr|dkrnt|d|ds8td|dd|dd|dkr\td|dd t|t|ddS) Nzsys.excepthookr;r:zExpected isinstance(z, )r Expected  == )r5 TypeError ValueErrorprintreprrrrrr r?s  ztest_excepthook..hookz fatal-error)r r rr"r>rrr test_excepthooks   rcsDddlm}ddfdd}t|t_|tddddS) Nr)write_unraisable_exccSsdSr r)Zhookargsrrr unraisablehook sz+test_unraisablehook..unraisablehookcsL|dkrH|dkr,td|ddt|t|dj|djdS)Nzsys.unraisablehookrrrr:)rrrrerr_msgrrrr r?s z!test_unraisablehook..hookznonfatal-errorzfor audit hook test)Z _testcapirr r rr")rr?rrr test_unraisablehooks    rcCs|ddlm}m}m}m}dd}t|||d}||dz||dWnty^Yn 0td| }||dS)Nr)OpenKeyEnumKeyCloseKeyHKEY_LOCAL_MACHINEcSs"|dsdSt|g|RdS)Nzwinreg. startswithrrrrr r?s ztest_winreg..hookZSoftwarei'z%Expected EnumKey(HKLM, 10000) to fail) winregrrrrr r OSErrorr"Detach)rrrrr?kZkvrrr test_winregs    rcCspddl}dd}t||||j|j}z.z|dWntyTYn0W|n |0dS)NrcSs|drt|g|RdS)Nzsocket.rrrrr r?3s ztest_socket..hook)z 127.0.0.1i) socketr r gethostnameAF_INET SOCK_STREAMbind Exceptionr)rr?sockrrr test_socket0s  rcCsJddl}dd}t||jddt}|g}||||dS)NrcSs|drt|g|RdS)Nzgc.rrrrr r?Is ztest_gc..hookr:)Z generation)gcr r Z get_objectsobjectZ get_referrersZ get_referents)rr?r(r)rrr test_gcFs   r__main__)suppress_msvcrt_assertsr:)r! contextlibr rr*r-r.r3contextmanagerr8r@rDrErPr^rlr{r~rrrrrrZ test.supportrritestglobalsrrrr s6$    +!