o
    GXhi-                     @   s  	 d dl Z d dlZd dlZG dd dZdd Zdd Zdd	 Zd
d Ze jdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zed2krd d3lmZ e  ejd4 Z e! e    dS dS )5    Nc                   @   sH   e Zd Z	 defddZdd Zdd Zdd	 Zed
d Z	dd Z
dS )TestHookNc                 C   s    |pd| _ || _g | _d| _d S )N F)raise_on_eventsexc_typeseenclosed)selfr   r   r   r   :/opt/python-3.10.19/usr/lib/python3.10/test/audit-tests.py__init__   s   

zTestHook.__init__c                 G   s   t |  | S N)sysaddaudithookr   ar   r   r	   	__enter__   s   
zTestHook.__enter__c                 G   s   |    d S r   )closer   r   r   r	   __exit__   s   zTestHook.__exit__c                 C   s
   d| _ d S )NT)r   r   r   r   r	   r   !   s   
zTestHook.closec                 C   s   dd | j D S )Nc                 S   s   g | ]}|d  qS )r   r   .0ir   r   r	   
<listcomp>&   s    z(TestHook.seen_events.<locals>.<listcomp>)r   r   r   r   r	   seen_events$   s   zTestHook.seen_eventsc                 C   s6   | j rd S | j||f || jv r| d| d S )Nz
saw event )r   r   appendr   r   )r   eventargsr   r   r	   __call__(   s   
zTestHook.__call__)__name__
__module____qualname__RuntimeErrorr
   r   r   r   propertyr   r   r   r   r   r	   r      s    
r   c                 C   s   | |krt | d|d S )N should equal AssertionErrorxyr   r   r	   assertEqual1      r(   c                 C   s   | |vrt | d|d S )Nz should be in r#   elZseriesr   r   r	   assertIn6   r)   r,   c                 C   s   | |v rt | d|d S )Nz should not be in r#   r*   r   r   r	   assertNotIn;   r)   r-   c                 C   sP   t | t |krt| d|tdd t| |D r&t| d|d S )Nr"   c                 s   s    | ]	\}}||kV  qd S r   r   )r   ZixZiyr   r   r	   	<genexpr>C   s    z&assertSequenceEqual.<locals>.<genexpr>)lenr$   anyzipr%   r   r   r	   assertSequenceEqual@   s
   r2   c              
   c   sB    zd V  W d S  t y  } zt|tr W Y d }~d S d }~ww r   )BaseException
isinstancer$   )Zex_typeexr   r   r	   assertRaisesG   s   
r6   c                  C   sd   t  %} tdddd t| jd d d t| jd d d W d    d S 1 s+w   Y  d S )N
test_event         r   )r8   r9   r:   )r   r   auditr(   r   hookr   r   r	   
test_basicR   s
   "r>   c               	   C   s   t dd5} t  }td td| j td|j W d    n1 s%w   Y  W d    d S W d    d S 1 s=w   Y  d S )Nsys.addaudithookr   r7   )r   r   r;   r,   r   r-   Zhook1Zhook2r   r   r	   test_block_add_hookY   s   
"rB   c               
   C   s   t t: tdtd} t }W d    n1 sw   Y  W d    n1 s)w   Y  W d    d S W d    d S 1 sAw   Y  d S )Nr?   )r   r   )r6   r3   r   rA   r   r   r	   !test_block_add_hook_baseexceptionc   s   
"rC   c               
   C   s@  dd l } d}| |}t Y}t|| | | z?tdd}| || W d    n1 s1w   Y  tdd}t|| | W d    n1 sNw   Y  W t	d nt	d w W d    n1 sjw   Y  dd |j
D }t||| jfgd  d	d |j
D }t||g d
d |j
D }t|dg d S )Nr   r   bcr8   r9   r:   ztest-marshal.binwbrbc                 S   (   g | ]\}}|d kr|d |d fqS )zmarshal.dumpsr   r8   r   r   er   r   r   r	   r   ~      ( z test_marshal.<locals>.<listcomp>r9   c                 S   s    g | ]\}}|d kr|d qS )zmarshal.loadsr   r   rJ   r   r   r	   r      s     c                 S   s   g | ]
\}}|d kr|qS )marshal.loadr   rJ   r   r   r	   r      s    rM   )marshaldumpsr   r(   loadsopendumploadosunlinkr   r2   version)rN   opayloadr=   factualr   r   r	   test_marshaln   s*   
r[   c               	   C   s   dd l } G dd d}| | }| d}td| | tdd'}tt | | W d    n1 s8w   Y  | | W d    d S 1 sMw   Y  d S )Nr   c                   @   s   e Zd Zdd ZdS )z test_pickle.<locals>.PicklePrintc                 S   s   t dfS )N)Pwned!)str)r   pr   r   r	   __reduce_ex__   s   z.test_pickle.<locals>.PicklePrint.__reduce_ex__N)r   r   r   r_   r   r   r   r	   PicklePrint   s    r`   rD   r\   zpickle.find_classr@   )picklerO   r(   rP   r   r6   r    )ra   r`   Z	payload_1Z	payload_2r=   r   r   r	   test_pickle   s   

"rb   c                  C   s   G dd d} G dd d}G dd d| }|  }t  #}d|_|f|_tjd ||f |j|_d	|_||_W d    n1 sBw   Y  d
d |j	D }t
|df|df|df|dfg| d S )Nc                   @      e Zd ZdS )ztest_monkeypatch.<locals>.ANr   r   r   r   r   r   r	   A       re   c                   @   rc   )ztest_monkeypatch.<locals>.BNrd   r   r   r   r	   B   rf   rg   c                   @   rc   )ztest_monkeypatch.<locals>.CNrd   r   r   r   r	   C   rf   rh   X	__bases__{   c                 S   rI   )zobject.__setattr__r   r8   r   rJ   r   r   r	   r      rL   z$test_monkeypatch.<locals>.<listcomp>r   	__class__)r   r   rj   type__dict____set__r
   Znew_attrrl   r   r2   )re   rg   rh   r   r=   rZ   r   r   r	   test_monkeypatch   s    rp   c                  C   s`  zdd l } |  j}W n ty   d }Y nw tdhdO}ttjd dfttjdftddfttjd d	d
d d d ddd f	|tjd ffD ]^}}|sLqEt	t
 ||  W d    n1 s_w   Y  qEW d    n1 sow   Y  dd |jD }dd |jD }tdd tjd dftjdfdtjd d	f|rtjd dfnd fD | tg | d S )Nr   rQ   r@   r9   rrH   r:   rG   wFc                  W   s   dS )Nr8   r   r   r   r   r	   <lambda>       ztest_open.<locals>.<lambda>c                 S   s0   g | ]\}}|d kr|d r|d |d fqS )rQ   r8   r   r   rJ   r   r   r	   r         0 ztest_open.<locals>.<listcomp>c                 S   s0   g | ]\}}|d kr|d s|d |d fqS )rQ   r8   r   r9   r   rJ   r   r   r	   r      rw   c                 S   s   g | ]}|d ur|qS r   r   r   r   r   r	   r      s
    )r:   rr   )sslZcreate_default_contextload_dh_paramsImportErrorr   rQ   r   argv
executabler6   r    r   r2   )rx   ry   r=   fnr   Zactual_modeZactual_flagr   r   r	   	test_open   sF   


r~   c               	      s   g   fdd} t | }z6t $}td d|_td d|_td d|_td	 d
|_W d    n1 s8w   Y  W t | nt | w tdgd   d S )Nc                    s    | j tjjkr | d S d S r   )f_coder   r   __code__r   )framer   r   Ztracedr   r	   trace   s   ztest_cantrace.<locals>.trace1F2T3r8   4r   call   )r   settracer   evalZ__cantrace__r2   )r   oldr=   r   r   r	   test_cantrace   s"   
r   c                  C   s\   dd l } t }|  dd t|jd d d d d W d    d S 1 s'w   Y  d S )Nr   rs      r8   r9   )rs   r   )mmapr   r(   r   )r   r=   r   r   r	   	test_mmap	  s
   "r   c                     s,   dd   fdd} t |   t _td)Nc                 S   s   | t urt| || d S d S r   )r    r   __excepthook__)r   	exc_valueexc_tbr   r   r	   
excepthook  r)   z#test_excepthook.<locals>.excepthookc                    sv   | dkr9t |d |d std|d d|d d|d  kr.td|d  d	  t| t|d  d S d S )
Nzsys.excepthookr9   r8   zExpected isinstance(z, )r   	Expected  == )r4   	TypeError
ValueErrorprintreprr   r   r   r   r	   r=     s   ztest_excepthook.<locals>.hookzfatal-error)r   r   r   r    r<   r   r   r	   test_excepthook  s
   
r   c                     sD   ddl m}  dd   fdd}t|  t_| tddd  d S )	Nr   )write_unraisable_excc                 S      d S r   r   )Zhookargsr   r   r	   unraisablehook&  s   z+test_unraisablehook.<locals>.unraisablehookc                    sP   | dkr&|d  krt d|d  d  t| t|d j|d j d S d S )Nzsys.unraisablehookr   r   r   r8   )r   r   r   r   err_msgr   r   r   r	   r=   )  s
    z!test_unraisablehook.<locals>.hookznonfatal-errorzfor audit hook test)Z	_testcapir   r   r   r   r    )r   r=   r   r   r	   test_unraisablehook#  s   
r   c                  C   sz   ddl m} m}m}m} dd }t| | |d}||d z
||d W td ty2   Y nw |	 }|| d S )Nr   )OpenKeyEnumKeyCloseKeyHKEY_LOCAL_MACHINEc                 S   s"   |  dsd S t| g|R   d S )Nzwinreg.
startswithr   r   r   r   r	   r=   7  s   
ztest_winreg.<locals>.hookZSoftwarei'  z%Expected EnumKey(HKLM, 10000) to fail)
winregr   r   r   r   r   r   OSErrorr    Detach)r   r   r   r   r=   kZkvr   r   r	   test_winreg4  s   


r   c                  C   s|   dd l } dd }t| |   |  | j| j}zz|d W n	 ty*   Y nw W |  d S W |  d S |  w )Nr   c                 S   "   |  drt| g|R   d S d S )Nzsocket.r   r   r   r   r	   r=   N     
ztest_socket.<locals>.hook)z	127.0.0.1i  )	socketr   r   gethostnameAF_INETSOCK_STREAMbind	Exceptionr   )r   r=   sockr   r   r	   test_socketK  s   
r   c                  C   sJ   dd l } dd }t| | jdd t }|g}| | | | d S )Nr   c                 S   r   )Nzgc.r   r   r   r   r	   r=   d  r   ztest_gc.<locals>.hookr8   )Z
generation)gcr   r   get_objectsobjectZget_referrersZget_referents)r   r=   r&   r'   r   r   r	   test_gca  s   

r   c                  C   s|   dd l } dd }t| | jd}z%z|dd W n ty*   tdd Y nw W |  d S W |  d S |  w )	Nr   c                 S   s*   |  drt| g|dd  R   d S d S )Nzhttp.client.r8   r   r   r   r   r	   r=   v  s   
ztest_http_client.<locals>.hookzwww.python.orgGET/zhttp.client.sendz[cannot send])	Zhttp.clientr   r   clientZHTTPConnectionZrequestr   r   r   )httpr=   connr   r   r	   test_http_clients  s   
r   c                  C   st   dd l } dd }t| | d}| d}t| jdr8|d z
|d W t	d | jy7   Y d S w d S )	Nr   c                 W   r   )Nzsqlite3.r   r   r   r   r	   r=     r   ztest_sqlite3.<locals>.hookz:memory:enable_load_extensionFtestz'Expected sqlite3.load_extension to fail)
sqlite3r   r   connect
Connectionhasattrr   Zload_extensionZOperationalErrorr    )r   r=   Zcx1Zcx2r   r   r	   test_sqlite3  s   



r   c                  C   sx   dd l } dd }t| | d |  d | | j |   |  d | j| j| jd d t_	|   |   d S )Nr   c                 S   r   )Nzsyslog.r   r   r   r   r	   r=     r   ztest_syslog.<locals>.hookZpythonr   Ztest2)Z	logoptionZfacility)
syslogr   r   ZopenlogZ
setlogmaskZ	LOG_DEBUGZcloselogZ
LOG_NDELAYZ
LOG_LOCAL0r{   )r   r=   r   r   r	   test_syslog  s   



r   c                  C   s6   dd l } dd }t| |  D ]}t|trqd S )Nr   c                  W   r   r   r   rt   r   r   r	   ru     rv   z test_not_in_gc.<locals>.<lambda>)r   r   r   r   r4   list)r   r=   rW   r   r   r	   test_not_in_gc  s   

r   __main__)suppress_msvcrt_assertsr8   )"
contextlibrT   r   r   r(   r,   r-   r2   contextmanagerr6   r>   rB   rC   r[   rb   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   Ztest.supportr   r{   r   globalsr   r   r   r	   <module>   sF    $


 +!
