U
    ç;ãg¢G  ã                   @   sº  d 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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 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 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 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% 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+ dd"lm,Z, dd#lm-Z- dd$lm.Z. dd%lm/Z/ dd&lm0Z0 dd'lm1Z1 G d(d)„ d)eƒZ2G d*d+„ d+eƒZ3G d,d-„ d-eƒZ4G d.d/„ d/eƒZ5G d0d1„ d1eƒZ6e&j7j8d2d3G d4d5„ d5eƒƒZ9G d6d7„ d7eƒZ:G d8d9„ d9eƒZ;G d:d;„ d;eƒZ<dS )<z1Tests for testing utils (psutil.tests namespace).é    N)Úmock)ÚFREEBSD)ÚNETBSD)ÚPOSIX)Úopen_binary)Ú	open_text)Úsupports_ipv6)Ú
CI_TESTING)ÚCOVERAGE)ÚHAS_NET_CONNECTIONS_UNIX)ÚHERE)Ú
PYTHON_EXE)ÚPYTHON_EXE_ENV)ÚPsutilTestCase)ÚTestMemoryLeak)Úbind_socket)Úbind_unix_socket©Ú
call_until)Úchdir)Úcreate_sockets)Úfake_pytest)Úfilter_proc_net_connections)Úget_free_port)Úis_namedtuple)Úprocess_namespace)Úpytest)Úreap_children)Úretry)Úretry_on_failure)Ú
safe_mkdir)Úsafe_rmpath)Úsystem_namespace)Útcp_socketpair)Ú	terminate)Úunix_socketpair)Úwait_for_file)Úwait_for_pidc                   @   sx   e Zd Ze d¡dd„ ƒZe d¡dd„ ƒZe d¡dd„ ƒZe d¡dd	„ ƒZe d¡d
d„ ƒZ	e d¡dd„ ƒZ
dS )ÚTestRetryDecoratorz
time.sleepc                    sF   t ddd d‡ fdd„ƒ}ttdƒƒ‰ |ƒ dks4t‚|jdksBt‚d S )Né   é   ©ÚretriesÚintervalZlogfunc                      s   ˆ rˆ   ¡  dd  q dS ©Nr*   r   ©Úpop© ©Úqueuer1   ú[/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/psutil/tests/test_testutils.pyÚfooF   s    
z2TestRetryDecorator.test_retry_success.<locals>.fooé   )r   ÚlistÚrangeÚAssertionErrorÚ
call_count©ÚselfÚsleepr5   r1   r2   r4   Útest_retry_successB   s
    z%TestRetryDecorator.test_retry_successc              	      sT   t ddd d‡ fdd„ƒ}ttdƒƒ‰ t t¡ |ƒ  W 5 Q R X |jdksPt‚d S )Nr)   r*   r+   c                      s   ˆ rˆ   ¡  dd  q dS r.   r/   r1   r2   r1   r4   r5   T   s    
z2TestRetryDecorator.test_retry_failure.<locals>.fooé   )r   r7   r8   r   ÚraisesÚZeroDivisionErrorr:   r9   r;   r1   r2   r4   Útest_retry_failureQ   s    z%TestRetryDecorator.test_retry_failurec              	   C   sB   t tdddd„ ƒ}t t¡ |ƒ  W 5 Q R X |jdks>t‚d S )Nr*   )Ú	exceptionr-   c                   S   s   t ‚d S ©N)Ú	TypeErrorr1   r1   r1   r4   r5   b   s    z2TestRetryDecorator.test_exception_arg.<locals>.foor   )r   Ú
ValueErrorr   r@   rE   r:   r9   r;   r1   r1   r4   Útest_exception_arg`   s
    

z%TestRetryDecorator.test_exception_argc              	   C   sD   t dd d ddd„ ƒ}t t¡ |ƒ  W 5 Q R X |jdks@t‚d S )Nr)   r+   c                   S   s   dd  d S r.   r1   r1   r1   r1   r4   r5   n   s    z4TestRetryDecorator.test_no_interval_arg.<locals>.foor   ©r   r   r@   rA   r:   r9   r;   r1   r1   r4   Útest_no_interval_argj   s
    
z'TestRetryDecorator.test_no_interval_argc              	   C   sD   t ddd ddd„ ƒ}t t¡ |ƒ  W 5 Q R X |jdks@t‚d S )Nr)   r*   r+   c                   S   s   dd  d S r.   r1   r1   r1   r1   r4   r5   x   s    z0TestRetryDecorator.test_retries_arg.<locals>.foorH   r;   r1   r1   r4   Útest_retries_argv   s
    
z#TestRetryDecorator.test_retries_argc              	   C   s&   t  t¡ tddd W 5 Q R X d S )Nr)   r*   )r,   Útimeout)r   r@   rF   r   )r<   r=   r1   r1   r4   Útest_retries_and_timeout_args€   s    z0TestRetryDecorator.test_retries_and_timeout_argsN)Ú__name__Ú
__module__Ú__qualname__r   Úpatchr>   rB   rG   rI   rJ   rL   r1   r1   r1   r4   r(   A   s   


	

	r(   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestSyncTestUtilsc              
   C   s`   t t ¡ ƒ tt ¡ ƒd }tjdtdgƒd& t	 
tj¡ t |ƒ W 5 Q R X W 5 Q R X d S )NiŸ† úpsutil.tests.retry.__iter__r   ©Zreturn_value)r'   ÚosÚgetpidÚmaxÚpsutilZpidsr   rP   Úiterr   r@   ZNoSuchProcess)r<   Znopidr1   r1   r4   Útest_wait_for_pid‡   s
    z#TestSyncTestUtils.test_wait_for_pidc              	   C   sD   |   ¡ }t|dƒ}| d¡ W 5 Q R X t|ƒ tj |¡r@t‚d S )NÚwr5   ©Ú
get_testfnÚopenÚwriter&   rT   ÚpathÚexistsr9   ©r<   ÚtestfnÚfr1   r1   r4   Útest_wait_for_fileŽ   s
    z$TestSyncTestUtils.test_wait_for_filec              	   C   s>   |   ¡ }t|dƒ W 5 Q R X t|dd tj |¡r:t‚d S )NrZ   T)Úempty)r\   r]   r&   rT   r_   r`   r9   ©r<   rb   r1   r1   r4   Útest_wait_for_file_empty•   s
    
z*TestSyncTestUtils.test_wait_for_file_emptyc              
   C   sJ   |   ¡ }tjdtdgƒd$ t t¡ t|ƒ W 5 Q R X W 5 Q R X d S )NrR   r   rS   )r\   r   rP   rX   r   r@   ÚOSErrorr&   rf   r1   r1   r4   Útest_wait_for_file_no_fileœ   s    z,TestSyncTestUtils.test_wait_for_file_no_filec              	   C   sH   |   ¡ }t|dƒ}| d¡ W 5 Q R X t|dd tj |¡sDt‚d S )NrZ   r5   F)Údeleter[   ra   r1   r1   r4   Útest_wait_for_file_no_delete¢   s
    z.TestSyncTestUtils.test_wait_for_file_no_deletec                 C   s   t dd„ ƒ d S )Nc                   S   s   dS ©Nr*   r1   r1   r1   r1   r4   Ú<lambda>ª   ó    z3TestSyncTestUtils.test_call_until.<locals>.<lambda>r   ©r<   r1   r1   r4   Útest_call_until©   s    z!TestSyncTestUtils.test_call_untilN)	rM   rN   rO   rY   rd   rg   ri   rk   rp   r1   r1   r1   r4   rQ   †   s   rQ   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestFSTestUtilsc              	   C   s&   t tƒ}|jdkst‚W 5 Q R X d S )NÚr)r   Ú__file__Úmoder9   ©r<   rc   r1   r1   r4   Útest_open_text¯   s    
zTestFSTestUtils.test_open_textc              	   C   s&   t tƒ}|jdkst‚W 5 Q R X d S )NÚrb)r   rs   rt   r9   ru   r1   r1   r4   Útest_open_binary³   s    
z TestFSTestUtils.test_open_binaryc                 C   s<   |   ¡ }t|ƒ tj |¡s t‚t|ƒ tj |¡s8t‚d S rD   )r\   r    rT   r_   Úisdirr9   rf   r1   r1   r4   Útest_safe_mkdir·   s
    zTestFSTestUtils.test_safe_mkdirc              
   C   s¦   |   ¡ }t|dƒ ¡  t|ƒ tj |¡r.t‚t|ƒ t |¡ t|ƒ tj |¡rXt‚t	j
dttjdƒd.}t t¡ t|ƒ W 5 Q R X |js˜t‚W 5 Q R X d S )NrZ   zpsutil.tests.os.statÚ )Zside_effect)r\   r]   Úcloser!   rT   r_   r`   r9   Úmkdirr   rP   rh   ÚerrnoÚEINVALr   r@   Zcalled)r<   rb   Úmr1   r1   r4   Útest_safe_rmpath¾   s     
 
ÿz TestFSTestUtils.test_safe_rmpathc              	   C   s\   |   ¡ }t ¡ }t |¡ t|ƒ  t ¡ tj ||¡ks>t‚W 5 Q R X t ¡ |ksXt‚d S rD   )r\   rT   Úgetcwdr}   r   r_   Újoinr9   )r<   rb   Úbaser1   r1   r4   Ú
test_chdirÒ   s    

$zTestFSTestUtils.test_chdirN)rM   rN   rO   rv   rx   rz   r   r…   r1   r1   r1   r4   rq   ®   s
   rq   c                   @   s>   e Zd Zdd„ Zdd„ Zejje dddd„ ƒZ	d	d
„ Z
dS )ÚTestProcessUtilsc                 C   sN   |   ¡ }t |j¡}| ¡ s t‚tƒ  | ¡ r2t‚tjjr>t‚tjj	rJt‚d S rD   )
Úspawn_testprocrW   ÚProcessÚpidÚ
is_runningr9   r   ÚtestsZ_pids_startedZ_subprocesses_started)r<   ZsubpÚpr1   r1   r4   Útest_reap_childrenÜ   s    z#TestProcessUtils.test_reap_childrenc                 C   sä   |   ¡ \}}|j|jkst‚| ¡ s(t‚| ¡ s4t‚t ¡  ¡ }||gksNt‚t ¡ jdd}t|ƒdksnt‚||kszt‚||ks†t‚| ¡ t	 
¡ ksšt‚| ¡ |jks¬t‚t|ƒ | ¡ rÀt‚| ¡ sÌt‚t|ƒ | ¡ ràt‚d S )NT)Ú	recursiveé   )Zspawn_children_pairr‰   r9   rŠ   rW   rˆ   ÚchildrenÚlenÚppidrT   rU   r$   )r<   ÚchildZ
grandchildr   r1   r1   r4   Útest_spawn_children_pairå   s"    z)TestProcessUtils.test_spawn_children_pairú
POSIX only©Úreasonc                 C   s"   |   ¡ \}}| ¡ tjkst‚d S rD   )Úspawn_zombieÚstatusrW   ZSTATUS_ZOMBIEr9   )r<   Z_parentÚzombier1   r1   r4   Útest_spawn_zombieú   s    z"TestProcessUtils.test_spawn_zombiec                 C   sî   |   ¡ }t|ƒ |  |j¡ t|ƒ t |   ¡ j¡}t|ƒ |  |j¡ t|ƒ tddg}tj|tj	tj	t
d}t|ƒ |  |j¡ t|ƒ |   ¡ j}t|ƒ |  |j¡ t|ƒ trê|  ¡ \}}t|ƒ t|ƒ |  |j¡ |  |j¡ d S )Nz-cz3import time; [time.sleep(0.1) for x in range(100)];)ÚstdoutÚstderrÚenv)r‡   r$   ZassertPidGoner‰   rW   rˆ   r   ÚPopenÚ
subprocessÚPIPEr   r   r˜   )r<   rŒ   Úcmdr‰   Úparentrš   r1   r1   r4   Útest_terminateÿ   s>    ýü
zTestProcessUtils.test_terminateN)rM   rN   rO   r   r”   r   ÚmarkÚskipifr   r›   r¤   r1   r1   r1   r4   r†   Û   s
   	
r†   c                   @   sl   e Zd Zdd„ Zejje dddd„ ƒZdd„ Z	ejje ddejje
pNed	dd
d„ ƒƒZdd„ ZdS )ÚTestNetUtilsc              	   C   s8   t ƒ }td|fd}| ¡ d |ks*t‚W 5 Q R X d S )Nr{   ©Úaddrr*   )r   r   Úgetsocknamer9   )r<   ÚportÚsr1   r1   r4   r   (  s    zTestNetUtils.bind_socketr•   r–   c              	   C   s¨   |   ¡ }t|ƒ\}|jtjks"t‚|jtjks2t‚| ¡ |ksBt‚t	j
 |¡sRt‚t t	 |¡j¡sht‚W 5 Q R X |   ¡ }t|tjd}|jtjksšt‚W 5 Q R X d S )N)Útype)r\   r   ÚfamilyÚsocketÚAF_UNIXr9   r­   ÚSOCK_STREAMrª   rT   r_   r`   ÚstatÚS_ISSOCKÚst_modeÚ
SOCK_DGRAM)r<   ÚnameÚsockr1   r1   r4   Útest_bind_unix_socket-  s    
 z"TestNetUtils.test_bind_unix_socketc              
   C   sp   dt ƒ f}ttj|d\}}|F |6 | ¡ |ks8t‚| ¡ |ksHt‚| ¡ |ksXt‚W 5 Q R X W 5 Q R X d S )Nz	127.0.0.1r¨   )r   r#   r¯   ÚAF_INETrª   r9   Úgetpeername)r<   r©   ÚserverÚclientr1   r1   r4   Útest_tcp_socketpair;  s    
z TestNetUtils.test_tcp_socketpairz*/var/run/log UNIX socket opened by defaultc                 C   sÊ   t  ¡ }| ¡ }t|jddƒr$t‚|  ¡ }t|ƒ\}}zzt	j
 |¡sJt‚t t	 |¡j¡s`t‚| ¡ | dkstt‚tt|jddƒƒdkst‚| ¡ |ks t‚| ¡ |ks°t‚W 5 | ¡  | ¡  X d S )NÚunix)Úkindr   )rW   rˆ   Únum_fdsr   Znet_connectionsr9   r\   r%   r|   rT   r_   r`   r²   r³   r´   r‘   rª   rº   )r<   rŒ   rÀ   r¶   r»   r¼   r1   r1   r4   Útest_unix_socketpairD  s&    ÿýÿz!TestNetUtils.test_unix_socketpairc              	   C   sÊ   t ƒ º}t t¡}t t¡}|D ]2}||j  d7  < || tjtj¡  d7  < q |tj	 dksft
‚tƒ r~|tj dks~t
‚tr˜tr˜|tj dks˜t
‚|tj dksªt
‚|tj dks¼t
‚W 5 Q R X d S )Nr*   r   )r   ÚcollectionsÚdefaultdictÚintr®   Ú
getsockoptr¯   Ú
SOL_SOCKETÚSO_TYPEr¹   r9   r   ÚAF_INET6r   r   r°   r±   rµ   )r<   ÚsocksZfamsÚtypesr¬   r1   r1   r4   Útest_create_sockets^  s    

z TestNetUtils.test_create_socketsN)rM   rN   rO   r   r   r¥   r¦   r   r¸   r½   r   r   rÁ   rË   r1   r1   r1   r4   r§   '  s   
	 ÿr§   Úserial©r¶   c                   @   sh   e Zd Zeƒ dd„ ƒZdd„ Zeƒ ejje	ddejje
dddd	„ ƒƒƒZd
d„ Zdd„ Zdd„ ZdS )ÚTestMemLeakClassc                    s8   ‡ fdd„}ddi‰ | j |ddd ˆ d dks4t‚d S )	Nc                      s   ˆ d  d7  < d S )NÚcntr*   r1   r1   ©rÏ   r1   r4   Úfuns  s    z(TestMemLeakClass.test_times.<locals>.funrÏ   r   é
   é   )ÚtimesÚwarmup_timesé   )Úexecuter9   )r<   rÑ   r1   rÐ   r4   Ú
test_timesq  s    zTestMemLeakClass.test_timesc              	   C   sÌ   t  t¡ | jdd„ dd W 5 Q R X t  t¡ | jdd„ dd W 5 Q R X t  t¡ | jdd„ dd W 5 Q R X t  t¡ | jd	d„ dd
 W 5 Q R X t  t¡ | jdd„ dd W 5 Q R X d S )Nc                   S   s   dS ©Nr   r1   r1   r1   r1   r4   rm   |  rn   z1TestMemLeakClass.test_param_err.<locals>.<lambda>r   ©rÔ   c                   S   s   dS rÙ   r1   r1   r1   r1   r4   rm   ~  rn   éÿÿÿÿc                   S   s   dS rÙ   r1   r1   r1   r1   r4   rm   €  rn   )rÕ   c                   S   s   dS rÙ   r1   r1   r1   r1   r4   rm   ‚  rn   )Ú	tolerancec                   S   s   dS rÙ   r1   r1   r1   r1   r4   rm   „  rn   )r,   )r   r@   rF   r×   ro   r1   r1   r4   Útest_param_errz  s    zTestMemLeakClass.test_param_errzskipped on CIr–   zskipped during test coveragec              	   C   sF   g }|fdd„}z,t jtdd | j|dd W 5 Q R X W 5 ~X d S )Nc                 S   s   |   dd ¡ d S )NZøxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxé   ©Úappend©Úlsr1   r1   r4   rÑ   Œ  s    z+TestMemLeakClass.test_leak_mem.<locals>.funz	extra-mem©Úmatchéd   rÚ   )r   r@   r9   r×   )r<   râ   rÑ   r1   r1   r4   Útest_leak_mem†  s    zTestMemLeakClass.test_leak_memc              	      sJ   ‡ ‡fdd„}g ‰ t rdnd}tjtd| d ˆ |¡ W 5 Q R X d S )Nc                     s"   t tƒ} ˆ | j¡ ˆ  | ¡ d S rD   )r]   rs   Z
addCleanupr|   rà   )rc   ©Úboxr<   r1   r4   rÑ   —  s    z1TestMemLeakClass.test_unclosed_files.<locals>.funÚfdÚhandlez	unclosed rã   )r   r   r@   r9   r×   )r<   rÑ   r¿   r1   rç   r4   Útest_unclosed_files–  s
    z$TestMemLeakClass.test_unclosed_filesc                    s>   ‡ fdd„}g ‰ d}| j ||ddd tˆ ƒ|d ks:t‚d S )Nc                      s   ˆ   dd ¡ d S )NZxxxxxxxxxxxxxxxxxxxxxxxxrÞ   rß   r1   rá   r1   r4   rÑ   ¢  s    z,TestMemLeakClass.test_tolerance.<locals>.funrå   r   i  €)rÔ   rÕ   rÜ   r*   )r×   r‘   r9   )r<   rÑ   rÔ   r1   rá   r4   Útest_tolerance¡  s       ÿzTestMemLeakClass.test_tolerancec              	   C   sd   dd„ }|   t|¡ t t¡ |   t|¡ W 5 Q R X dd„ }t t¡ |   t|¡ W 5 Q R X d S )Nc                   S   s   dd  d S r.   r1   r1   r1   r1   r4   Úfun_1­  s    z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_1c                   S   s   d S rD   r1   r1   r1   r1   r4   Úfun_2´  s    z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_2)Zexecute_w_excrA   r   r@   rh   r9   )r<   rí   rî   r1   r1   r4   Útest_execute_w_exc¬  s    z#TestMemLeakClass.test_execute_w_excN)rM   rN   rO   r   rØ   rÝ   r   r¥   r¦   r	   r
   ræ   rë   rì   rï   r1   r1   r1   r4   rÎ   o  s   
rÎ   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestFakePytestc                 C   s(   t  ¡ }| |¡ t  ¡ }| |¡}|S rD   )ÚunittestZ	TestSuiteZaddTestZTextTestRunnerÚrun)r<   ÚklassÚsuiteÚrunnerÚresultr1   r1   r4   Úrun_test_class¼  s
    

zTestFakePytest.run_test_classc              
   C   s¸   t  t¡}dd  W 5 Q R X t|jtƒs.t‚t jtdd}tdƒ‚W 5 Q R X z&t jtdd}tdƒ‚W 5 Q R X W n2 tk
r¨ } zt|ƒdks˜t‚W 5 d }~X Y nX |  d¡‚d S )Nr*   r   r5   rã   Úbarz"foo" does not match "bar"úexception not raised)	r   r@   rA   Ú
isinstanceÚvaluer9   rF   ÚstrÚfail)r<   ÚcmÚerrr1   r1   r4   Útest_raisesÃ  s    "zTestFakePytest.test_raisesc                 C   sV   t jjdddd„ ƒ}|ƒ dks$t‚t jjddG dd„ dƒƒ}|ƒ  ¡ dksRt‚d S )NrÌ   rÍ   c                   S   s   dS rl   r1   r1   r1   r1   r4   r5   Ô  s    z%TestFakePytest.test_mark.<locals>.foor*   c                   @   s   e Zd Zdd„ ZdS )z%TestFakePytest.test_mark.<locals>.Fooc                 S   s   dS rl   r1   ro   r1   r1   r4   rø   Ü  s    z)TestFakePytest.test_mark.<locals>.Foo.barN)rM   rN   rO   rø   r1   r1   r1   r4   ÚFooÚ  s   r  )r   r¥   Úxdist_groupr9   rø   )r<   r5   r  r1   r1   r4   Ú	test_markÓ  s    
zTestFakePytest.test_markc                 C   s–   G dd„ dt jƒ}|  |dƒ¡}| ¡ s,t‚t|jƒdks>t‚|jd d dksTt‚G dd„ dt jƒ}|  |dƒ¡}| ¡ s€t‚t|jƒdks’t‚d S )Nc                   @   s$   e Zd Zejjddddd„ ƒZdS )ú,TestFakePytest.test_skipif.<locals>.TestCaseTr—   r–   c                 S   s   ddkst ‚d S rl   ©r9   ro   r1   r1   r4   r5   ã  s    ú0TestFakePytest.test_skipif.<locals>.TestCase.fooN©rM   rN   rO   r   r¥   r¦   r5   r1   r1   r1   r4   ÚTestCaseâ  s   r  r5   r*   r   r—   c                   @   s$   e Zd Zejjddddd„ ƒZdS )r  Fr—   r–   c                 S   s   ddkst ‚d S rl   r  ro   r1   r1   r4   r5   í  s    r  Nr  r1   r1   r1   r4   r  ì  s   ©rñ   r  r÷   ZwasSuccessfulr9   r‘   Zskipped©r<   r  rö   r1   r1   r4   Útest_skipifá  s    zTestFakePytest.test_skipifc                 C   sX   G dd„ dt jƒ}|  |dƒ¡}| ¡ s,t‚t|jƒdks>t‚|jd d dksTt‚d S )Nc                   @   s   e Zd Zdd„ ZdS )z*TestFakePytest.test_skip.<locals>.TestCasec                 S   s   t  d¡ ddkst‚d S )Nr—   r*   r   )r   Úskipr9   ro   r1   r1   r4   r5   ÷  s    
z.TestFakePytest.test_skip.<locals>.TestCase.fooN)rM   rN   rO   r5   r1   r1   r1   r4   r  ö  s   r  r5   r*   r   r—   r	  r
  r1   r1   r4   Ú	test_skipõ  s
    zTestFakePytest.test_skipc              
   C   s¼   | j td}t |¡ ttj |d¡dƒ W 5 Q R X ttj |d¡dƒ}| t 	d¡ 
¡ ¡ W 5 Q R X tj tjd|¡6 |  td¡ t ¡ }| ¡ dks¤t‚W 5 Q R X W 5 Q R X d S )	N)Údirz__init__.pyrZ   ztest_file.pyz¬                import unittest

                class TestCase(unittest.TestCase):
                    def test_passed(self):
                        pass
                r   zFake pytest module was usedr*   )r\   r   rT   r}   r]   r_   rƒ   r^   ÚtextwrapÚdedentÚlstripr   rP   ÚobjectrW   r‹   ZassertWarnsRegexÚUserWarningr   ÚmainZcountTestCasesr9   )r<   Ztmpdirrc   rô   r1   r1   r4   Ú	test_main   s    

 ÿzTestFakePytest.test_mainc              	   C   sì   t  t¡ tjdtdd W 5 Q R X z*t  t¡ tjdtdd W 5 Q R X W n tk
rd   Y nX |  d¡‚t jtdd tjdtdd W 5 Q R X z.t jtdd tjdtdd W 5 Q R X W n tk
rÜ   Y nX |  d¡‚d S )Nr5   r*   )Ú
stacklevelrù   rã   rø   )r   Zwarnsr  ÚwarningsÚwarnÚDeprecationWarningr9   rý   ro   r1   r1   r4   Ú
test_warns  s     
zTestFakePytest.test_warnsN)
rM   rN   rO   r÷   r   r  r  r  r  r  r1   r1   r1   r4   rð   »  s   rð   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestTestingUtilsc                 C   sL   t  ¡ }t|ƒ}| ¡  tdd„ | |j¡D ƒƒd }|ƒ | ¡ ksHt‚d S )Nc                 s   s   | ]}|d  dkr|V  qdS )r*   r’   Nr1   ©Ú.0Úxr1   r1   r4   Ú	<genexpr>5  s      z:TestTestingUtils.test_process_namespace.<locals>.<genexpr>r   )	rW   rˆ   r   ÚtestÚnextrX   Úgettersr’   r9   )r<   rŒ   ÚnsrÑ   r1   r1   r4   Útest_process_namespace1  s
    z'TestTestingUtils.test_process_namespacec                 C   s:   t ƒ }tdd„ | |j¡D ƒƒd }|ƒ t ¡ ks6t‚d S )Nc                 s   s   | ]}|d  dkr|V  qdS )r*   Únet_if_addrsNr1   r  r1   r1   r4   r  :  s      z9TestTestingUtils.test_system_namespace.<locals>.<genexpr>r   )r"   r!  rX   r"  rW   r%  r9   )r<   r#  rÑ   r1   r1   r4   Útest_system_namespace8  s    z&TestTestingUtils.test_system_namespaceN)rM   rN   rO   r$  r&  r1   r1   r1   r4   r  0  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestOtherUtilsc                 C   s.   t t dd¡dddƒƒst‚t tƒ ƒr*t‚d S )Nr5   za b cr*   r   r6   )r   rÂ   Ú
namedtupler9   Útuplero   r1   r1   r4   Útest_is_namedtuple?  s    z!TestOtherUtils.test_is_namedtupleN)rM   rN   rO   r*  r1   r1   r1   r4   r'  >  s   r'  )=Ú__doc__rÂ   r~   rT   r¯   r²   r    r  rñ   r  r   rW   Zpsutil.testsr   r   r   Zpsutil._commonr   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"   r#   r$   r%   r&   r'   r(   rQ   rq   r†   r§   r¥   r  rÎ   rð   r  r'  r1   r1   r1   r4   Ú<module>   st   E(-LHKu