o
    ˜»áfVe  ã                   @   sè   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
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 d dlmZ d dlmZ d dlmZ ejZG dd	„ d	ejƒZed
krre ¡  dS dS )é    N)Úsupport)Úimport_helper)Ú	os_helper)Úscript_helper)Úsocket_helper)Úwarnings_helperc                   @   sê  e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	e
 d¡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e
 eed&ƒd'¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@dA„ Z'dBdC„ Z(dDdE„ Z)dFdG„ Z*dHdI„ Z+dJdK„ Z,dLdM„ Z-G dNdO„ dOƒZ.G dPdQ„ dQƒZ/dRdS„ Z0dTdU„ Z1dVdW„ Z2e
 eedXƒoÏeedYƒdZ¡d[d\„ ƒZ3dld^d_„Z4d`da„ Z5dbdc„ Z6ddde„ Z7dfdg„ Z8dhdi„ Z9djdk„ Z:d]S )mÚTestSupportc                 C   sD   t tjƒ}tjddd| _tjddd| _t tjƒ|d ks J ‚d S )Nztest.support.warnings_helperz.*used in test_support.*)Úlikeztest.test_supportz!.*You should NOT be seeing this.*é   )ÚlenÚwarningsÚfiltersr   Úignore_deprecations_fromÚ_warnings_helper_tokenÚ_test_support_token©ÚclsÚorig_filter_len© r   ú(/usr/lib/python3.10/test/test_support.pyÚ
setUpClass   s   
ÿÿzTestSupport.setUpClassc                 C   s4   t tjƒ}t | j| j¡ t tjƒ|d ksJ ‚d S )Nr
   )r   r   r   r   Úclear_ignored_deprecationsr   r   r   r   r   r   ÚtearDownClass&   s   
þzTestSupport.tearDownClassc                 C   sd   t jdd}t ¡  t  dt¡ dd„ |D ƒ}W d  ƒ n1 s"w   Y  |  t|ƒd|¡ dS )z9Test support.ignore_deprecations_from() silences warningsT)ÚrecordzYou should NOT be seeing this.c                 S   ó   g | ]}t |jƒ‘qS r   ©ÚstrÚmessage©Ú.0Úwr   r   r   Ú
<listcomp>4   ó    zDTestSupport.test_ignored_deprecations_are_silent.<locals>.<listcomp>Nr   )r   Úcatch_warningsr   Ú_warn_about_deprecationÚwarnÚDeprecationWarningÚassertEqualr   )ÚselfÚwarning_objsÚmessagesr   r   r   Ú$test_ignored_deprecations_are_silent/   s   ýz0TestSupport.test_ignored_deprecations_are_silentc                 C   s    t  d¡ |  tjt jd¡ d S )NÚftplibÚfoo)r   Úimport_moduleÚassertRaisesÚunittestÚSkipTest©r(   r   r   r   Útest_import_module7   s   
ÿzTestSupport.test_import_modulec                 C   s   t  d¡ d S )Nr,   )r   Úimport_fresh_moduler2   r   r   r   Útest_import_fresh_module<   s   z$TestSupport.test_import_fresh_modulec                 C   s.   |   t | d¡| j¡ |  tjtj| d¡ d S )NÚtest_get_attributer-   )r'   r   Úget_attributer6   r/   r0   r1   r2   r   r   r   r6   ?   s   ÿzTestSupport.test_get_attributezfailing buildbotsc                 C   s   |   t ¡ tj¡ d S ©N)r'   r   Úget_original_stdoutÚsysÚstdoutr2   r   r   r   Útest_get_original_stdoutD   s   z$TestSupport.test_get_original_stdoutc                 C   s2   dd l }|  dtj¡ t d¡ |  dtj¡ d S )Nr   Úsched)r=   ÚassertInr:   Úmodulesr   ÚunloadÚassertNotIn)r(   r=   r   r   r   Útest_unloadH   s   
zTestSupport.test_unloadc                 C   sX   t tddd}W d   ƒ n1 sw   Y  t t¡ |  tj t¡¡ t t¡ d S )Nr    úutf-8©Úencoding)ÚopenÚTESTFNr   ÚunlinkÚassertFalseÚosÚpathÚexists)r(   Úfr   r   r   Útest_unlinkN   s   ÿ
zTestSupport.test_unlinkc                 C   s`  t jd }tj |d¡}t |¡ t |¡ t  |¡ |  tj |¡¡ t	 
t	dd¡ t  |¡ W d   ƒ n1 s;w   Y  t |¡ t |¡ t |tjtjB ¡ t	 
t	dd¡ t  |¡ W d   ƒ n1 skw   Y  |  tj |¡¡ t |¡ t |¡ t |d¡ t	 
t	dd¡ t  |¡ W d   ƒ n1 s w   Y  |  tj |¡¡ d S )NÚdÚsubdirÚverboser   )r   rG   rJ   rK   ÚjoinÚmkdirÚrmtreerI   rL   r   Ú	swap_attrÚchmodÚstatÚS_IRUSRÚS_IXUSR)r(   ÚdirpathÚ
subdirpathr   r   r   Útest_rmtreeU   s.   



ÿ

ÿ

ÿzTestSupport.test_rmtreec              	   C   sÊ   t d }t|ddd}td|d W d   ƒ n1 sw   Y  tj dtj¡ t 	¡  z(t
t ƒ}|  t tj¡ t t ¡ |  t tj¡ W tjd= t |¡ t d¡ d S tjd= t |¡ t d¡ w )	Nz.pyr    rC   rD   zfoo = 1©Úfiler   Ú__pycache__)rG   rF   Úprintr:   rK   ÚinsertrJ   ÚcurdirÚ	importlibÚinvalidate_cachesÚ
__import__r>   r?   r   ÚforgetrA   r   rH   rT   )r(   Úmod_filenamerM   Úmodr   r   r   Útest_forgetm   s"   ÿ

þ
zTestSupport.test_forgetc                 C   s   t  tjdf¡}| ¡  d S )Nr   )ÚsocketÚcreate_serverr   ÚHOSTÚclose©r(   Úsr   r   r   Ú	test_HOST~   s   zTestSupport.test_HOSTc                 C   s$   t  ¡ }t t j|f¡}| ¡  d S r8   )r   Úfind_unused_portrj   rk   rl   rm   )r(   Úportro   r   r   r   Útest_find_unused_port‚   s   z!TestSupport.test_find_unused_portc                 C   s&   t   ¡ }t |¡ | ¡  | ¡  d S r8   )rj   r   Ú	bind_portÚlistenrm   rn   r   r   r   Útest_bind_port‡   s   
zTestSupport.test_bind_portc              	   C   s¬   t  ¡ }tj |¡}zEtj |d¡}|  tj |¡¡ t 	|¡}|  
||¡ |  tj |¡¡ W d  ƒ n1 s:w   Y  |  tj |¡¡ W t |¡ dS t |¡ w )z8Test that temp_dir() creates and destroys its directory.ÚtempN)ÚtempfileÚmkdtemprJ   rK   ÚrealpathrR   rI   Úisdirr   Útemp_dirr'   Ú
assertTruerT   )r(   Ú
parent_dirrK   Ú	temp_pathr   r   r   Útest_temp_dir   s   þzTestSupport.test_temp_dirc                 C   sP   t  ¡ }|  tj |¡¡ W d  ƒ n1 sw   Y  |  tj |¡¡ dS )zTest passing no path.N)r   r|   r}   rJ   rK   r{   rI   )r(   r   r   r   r   Útest_temp_dir__path_nonež   s   
ÿz$TestSupport.test_temp_dir__path_nonec              	   C   sl   dd„ }t  ¡ }tj |¡}z!|  tj |¡¡ |  t||¡ |  tj |¡¡ W t	 
|¡ dS t	 
|¡ w )z-Test passing a directory that already exists.c                 S   ó(   t  | ¡}tdƒ‚1 sw   Y  d S ©Nzshould not get here)r   r|   Ú	Exception)rK   r   r   r   r   Úcall_temp_dir¦   ó   ÿzMTestSupport.test_temp_dir__existing_dir__quiet_default.<locals>.call_temp_dirN)rx   ry   rJ   rK   rz   r}   r{   r/   ÚFileExistsErrorÚshutilrT   )r(   r…   rK   r   r   r   Ú*test_temp_dir__existing_dir__quiet_default¤   s   z6TestSupport.test_temp_dir__existing_dir__quiet_defaultc              	   C   sì   t  ¡ }tj |¡}zIt ¡ -}tj|dd}|  	||¡ W d  ƒ n1 s(w   Y  dd„ |j
D ƒ}W d  ƒ n1 s?w   Y  |  tj |¡¡ W t |¡ nt |¡ w |  	t|ƒd|¡ |d }|  | d|›d	¡|¡ dS )
z=Test passing a directory that already exists with quiet=True.T©ÚquietNc                 S   r   r   r   r   r   r   r   r!   ½   r"   zGTestSupport.test_temp_dir__existing_dir__quiet_true.<locals>.<listcomp>é   r   z5tests may fail, unable to create temporary directory ú: )rx   ry   rJ   rK   rz   r   Úcheck_warningsr   r|   r'   r   r}   r{   rˆ   rT   r   Ú
startswith)r(   rK   Úrecorderr   r   r%   r   r   r   Ú'test_temp_dir__existing_dir__quiet_true´   s$   
ÿý
ÿþz3TestSupport.test_temp_dir__existing_dir__quiet_trueÚforkztest requires os.forkc                 C   s   t  dt d¡¡ dS )z?Test that a forked child process does not remove the directory.ú-ca  
            import os
            from test import support
            from test.support import os_helper
            with os_helper.temp_cwd() as temp_path:
                pid = os.fork()
                if pid != 0:
                    # parent process

                    # wait for the child to terminate
                    support.wait_process(pid, exitcode=0)

                    # Make sure that temp_path is still present. When the child
                    # process leaves the 'temp_cwd'-context, the __exit__()-
                    # method of the context must not remove the temporary
                    # directory.
                    if not os.path.isdir(temp_path):
                        raise AssertionError("Child removed temp_path.")
        N)r   Úassert_python_okÚtextwrapÚdedentr2   r   r   r   Útest_temp_dir__forked_childÉ   s   z'TestSupport.test_temp_dir__forked_childc              	   C   sŠ   t  ¡ }t ¡ +}t |¡}|  ||¡ |  t  ¡ |¡ W d   ƒ n1 s'w   Y  W d   ƒ n1 s6w   Y  |  t  ¡ |¡ d S r8   )rJ   Úgetcwdr   r|   Ú
change_cwdr'   )r(   Úoriginal_cwdr   Únew_cwdr   r   r   Útest_change_cwdä   s   
þ€ÿzTestSupport.test_change_cwdc                 C   sh   t  ¡ }dd„ }t ¡ }t j |d¡}|  t||¡ W d  ƒ n1 s%w   Y  |  t  ¡ |¡ dS )z&Test passing a non-existent directory.c                 S   r‚   rƒ   )r   r™   r„   )rK   r›   r   r   r   Úcall_change_cwdò   r†   zFTestSupport.test_change_cwd__non_existent_dir.<locals>.call_change_cwdÚdoes_not_existN)	rJ   r˜   r   r|   rK   rR   r/   ÚFileNotFoundErrorr'   )r(   rš   r   r~   Únon_existent_dirr   r   r   Ú!test_change_cwd__non_existent_dirî   s   
ÿþz-TestSupport.test_change_cwd__non_existent_dirc              
   C   sø   t  ¡ }t ¡ P}t j |d¡}t ¡ 5}tj|dd}|  	||¡ |  	t  ¡ |¡ W d  ƒ n1 s5w   Y  dd„ |j
D ƒ}W d  ƒ n1 sLw   Y  W d  ƒ n1 s[w   Y  |  	t|ƒd|¡ |d }|  | d	|›d
¡|¡ dS )z6Test passing a non-existent directory with quiet=True.rž   TrŠ   Nc                 S   r   r   r   r   r   r   r   r!     r"   zMTestSupport.test_change_cwd__non_existent_dir__quiet_true.<locals>.<listcomp>rŒ   r   úBtests may fail, unable to change the current working directory to r   )rJ   r˜   r   r|   rK   rR   r   rŽ   r™   r'   r   r   r}   r   )r(   rš   r~   Úbad_dirr   r›   r   r%   r   r   r   Ú-test_change_cwd__non_existent_dir__quiet_trueý   s&   

þü€þ
þýz9TestSupport.test_change_cwd__non_existent_dir__quiet_truec              	   C   s¦   t d }t ¡ '}tj|dd W d  ƒ n1 sw   Y  dd„ |jD ƒ}W d  ƒ n1 s2w   Y  |  t|ƒd|¡ |d }|  | 	d	|›d
¡|¡ dS )z0Check the warning message when os.chdir() fails.Ú_does_not_existT)rK   r‹   Nc                 S   r   r   r   r   r   r   r   r!     r"   z>TestSupport.test_change_cwd__chdir_warning.<locals>.<listcomp>rŒ   r   r¢   r   )
rG   r   rŽ   r   r™   r   r'   r   r}   r   )r(   rK   r   r*   Úmsgr   r   r   Útest_change_cwd__chdir_warning  s   
ÿý
þýz*TestSupport.test_change_cwd__chdir_warningc                 C   sr   t  ¡ }tjtd |  t j t  ¡ ¡t¡ W d   ƒ n1 s!w   Y  |  t j 	t¡¡ |  t  ¡ |¡ d S )N©Úname)
rJ   r˜   r   Útemp_cwdrG   r'   rK   ÚbasenamerI   rL   )r(   Úherer   r   r   Útest_temp_cwd#  s   ÿzTestSupport.test_temp_cwdc                 C   sv   t  ¡ }tjdd}|  ||¡ |  t j |¡¡ |  t  ¡ |¡ W d  ƒ n1 s,w   Y  |  t  ¡ |¡ dS )z Test passing None to temp_cwd().Nr¨   )	rJ   r˜   r   rª   ÚassertNotEqualr}   rK   r{   r'   )r(   rš   r›   r   r   r   Útest_temp_cwd__name_none+  s   ýz$TestSupport.test_temp_cwd__name_nonec                 C   s   |   t ddddœ¡d¡ d S )Né   r
   rŒ   )r°   r
   rŒ   z{1: 1, 2: 2, 3: 3})r'   r   Úsortdictr2   r   r   r   Útest_sortdict4  s   zTestSupport.test_sortdictc                 C   sT   t  ¡ }|  t¡}t |d¡ W d   ƒ n1 sw   Y  |  |jjtj	¡ d S )Ns   foo)
r   Úmake_bad_fdr/   ÚOSErrorrJ   Úwriter'   Ú	exceptionÚerrnoÚEBADF)r(   ÚfdÚcmr   r   r   Útest_make_bad_fd7  s
   ÿzTestSupport.test_make_bad_fdc                 C   sN   t j| dddd |  t¡ t  | d¡ W d   ƒ d S 1 s w   Y  d S )Nz	def classrŒ   é   )ÚlinenoÚoffsetzx=1)r   Úcheck_syntax_errorr/   ÚAssertionErrorr2   r   r   r   Útest_check_syntax_error=  s   "ÿz#TestSupport.test_check_syntax_errorc                 C   sB   dd l }t d¡ | d¡ W d   ƒ d S 1 sw   Y  d S )Nr   Úpprint)rc   r   ÚCleanImportr.   )r(   rc   r   r   r   Útest_CleanImportB  s   "ÿzTestSupport.test_CleanImportc                 C   sh   t  dd¡ |  dtj¡ |  dtj¡ W d   ƒ n1 sw   Y  |  dtj¡ |  dtj¡ d S )Nr-   Úbar)r   ÚDirsOnSysPathr>   r:   rK   rA   r2   r   r   r   Útest_DirsOnSysPathG  s   þzTestSupport.test_DirsOnSysPathc                 C   sD   t  ¡ }tdƒ W d   ƒ n1 sw   Y  |  | ¡ d¡ d S )NÚhelloúhello
)r   Úcaptured_stdoutr`   r'   Úgetvalue)r(   r;   r   r   r   Útest_captured_stdoutN  s   

ÿz TestSupport.test_captured_stdoutc                 C   sJ   t  ¡ }tdtjd W d   ƒ n1 sw   Y  |  | ¡ d¡ d S )NrÈ   r]   rÉ   )r   Úcaptured_stderrr`   r:   Ústderrr'   rË   )r(   rÎ   r   r   r   Útest_captured_stderrS  s   
ÿz TestSupport.test_captured_stderrc                 C   sR   t  ¡ }| d¡ | d¡ tƒ }W d   ƒ n1 sw   Y  |  |d¡ d S )NrÉ   r   rÈ   )r   Úcaptured_stdinrµ   ÚseekÚinputr'   )r(   ÚstdinÚcapturedr   r   r   Útest_captured_stdinX  s   


üzTestSupport.test_captured_stdinc                 C   s   t  ¡  d S r8   )r   Ú
gc_collectr2   r   r   r   Útest_gc_collect`  s   zTestSupport.test_gc_collectc                 C   s   |   t ¡ t¡ d S r8   )ÚassertIsInstancer   Úpython_is_optimizedÚboolr2   r   r   r   Útest_python_is_optimizedc  s   z$TestSupport.test_python_is_optimizedc                 C   s  G dd„ dƒ}|ƒ }d|_ t |dd¡}|  |j d¡ |  |d¡ W d   ƒ n1 s,w   Y  |  |j d¡ t |dd¡}|  |jd¡ |  |¡ W d   ƒ n1 sVw   Y  |  t|dƒ¡ t |dd¡
 |`W d   ƒ n1 sww   Y  |  t|dƒ¡ d S )Nc                   @   s   e Zd ZdS )z'TestSupport.test_swap_attr.<locals>.ObjN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚObjg  s    rß   rŒ   Úxr¼   Úy)rà   r   rU   r'   rá   ÚassertIsNonerI   Úhasattr)r(   rß   Úobjrà   rá   r   r   r   Útest_swap_attrf  s"   þþÿzTestSupport.test_swap_attrc                 C   sú   ddi}t  |dd¡}|  |d d¡ |  |d¡ W d   ƒ n1 s$w   Y  |  |d d¡ t  |dd¡}|  |d d¡ |  |¡ W d   ƒ n1 sPw   Y  |  d|¡ t  |dd¡ |d= W d   ƒ n1 spw   Y  |  d|¡ d S )Nrà   rŒ   r¼   rá   )r   Ú	swap_itemr'   râ   rA   )r(   ÚDrà   rá   r   r   r   Útest_swap_itemw  s   þþÿzTestSupport.test_swap_itemc                   @   ó   e Zd ZdZdZdZdZdS )zTestSupport.RefClassN)rÜ   rÝ   rÞ   Ú
attribute1Ú
attribute2Ú_hidden_attribute1Ú__magic_1__r   r   r   r   ÚRefClass…  ó
    rî   c                   @   ré   )zTestSupport.OtherClassN)rÜ   rÝ   rÞ   rë   Ú
attribute3rí   Ú__magic_2__r   r   r   r   Ú
OtherClass‹  rï   rò   c                 C   sB   t  | j| j¡}|  dh|¡ t  | j| j¡}|  ddh|¡ d S )Nrê   rð   rñ   )r   Údetect_api_mismatchrî   rò   r'   )r(   Úmissing_itemsr   r   r   Útest_detect_api_mismatch‘  s   ÿÿz$TestSupport.test_detect_api_mismatchc                 C   sP   g d¢}t j| j| j|d}|  tƒ |¡ t j| j| j|d}|  tƒ |¡ d S )N)rê   rð   rñ   Únot_in_either)Úignore)r   ró   rî   rò   r'   Úset)r(   r÷   rô   r   r   r   Ú test_detect_api_mismatch__ignoreš  s   
ÿ
ÿz,TestSupport.test_detect_api_mismatch__ignorec                 C   sX   dh}dh}t j| t||d ddh}h d£}t j| td||d |  tt j| t¡ d S )NÚtempdirÚtemplate)ÚextraÚnot_exportedÚTextTestResultÚinstallHandler>   Ú
load_testsÚTestProgramÚBaseTestSuite)zunittest.resultzunittest.casezunittest.suitezunittest.loaderzunittest.mainzunittest.runnerzunittest.signalszunittest.async_case)r   Úcheck__all__rx   r0   r/   rÀ   )r(   rü   rý   r   r   r   Útest_check__all__¥  s    ýù	zTestSupport.test_check__all__ÚwaitpidÚWNOHANGz need os.waitpid() and os.WNOHANGc                 C   sä   t  ¡  t ¡ }|dkrt d¡ t ¡ }t ¡ t j }t j}zHdt _t	 
¡ }	 t ¡ |kr3|  d¡ tj}z|t_t  ¡  W |t_n|t_w t jrKnt d¡ q(d| }|  || ¡ ¡ |  t j¡ W |t _n|t _w t  ¡  d S )Nr   FTÚtimeoutgš™™™™™¹?z2Warning -- reap_children() reaped child process %s)r   Úreap_childrenrJ   r’   Ú_exitÚtimeÚ	monotonicÚSHORT_TIMEOUTÚenvironment_alteredÚioÚStringIOÚfailr:   Ú
__stderr__Úsleepr>   rË   r}   )r(   ÚpidÚt0ÚdeadlineÚwas_alteredrÎ   Ú
old_stderrr¦   r   r   r   Útest_reap_children»  s6   



ïzTestSupport.test_reap_childrenNc                 C   s†   d|› d|› d}t jg|¢d‘|‘}dd„ tj ¡ D ƒ}tj|tjtjd|d}|d u r/|}|  	|j
 ¡ t|ƒ¡ |  	|jd	¡ d S )
Nzfrom test.support import z; print(repr(z()))r“   c                 S   s    i | ]\}}|  d ¡s||“qS )ÚPYTHON)r   )r   ÚkeyÚvaluer   r   r   Ú
<dictcomp>ï  s    ÿz-TestSupport.check_options.<locals>.<dictcomp>T)r;   rÎ   Úuniversal_newlinesÚenvr   )r:   Ú
executablerJ   ÚenvironÚitemsÚ
subprocessÚrunÚPIPEÚDEVNULLr'   r;   ÚrstripÚreprÚ
returncode)r(   ÚargsÚfuncÚexpectedÚcodeÚcmdr  Úprocr   r   r   Úcheck_optionsì  s   üzTestSupport.check_optionsc                 C   s²   g dgdgdgdgdgdgdgdgd	gd
gdgddgg d¢ddgddgddgddgddgfD ]}| j |d |  |d¡ W d   ƒ n1 sGw   Y  q.|  g d¢ddg¡ d S )Nz-Bú-sz-Sú-Ez-vz-bz-qú-Iz-bbz-vvvú-Wignoreú-XÚdev)r3  r4  r5  ÚfaulthandlerÚ
importtimeÚshowrefcountÚtracemallocztracemalloc=3©ÚoptsÚargs_from_interpreter_flags)r2  r1  r0  ©ÚsubTestr/  ©r(   r;  r   r   r   Ú test_args_from_interpreter_flagsû  s6   èÿ€ÿz,TestSupport.test_args_from_interpreter_flagsc              	   C   sT   g dgdgdgfD ]}| j |d |  |d¡ W d   ƒ n1 s"w   Y  q	d S )Nz-Oz-OOz-OOOOr:  Ú!optim_args_from_interpreter_flagsr=  r?  r   r   r   Ú&test_optim_args_from_interpreter_flags  s   ûÿ€ùz2TestSupport.test_optim_args_from_interpreter_flagsc                 C   sð  G dd„ dƒ}|dƒ}|dƒ}t  t dd ¡ã t  g ¡ |  t  |¡¡ |  t  |¡¡ t  d d ¡ |  t  |¡¡ |  t  |¡¡ t  | ¡ gd ¡ |  t  |¡¡ |  t  |¡¡ t  dgd ¡ |  t  |¡¡ |  t  |¡¡ t  dgd ¡ |  t  |¡¡ |  t  |¡¡ t  dgd ¡ |  t  |¡¡ t  d	gd ¡ |  t  |¡¡ t  d
gd ¡ |  t  |¡¡ |  t  |¡¡ t  | ¡ | ¡ gd ¡ |  t  |¡¡ |  t  |¡¡ t  ddgd ¡ |  t  |¡¡ |  t  |¡¡ W d   ƒ n1 süw   Y  t  t dd ¡å t jg d |  t  |¡¡ |  t  |¡¡ t  d d ¡ |  t  |¡¡ |  t  |¡¡ t  d | ¡ g¡ |  t  |¡¡ |  t  |¡¡ t  d dg¡ |  t  |¡¡ |  t  |¡¡ t  d dg¡ |  t  |¡¡ |  t  |¡¡ t  d dg¡ |  t  |¡¡ t  d d	g¡ |  t  |¡¡ t  d d
g¡ |  t  |¡¡ |  t  |¡¡ t  d | ¡ | ¡ g¡ |  t  |¡¡ |  t  |¡¡ t  d ddg¡ |  t  |¡¡ |  t  |¡¡ W d   ƒ d S 1 sñw   Y  d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z)TestSupport.test_match_test.<locals>.Testc                 S   s
   || _ d S r8   ©Útest_id)r(   rD  r   r   r   Ú__init__+  s   
z2TestSupport.test_match_test.<locals>.Test.__init__c                 S   s   | j S r8   rC  r2   r   r   r   Úid.  s   z,TestSupport.test_match_test.<locals>.Test.idN)rÜ   rÝ   rÞ   rE  rF  r   r   r   r   ÚTest*  s    rG  z"test.test_os.FileTests.test_accessz'test.test_os.Win32ErrorTests.test_chdirÚ_match_test_funcÚtest_osztest_*Ú	filetestsÚ	FileTestsz*test_os.*.test_*Útest_accessÚ	DONTMATCH)Úignore_patterns)r   rU   Úset_match_testsr}   Ú
match_testrF  rI   )r(   rG  rL  Ú
test_chdirr   r   r   Útest_match_test)  s~   
Ô/$ÔzTestSupport.test_match_testc              	   C   sN   t  ¡ }t ttj¡}zt  ¡ }W t |¡ nt |¡ w |  || d¡ d S )NrŒ   )r   Úfd_countrJ   rF   Ú__file__ÚO_RDONLYrm   r'   )r(   Ústartr¹   Úmorer   r   r   Útest_fd_count’  s   
zTestSupport.test_fd_countc                 C   sF   t  ¡ }tj}z|t_t |¡ W |t_n|t_w |  | ¡ |¡ d S r8   )r  r  r:   r  r   Úprint_warningr'   rË   )r(   r¦   r+  rÎ   r  r   r   r   Úcheck_print_warningž  s   zTestSupport.check_print_warningc                 C   s   |   dd¡ |   dd¡ d S )Nr¦   zWarning -- msg
za
bzWarning -- a
Warning -- b
)rZ  r2   r   r   r   Útest_print_warningª  s   ÿÿzTestSupport.test_print_warningr8   );rÜ   rÝ   rÞ   Úclassmethodr   r   r+   r3   r5   r6   r0   Úskipr<   rB   rN   r\   ri   rp   rs   rv   r€   r   r‰   r‘   Ú
skipUnlessrã   rJ   r—   rœ   r¡   r¤   r§   r­   r¯   r²   r»   rÁ   rÄ   rÇ   rÌ   rÏ   rÕ   r×   rÛ   rå   rè   rî   rò   rõ   rù   r  r  r/  r@  rB  rR  rX  rZ  r[  r   r   r   r   r      st    





		ÿ

/"ir   Ú__main__)r·   rc   r  rJ   rˆ   rj   rW   r"  r:   rx   r•   r
  r0   r   Útestr   Útest.supportr   r   r   r   r   rG   ÚTestCaser   rÜ   Úmainr   r   r   r   Ú<module>   s<         3ÿ