
    daf$                        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                           yy)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 Zd Zd Zd Zd Zy)	AuditTestNc                    t        j                  t        j                  dt        g|dt         j
                  t         j
                        5 }|j                          t        j                  j                  |j                         t        j                  j                  |j                         |j                  r*| j                  dj                  |j                               d d d        y # 1 sw Y   y xY w)N-X utf8utf-8encodingstdoutstderr )
subprocessPopensys
executableAUDIT_TESTS_PYPIPEwaitr   
writelinesr   
returncodefailjoin)selfargsps      */root/Python-3.12.4/Lib/test/test_audit.pydo_testzAuditTest.do_test   s    ^^Y>>????	
 
	-
 FFHJJ!!!((+JJ!!!((+||		"''!((+,
	- 
	- 
	-s   BC//C8c                     g }t        j                  t        j                  dt        g|dt         j
                  t         j
                        5 }|j                          t        j                  j                  |j                         |j                  |j                  D cg c]!  }|j                         j                  d      # c}dj                  |j                        fcd d d        S c c}w # 1 sw Y   y xY w)Nr   r   r    r   )r   r   r   r   r   r   r   r   r   r   r   strip	partitionr   )r   r   eventsr   lines        r    
run_pythonzAuditTest.run_python#   s    ^^Y>>????	
 	
 FFHJJ!!!((+9:B'',B!	 	 C	 	s   AC4"&C/C4/C44C=c                 &    | j                  d       y )N
test_basicr!   r   s    r    r*   zAuditTest.test_basic4   s    \"    c                 &    | j                  d       y )Ntest_block_add_hookr+   r,   s    r    r/   zAuditTest.test_block_add_hook7   s    *+r-   c                 &    | j                  d       y )N!test_block_add_hook_baseexceptionr+   r,   s    r    r1   z+AuditTest.test_block_add_hook_baseexception:   s    89r-   c                 P    t        j                  d       | j                  d       y )Nmarshaltest_marshalr   import_moduler!   r,   s    r    r4   zAuditTest.test_marshal=   s    ##I.^$r-   c                 P    t        j                  d       | j                  d       y )Npickletest_pickler5   r,   s    r    r9   zAuditTest.test_pickleB   s    ##H-]#r-   c                 &    | j                  d       y )Ntest_monkeypatchr+   r,   s    r    r;   zAuditTest.test_monkeypatchG   s    '(r-   c                 D    | j                  dt        j                         y )N	test_open)r!   r   TESTFNr,   s    r    r=   zAuditTest.test_openJ   s    [)"2"23r-   c                 &    | j                  d       y )Ntest_cantracer+   r,   s    r    r@   zAuditTest.test_cantraceM   s    _%r-   c                 &    | j                  d       y )N	test_mmapr+   r,   s    r    rB   zAuditTest.test_mmapP   s    [!r-   c                     | j                  d      \  }}}|s| j                  d|        | j                  dg|       y )Ntest_excepthookzExpected fatal exception
)zsys.excepthookr#   zRuntimeError('fatal-error'))r(   r   assertSequenceEqualr   r   r&   r   s       r    rD   zAuditTest.test_excepthookS   sE    %)__5F%G"
FFII26(;<  CDf	
r-   c                     | j                  d      \  }}}|r| j                  |       | j                  |d   d   d       | j                  |d   d   d       y )Ntest_unraisablehookr   zsys.unraisablehook   zDRuntimeError('nonfatal-error') Exception ignored for audit hook test)r(   r   assertEqualrF   s       r    rH   zAuditTest.test_unraisablehook\   s\    %)__5J%K"
FFIIf1';<1IaLR	
r-   c                    t        j                  d       | j                  d      \  }}}|r| j                  |       | j	                  |d   d   d       | j	                  |d   d   d       |d   d   }| j                  |       | j                  dd	| d
g|d          | j                  dd	| dg|d          | j                  dd	|g|d          y )Nwinregtest_winregr   zwinreg.OpenKey   zwinreg.OpenKey/resultrI   zwinreg.EnumKeyr#   z 0z 10000   zwinreg.PyHKEY.Detach   )r   r6   r(   r   rJ   
assertTruerE   )r   r   r&   r   expecteds        r    rM   zAuditTest.test_winregg   s    ##H-%)__]%C"
FFIIf1'781'>?!9Q<!  "2CH:R!I6RS9U  "2CH:V9L!MvVWyY  "8#x!H&QR)Tr-   c                    t        j                  d       | j                  d      \  }}}|r| j                  |       t        j
                  rt        |ddi | j                  |d   d   d       | j                  |d   d   d       | j                  |d	   d   d
       | j                  |d	   d	   j                  d             y )Nsockettest_socketsep
r   zsocket.gethostnamerN   zsocket.__new__rI   zsocket.bindz('127.0.0.1', 8080))
r   r6   r(   r   r   verboseprintrJ   rQ   endswithrF   s       r    rU   zAuditTest.test_socketu   s    ##H-%)__]%C"
FFIIf??6$t$1';<1'781}5q	!--.CDEr-   c                     | j                  d      \  }}}|r| j                  |       t        j                  rt	        |ddi | j                  |D cg c]  }|d   	 c}g d       y c c}w )Ntest_gcrV   rW   r   )zgc.get_objectszgc.get_referrerszgc.get_referentsr(   r   r   rX   rY   rJ   )r   r   r&   r   events        r    r\   zAuditTest.test_gc   s`    %)__Y%?"
FFIIf??6$t$#)*%U1X*F	
*s   A*c                    t        j                  d       | j                  d      \  }}}|r| j                  |       t        j
                  rt        |ddi | j                  |d   d   d       | j                  |d   d   d       | j                  |d	   d   d
       |d	   d   dk7  r| j                  d|d	   d          y y )Nzhttp.clienttest_http_clientrV   rW   r   zhttp.client.connectrI   zwww.python.org 80rN   zhttp.client.sendz[cannot send]HTTP)	r   r6   r(   r   r   rX   rY   rJ   assertInrF   s       r    	test_httpzAuditTest.test_http   s    ##M2%)__5G%H"
FFIIf??6$t$1'<=1':;1'9:!9Q<?*MM&&)A,/ +r-   c                 N   t        j                  d      }| j                  d      \  }}}|r| j                  |       t        j
                  rt        |ddi |D cg c]  }|d   	 }}ddgdz  }t        |j                  d	      r|d
dgz  }| j                  ||       y c c}w )Nsqlite3test_sqlite3rV   rW   r   zsqlite3.connectzsqlite3.connect/handlerI   enable_load_extensionzsqlite3.enable_load_extensionzsqlite3.load_extension)
r   r6   r(   r   r   rX   rY   hasattr
ConnectionrJ   )r   re   r   r&   r   evactualrR   s           r    rf   zAuditTest.test_sqlite3   s    --i8%)__^%D"
FFIIf??6$t$"()B"Q%))%'?@1D7%%'>?/( H 	* *s   B"c                     | j                  d      \  }}}|r| j                  |       t        j                  rt	        |ddi |D cg c]  }|d   |d   f }}dg}| j                  ||       y c c}w )Ntest_sys_getframerV   rW   r   rI   )zsys._getframerm   r]   r   r   r&   r   rj   rk   rR   s          r    rm   zAuditTest.test_sys_getframe   sw    %)__5H%I"
FFIIf??6$t$+12R2a5"Q%.22:;* 3   A1c                     | j                  d      \  }}}|r| j                  |       t        j                  rt	        |ddi |D cg c]  }|d   |d   f }}dg}| j                  ||       y c c}w )Ntest_sys_getframemodulenamerV   rW   r   rI   )zsys._getframemodulename0r]   rn   s          r    rq   z%AuditTest.test_sys_getframemodulename   sw    %)__5R%S"
FFIIf??6$t$+12R2a5"Q%.2245* 3ro   c                     | j                  d      \  }}}|r| j                  |       t        j                  rt	        |ddi |D cg c]  }|d   |d   f }}ddg}| j                  ||       y c c}w )Ntest_threadingrV   rW   r   rI   )z_thread.start_new_threadz(<test_func>, (), None))ztest.test_funcz()r]   rn   s          r    rt   zAuditTest.test_threading   s~    %)__5E%F"
FFIIf??6$t$+12R2a5"Q%.22C$

 	* 3s   A2c                    t        j                  d       | j                  d      \  }}}|r| j                  |       t        j
                  rt        |ddi |D cg c]  }|d   |d   f }}dg}| j                  ||       y c c}w )N_wmitest_wmi_exec_queryrV   rW   r   rI   )z_wmi.exec_queryz#SELECT * FROM Win32_OperatingSystemr   r6   r(   r   r   rX   rY   rJ   rn   s          r    rw   zAuditTest.test_wmi_exec_query   s    ##F+%)__5J%K"
FFIIf??6$t$+12R2a5"Q%.22NO* 3s   Bc                    t        j                  d      }| j                  d      \  }}}|r| j                  |       t        j
                  rt        dg|ddi | j                  |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	       y )Nsyslogtest_syslogzEvents:rV   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   r6   r(   r   r   rX   rY   rE   LOG_USERLOG_INFO	LOG_DEBUG
LOG_NDELAY
LOG_LOCAL0)r   rz   r   r&   r   s        r    r{   zAuditTest.test_syslog   s   ,,X6%)__]%C"
FFIIf??)1f1&1  y0A%BCcfoo%6e#<= #&*:*:);='cfoo%6f#=>s&77H$IJsof6G6G5H&J[J[I\$]^sgfoo->$?@')	
r-   c                 V    | j                  d      \  }}}|r| j                  |       y y )Ntest_not_in_gc)r(   r   )r   r   _r   s       r    r   zAuditTest.test_not_in_gc   s,     $0@ A
AvIIf r-   c                     | j                  d      \  }}}|r| j                  |       t        j                  rt	        |ddi |D cg c]  }|d   |d   f }}dg}| j                  ||       y c c}w )N%test_sys_monitoring_register_callbackrV   rW   r   rI   )z sys.monitoring.register_callbackz(None,)r]   rn   s          r    r   z/AuditTest.test_sys_monitoring_register_callback  sw    %)__5\%]"
FFIIf??6$t$+12R2a5"Q%.22CD* 3ro   c                 (   t        j                  d      }d}| j                  d|      \  }}}|r| j                  |       t        j
                  rt        |ddi |D cg c]  }|d   |d   f }}dd	|d
fg}| j                  ||       y c c}w )N_winapiz+\\.\pipe\LOCAL\test_winapi_createnamed_pipetest_winapi_createnamedpiperV   rW   r   rI   z_winapi.CreateNamedPipe(z, 3, 8)rx   )	r   winapi	pipe_namer   r&   r   rj   rk   rR   s	            r    r   z%AuditTest.test_winapi_createnamedpipe  s    ,,Y7B	%)__5RT]%^"
FFIIf??6$t$+12R2a5"Q%.22.!I=0HIJ* 3s    B) __name__
__module____qualname__maxDiffr   requires_subprocessr!   r(   r*   r/   r1   r4   r9   r;   r=   r@   rB   rD   rH   rM   rU   r\   rc   rf   rm   rq   rt   rw   r{   r   r   r    r-   r    r	   r	      s    G W  "- #- !W  " # #,:%
$
)4&"
	
UF

0+&
+
++ +
.
++r-   r	   __main__)__doc__r   r   unittesttestr   test.supportr   r   rh   SkipTestfindfiler   TestCaser	   r   mainr   r-   r    <module>r      s     
   & " sN#73+@
(

L
MM!!!"23K+!! K+Z zHMMO r-   