
    ;e                     
   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ  e	ed          r e	ed          s ej
        d           ej        d	          Z G d
 dej                  Zedk    r ej                     dS dS )z)Tests for sys.audit and sys.addaudithook
    N)support)import_helper)	os_helperaddaudithookauditz.test only relevant when sys.audit is availablezaudit-tests.pyc                       e Zd ZdZ ej                    d             Z ej                    d             Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )	AuditTestNc                    t          j        t          j        dt          g|dt           j        t           j                  5 }|                                 t          j                            |j                   t          j	                            |j	                   |j
        r-|                     d                    |j	                             d d d            d S # 1 swxY w Y   d S )N-X utf8utf-8encodingstdoutstderr )
subprocessPopensys
executableAUDIT_TESTS_PYPIPEwaitr   
writelinesr   
returncodefailjoin)selfargsps      &/usr/lib/python3.11/test/test_audit.pydo_testzAuditTest.do_test   s   ^Y>>??	
 
 
 
	-
 FFHHHJ!!!(+++J!!!(+++| -		"''!(++,,,
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	- 
	-s   BCC#&C#c                    g }t          j        t          j        dt          g|dt           j        t           j                  5 }|                                 t          j                            |j                   |j	        d |j
        D             d                    |j                  fcd d d            S # 1 swxY w Y   d S )Nr   r   r   c                 \    g | ])}|                                                     d           *S ) )strip	partition).0lines     r    
<listcomp>z(AuditTest.run_python.<locals>.<listcomp>0   s.    BBB'',,BBB    r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   eventsr   s       r    
run_pythonzAuditTest.run_python#   s    ^Y>>??	
 
 
 	
 FFHHHJ!!!(+++BBBBB!!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A)B99B= B=c                 0    |                      d           d S )N
test_basicr!   r   s    r    r.   zAuditTest.test_basic4   s    \"""""r*   c                 0    |                      d           d S )Ntest_block_add_hookr/   r0   s    r    r2   zAuditTest.test_block_add_hook7   s    *+++++r*   c                 0    |                      d           d S )N!test_block_add_hook_baseexceptionr/   r0   s    r    r4   z+AuditTest.test_block_add_hook_baseexception:   s    899999r*   c                 X    t          j        d           |                     d           d S )Nmarshaltest_marshalr   import_moduler!   r0   s    r    r7   zAuditTest.test_marshal=   s+    #I...^$$$$$r*   c                 X    t          j        d           |                     d           d S )Npickletest_pickler8   r0   s    r    r<   zAuditTest.test_pickleB   s+    #H---]#####r*   c                 0    |                      d           d S )Ntest_monkeypatchr/   r0   s    r    r>   zAuditTest.test_monkeypatchG   s    '(((((r*   c                 F    |                      dt          j                   d S )N	test_open)r!   r   TESTFNr0   s    r    r@   zAuditTest.test_openJ   s    [)"233333r*   c                 0    |                      d           d S )Ntest_cantracer/   r0   s    r    rC   zAuditTest.test_cantraceM   s    _%%%%%r*   c                 0    |                      d           d S )N	test_mmapr/   r0   s    r    rE   zAuditTest.test_mmapP   s    [!!!!!r*   c                     |                      d          \  }}}|s|                     d|            |                     dg|           d S )Ntest_excepthookzExpected fatal exception
)zsys.excepthookr$   zRuntimeError('fatal-error'))r,   r   assertSequenceEqualr   r   r+   r   s       r    rG   zAuditTest.test_excepthookS   sh    %)__5F%G%G"
FF 	=II;6;;<<<  CDf	
 	
 	
 	
 	
r*   c                     |                      d          \  }}}|r|                     |           |                     |d         d         d           |                     |d         d         d           d S )Ntest_unraisablehookr   zsys.unraisablehook   zDRuntimeError('nonfatal-error') Exception ignored for audit hook test)r,   r   assertEqualrI   s       r    rK   zAuditTest.test_unraisablehook\   s    %)__5J%K%K"
FF 	IIf1';<<<1IaLR	
 	
 	
 	
 	
r*   c                 "   t          j        d           |                     d          \  }}}|r|                     |           |                     |d         d         d           |                     |d         d         d           |d         d         }|                     |           |                     dd	| d
g|d                    |                     dd	| dg|d                    |                     dd	|g|d                    d S )Nwinregtest_winregr   zwinreg.OpenKey   zwinreg.OpenKey/resultrL   zwinreg.EnumKeyr$   z 0z 10000   zwinreg.PyHKEY.Detach   )r   r9   r,   r   rM   
assertTruerH   )r   r   r+   r   expecteds        r    rP   zAuditTest.test_winregg   s    #H---%)__]%C%C"
FF 	IIf1'78881'>???!9Q<!!!  "2CH!I6RS9UUU  "2CH9L9L9L!MvVWyYYY  "8#x!H&QR)TTTTTr*   c                    t          j        d           |                     d          \  }}}|r|                     |           t          j        rt          |ddi |                     |d         d         d           |                     |d         d         d           |                     |d	         d         d
           |                     |d	         d	         	                    d                     d S )Nsockettest_socketsep
r   zsocket.gethostnamerQ   zsocket.__new__rL   zsocket.bindz('127.0.0.1', 8080))
r   r9   r,   r   r   verboseprintrM   rT   endswithrI   s       r    rX   zAuditTest.test_socketu   s    #H---%)__]%C%C"
FF 	IIf? 	%6$t$$$1';<<<1'78881}555q	!--.CDDEEEEEr*   c                     |                      d          \  }}}|r|                     |           t          j        rt	          |ddi |                     d |D             g d           d S )Ntest_gcrY   rZ   c                     g | ]
}|d          S r    )r'   events     r    r)   z%AuditTest.test_gc.<locals>.<listcomp>   s    ***%U1X***r*   )zgc.get_objectszgc.get_referrerszgc.get_referentsr,   r   r   r[   r\   rM   rI   s       r    r_   zAuditTest.test_gc   s    %)__Y%?%?"
FF 	IIf? 	%6$t$$$**6***FFF	
 	
 	
 	
 	
r*   c                    t          j        d           |                     d          \  }}}|r|                     |           t          j        rt          |ddi |                     |d         d         d           |                     |d         d         d           |                     |d	         d         d
           |d	         d         dk    r$|                     d|d	         d                    d S d S )Nzhttp.clienttest_http_clientrY   rZ   r   zhttp.client.connectrL   zwww.python.org 80rQ   zhttp.client.sendz[cannot send]HTTP)	r   r9   r,   r   r   r[   r\   rM   assertInrI   s       r    	test_httpzAuditTest.test_http   s    #M222%)__5G%H%H"
FF 	IIf? 	%6$t$$$1'<===1':;;;1'9:::!9Q<?**MM&&)A,///// +*r*   c                 H   t          j        d          }|                     d          \  }}}|r|                     |           t          j        rt          |ddi d |D             }ddgdz  }t          |j        d	          r|d
dgz  }| 	                    ||           d S )Nsqlite3test_sqlite3rY   rZ   c                     g | ]
}|d          S ra   rb   r'   evs     r    r)   z*AuditTest.test_sqlite3.<locals>.<listcomp>   s    )))B"Q%)))r*   zsqlite3.connectzsqlite3.connect/handlerL   enable_load_extensionzsqlite3.enable_load_extensionzsqlite3.load_extension)
r   r9   r,   r   r   r[   r\   hasattr
ConnectionrM   )r   rk   r   r+   r   actualrU   s          r    rl   zAuditTest.test_sqlite3   s    -i88%)__^%D%D"
FF 	IIf? 	%6$t$$$))&)))%'?@1D7%'>?? 	/( H 	*****r*   c                     |                      d          \  }}}|r|                     |           t          j        rt	          |ddi d |D             }dg}|                     ||           d S )Ntest_sys_getframerY   rZ   c                 .    g | ]}|d          |d         fS )r   rL   rb   rn   s     r    r)   z/AuditTest.test_sys_getframe.<locals>.<listcomp>   s$    222R2a5"Q%.222r*   )zsys._getframeru   rd   )r   r   r+   r   rs   rU   s         r    ru   zAuditTest.test_sys_getframe   s    %)__5H%I%I"
FF 	IIf? 	%6$t$$$226222:;*****r*   c                    t          j        d          }|                     d          \  }}}|r|                     |           t          j        rt          dg|R ddi |                     |ddd|j         fd	d|j	         d
fdd|j
         fdd	d|j	         dfddd|j         fddd|j         d|j         fddd|j         fdg	           d S )Nsyslogtest_syslogzEvents:rY   z
  zsyslog.openlogr$   z	python 0 zsyslog.syslogz testzsyslog.setlogmask)zsyslog.closelogr   r   z test2zaudit-tests.py 0 zaudit-tests.py zNone 0 )r   r9   r,   r   r   r[   r\   rH   LOG_USERLOG_INFO	LOG_DEBUG
LOG_NDELAY
LOG_LOCAL0)r   rx   r   r+   r   s        r    ry   zAuditTest.test_syslog   s6   ,X66%)__]%C%C"
FF 	IIf? 	2)1f111&111  %B%B%BCcfo#<#<#<= #&*:'<='cfo#=#=#=>s$I$I$IJs$]f6G$]$]&J[$]$]^s$?fo$?$?@')	
 	
 	
 	
 	
r*   c                 j    |                      d          \  }}}|r|                     |           d S d S )Ntest_not_in_gc)r,   r   )r   r   _r   s       r    r   zAuditTest.test_not_in_gc   sE     $0@ A A
Av 	IIf	 	r*   )__name__
__module____qualname__maxDiffr   requires_subprocessr!   r,   r.   r2   r4   r7   r<   r>   r@   rC   rE   rG   rK   rP   rX   r_   ri   rl   ru   ry   r   rb   r*   r    r	   r	      s       G W ""- - #"- !W ""  #" # # #, , ,: : :% % %
$ $ $
) ) )4 4 4& & &" " "
 
 
	
 	
 	
U U UF F F

 

 

0 0 0+ + +&
+ 
+ 
+
 
 
.    r*   r	   __main__)__doc__r   r   unittesttestr   test.supportr   r   rq   SkipTestfindfiler   TestCaser	   r   mainrb   r*   r    <module>r      s        



        & & & & & & " " " " " " wsN## N773+@+@ N
(
L
M
MM!!"233E E E E E! E E EP zHMOOOOO r*   