
    /hG                     \   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)e          Z2 G d* d+e          Z3 G d, d-e          Z4 G d. d/e          Z5 G d0 d1e          Z6e&j7        8                    d23           G d4 d5e                      Z9 G d6 d7e          Z: G d8 d9e          Z; G 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                   :   e Zd Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z	 ej        d          d             Z
dS )	TestRetryDecoratorz
time.sleepc                     t          ddd           fd            }t          t          d                     |            dk    sJ |j        dk    sJ d S )N      retriesintervallogfunc                  B     r                                   ddz    dS Nr-   r   popqueues   N/var/www/html/venv/lib/python3.11/site-packages/psutil/tests/test_testutils.pyfooz2TestRetryDecorator.test_retry_success.<locals>.fooF   2     		A   1       )r   listrange
call_countselfsleepr9   r7   s      @r8   test_retry_successz%TestRetryDecorator.test_retry_successB   sx     
q1T	2	2	2	 	 	 	 
3	2	 U1XXsuuzzzz1$$$$$$r;   c                 
   t          ddd           fd            }t          t          d                    t          j        t
                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr,   r-   r.   c                  B     r                                   ddz    dS r3   r4   r6   s   r8   r9   z2TestRetryDecorator.test_retry_failure.<locals>.fooT   r:   r;      )r   r=   r>   r   raisesZeroDivisionErrorr?   r@   s      @r8   test_retry_failurez%TestRetryDecorator.test_retry_failureQ   s     
q1T	2	2	2	 	 	 	 
3	2	 U1XX],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$s   A++A/2A/c                     t          t          d          d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr-   )	exceptionr0   c                      t           N)	TypeError r;   r8   r9   z2TestRetryDecorator.test_exception_arg.<locals>.foob   s    Or;   r   )r   
ValueErrorr   rG   rN   r?   rA   rB   r9   s      r8   test_exception_argz%TestRetryDecorator.test_exception_arg`   s    	a	0	0	0	 	 
1	0	 ]9%% 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$s   AAAc                     t          dd d           d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr,   r.   c                      ddz   d S r3   rO   rO   r;   r8   r9   z4TestRetryDecorator.test_no_interval_arg.<locals>.foon       EEEEr;   r   r   r   rG   rH   r?   rQ   s      r8   test_no_interval_argz'TestRetryDecorator.test_no_interval_argj   s     
q4	5	5	5	 	 
6	5	 ],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$   AAAc                     t          ddd           d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr,   r-   r.   c                      ddz   d S r3   rO   rO   r;   r8   r9   z0TestRetryDecorator.test_retries_arg.<locals>.foox   rU   r;   rV   rQ   s      r8   test_retries_argz#TestRetryDecorator.test_retries_argv   s    	q1T	2	2	2	 	 
3	2	 ],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$rX   c                     t          j        t                    5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr,   r-   )r/   timeout)r   rG   rP   r   )rA   rB   s     r8   test_retries_and_timeout_argsz0TestRetryDecorator.test_retries_and_timeout_args   s    ]:&& 	( 	(!Q''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   9= =N)__name__
__module____qualname__r   patchrC   rI   rR   rW   r[   r^   rO   r;   r8   r*   r*   A   s       TZ% % % TZ% % % TZ% % % TZ	% 	% 	% TZ% % % TZ( ( ( ( (r;   r*   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSyncTestUtilsc                    t          t          j                               t          t	          j                              dz   }t          j        dt          dg                    5  t          j
        t          j                  5  t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ni psutil.tests.retry.__iter__r   return_value)r(   osgetpidmaxpsutilpidsr   rb   iterr   rG   NoSuchProcess)rA   nopids     r8   test_wait_for_pidz#TestSyncTestUtils.test_wait_for_pid   s&   RY[[!!!FKMM""U*Z5D!IINNN 	$ 	$v344 $ $U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   (B;B#B;#B'	'B;*B'	+B;;B?B?c                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |           t          j                            |          rJ d S )Nwr9   
get_testfnopenwriter'   ri   pathexistsrA   testfnfs      r8   test_wait_for_filez$TestSyncTestUtils.test_wait_for_file   s    ""&# 	!GGENNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f7>>&)))))))   AAAc                     |                                  }t          |d          5  	 d d d            n# 1 swxY w Y   t          |d           t          j                            |          rJ d S )Nrs   T)empty)ru   rv   r'   ri   rx   ry   rA   r{   s     r8   test_wait_for_file_emptyz*TestSyncTestUtils.test_wait_for_file_empty   s    ""&# 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	fD))))7>>&)))))))s   377c                 (   |                                  }t          j        dt          dg                    5  t	          j        t                    5  t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrf   r   rg   )ru   r   rb   rn   r   rG   OSErrorr'   r   s     r8   test_wait_for_file_no_filez,TestSyncTestUtils.test_wait_for_file_no_file   s   ""Z5D!IINNN 	& 	&w'' & &f%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s5   BA/#B/A3	3B6A3	7BBBc                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |d           t          j                            |          sJ d S )Nrs   r9   F)deletert   rz   s      r8   test_wait_for_file_no_deletez.TestSyncTestUtils.test_wait_for_file_no_delete   s    ""&# 	!GGENNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fU++++w~~f%%%%%%%r~   c                 &    t          d            d S )Nc                      dS Nr-   rO   rO   r;   r8   <lambda>z3TestSyncTestUtils.test_call_until.<locals>.<lambda>   s    1 r;   r   rA   s    r8   test_call_untilz!TestSyncTestUtils.test_call_until   s    99r;   N)	r_   r`   ra   rq   r}   r   r   r   r   rO   r;   r8   rd   rd      sn        $ $ $* * ** * *& & && & &    r;   rd   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestFSTestUtilsc                 |    t          t                    5 }|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr)r   __file__moderA   r|   s     r8   test_open_textzTestFSTestUtils.test_open_text   s    x   	!A6S=====	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!   155c                 |    t          t                    5 }|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrb)r   r   r   r   s     r8   test_open_binaryz TestFSTestUtils.test_open_binary   s    "" 	"a6T>>>>>	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r   c                     |                                  }t          |           t          j                            |          sJ t          |           t          j                            |          sJ d S rM   )ru   r!   ri   rx   isdirr   s     r8   test_safe_mkdirzTestFSTestUtils.test_safe_mkdir   sg    ""6w}}V$$$$$6w}}V$$$$$$$r;   c                    |                                  }t          |d                                           t          |           t          j                            |          rJ t          |           t	          j        |           t          |           t          j                            |          rJ t          j	        dt          t          j        d                    5 }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nrs   zpsutil.tests.os.stat )side_effect)ru   rv   closer"   ri   rx   ry   mkdirr   rb   r   errnoEINVALr   rG   called)rA   r{   ms      r8   test_safe_rmpathz TestFSTestUtils.test_safe_rmpath   s   ""VS!!!F7>>&)))))F
F7>>&)))))Z"b0I0I
 
 
 	w'' $ $F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   (E DE D"	"E %D"	&E  EEc                 l   |                                  }t          j                    }t          j        |           t	          |          5  t          j                    t          j                            ||          k    sJ 	 d d d            n# 1 swxY w Y   t          j                    |k    sJ d S rM   )ru   ri   getcwdr   r   rx   join)rA   r{   bases      r8   
test_chdirzTestFSTestUtils.test_chdir   s    ""y{{
6]] 	= 	=9;;"',,tV"<"<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=y{{d""""""s   8BBBN)r_   r`   ra   r   r   r   r   r   rO   r;   r8   r   r      s_        ! ! !" " "% % %  (# # # # #r;   r   c                   l    e Zd Zd Zd Zej                            e d          d             Z	d Z
dS )TestProcessUtilsc                     |                                  }t          j        |j                  }|                                sJ t                       |                                rJ t          j        j        rJ t          j        j        rJ d S rM   )	spawn_testprocrl   Processpid
is_runningr   tests_pids_started_subprocesses_started)rA   subpps      r8   test_reap_childrenz#TestProcessUtils.test_reap_children   s}    ""$$N48$$||~~<<>>!!!<----<555555r;   c                    |                                  \  }}|j        |j        k    sJ |                                sJ |                                sJ t          j                                                    }||gk    sJ t          j                                        d          }t          |          dk    sJ ||v sJ ||v sJ |                                t          j	                    k    sJ |                                |j        k    sJ t          |           |                                rJ |                                sJ t          |           |                                rJ d S )NT)	recursive   )spawn_children_pairr   r   rl   r   childrenlenppidri   rj   r%   )rA   child
grandchildr   s       r8   test_spawn_children_pairz)TestProcessUtils.test_spawn_children_pair   s    4466zyJN****!!!!!$$&&&&&>##,,..E7"""">##,,t,<<8}}!!!!    X%%%%zz||ry{{****  EI----%##%%%%%$$&&&&&*((*******r;   
POSIX onlyreasonc                 |    |                                  \  }}|                                t          j        k    sJ d S rM   )spawn_zombiestatusrl   STATUS_ZOMBIE)rA   _parentzombies      r8   test_spawn_zombiez"TestProcessUtils.test_spawn_zombie   s9    ++--}}&"6666666r;   c                    |                                  }t          |           |                     |j                   t          |           t	          j        |                                  j                  }t          |           |                     |j                   t          |           t          ddg}t	          j        |t          j	        t          j	        t                    }t          |           |                     |j                   t          |           |                                  j        }t          |           |                     |j                   t          |           t          rk|                                 \  }}t          |           t          |           |                     |j                   |                     |j                   d S d S )Nz-cz3import time; [time.sleep(0.1) for x in range(100)];)stdoutstderrenv)r   r%   assertPidGoner   rl   r   r   Popen
subprocessPIPEr   r   r   )rA   r   cmdr   parentr   s         r8   test_terminatezTestProcessUtils.test_terminate   s   !!!15!!!!N4..00455!15!!!! A

 L??	
 
 
 	!15!!!!!!##'#15!!!# 	+!..00NFFffvz***vz*****	+ 	+r;   N)r_   r`   ra   r   r   r   markskipifr   r   r   rO   r;   r8   r   r      st        6 6 6+ + +* [E	,777 7 877%+ %+ %+ %+ %+r;   r   c                       e Zd Zd Zej                            e d          d             Zd Z	ej                            e d          ej                            e
ped          d                         Zd Zd	S )
TestNetUtilsc                     t                      }t          d|f          5 }|                                d         |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   addrr-   )r   r   getsockname)rA   portss      r8   r   zTestNetUtils.bind_socket(  s    r4j))) 	.Q==??1%-----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   !AAAr   r   c                 j   |                                  }t          |          5 }|j        t          j        k    sJ |j        t          j        k    sJ |                                |k    sJ t          j	        
                    |          sJ t          j        t          j        |          j                  sJ 	 d d d            n# 1 swxY w Y   |                                  }t          |t          j                  5 }|j        t          j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )N)type)ru   r   familysocketAF_UNIXr   SOCK_STREAMr   ri   rx   ry   statS_ISSOCKst_mode
SOCK_DGRAM)rA   namesocks      r8   test_bind_unix_socketz"TestNetUtils.test_bind_unix_socket-  s     d## 	8t;&.00009 22222##%%----7>>$'''''=!6777777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   d):;;; 	2t9 111111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   BCCCD((D,/D,c                 j   dt                      f}t          t          j        |          \  }}|5  |5  |                                |k    sJ |                                |k    sJ |                                |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz	127.0.0.1r   )r   r$   r   AF_INETr   getpeername)rA   r   serverclients       r8   test_tcp_socketpairz TestNetUtils.test_tcp_socketpair;  sF   ]__-'TBBB 	0 	0V 	0 	0%%''4////%%''4////%%''4/////		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s5   B(ABB(B	B(B	B((B,/B,z*/var/run/log UNIX socket opened by defaultc                 B   t          j                    }|                                }t          |                    d                    rJ |                                 }t          |          \  }}	 t          j        	                    |          sJ t          j        t          j
        |          j                  sJ |                                |z
  dk    sJ t          t          |                    d                              dk    sJ |                                |k    sJ |                                |k    sJ 	 |                                 |                                 d S # |                                 |                                 w xY w)Nunix)kindr   )rl   r   num_fdsr   net_connectionsru   r&   ri   rx   ry   r   r   r   r   r   r   r   )rA   r   r   r   r   r   s         r8   test_unix_socketpairz!TestNetUtils.test_unix_socketpairD  s   
 N))++.q/@/@f/@/M/MNNNNN  (..	7>>$'''''=!67777799;;(A----/0A0Av0A0N0NOO     
 %%''4////%%''4/////LLNNNLLNNNNN LLNNNLLNNNNs   4CE4 4*Fc                    t                      5 }t          j        t                    }t          j        t                    }|D ]O}||j        xx         dz  cc<   ||                    t          j        t          j                  xx         dz  cc<   P|t          j	                 dk    sJ t                      r|t          j                 dk    sJ t          rt          r|t          j                 dk    sJ |t          j                 dk    sJ |t          j                 dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr-   r   )r   collectionsdefaultdictintr   
getsockoptr   
SOL_SOCKETSO_TYPEr   r	   AF_INET6r   r   r   r   r   )rA   socksfamstypesr   s        r8   test_create_socketsz TestNetUtils.test_create_sockets^  s    	1*3//D+C00E L LQX!#all6#4fnEEFFF!KFFFF'1,,,, 2FO,1111 11 1FN+q0000+,1111*+q00000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   DD66D:=D:N)r_   r`   ra   r   r   r   r   r   r   r   r   r   r   r  rO   r;   r8   r   r   '  s        . . .
 [E	,772 2 8720 0 0 [E	,77['"N      87,1 1 1 1 1r;   r   serialr   c                       e Zd Z e            d             Zd Z e            ej                            e	d          ej                            e
d          d                                     Zd Zd Zd	 Zd
S )TestMemLeakClassc                 f    fd}ddi|                      |dd           d         dk    sJ d S )Nc                  (     dxx         dz  cc<   d S )Ncntr-   rO   )r  s   r8   funz(TestMemLeakClass.test_times.<locals>.funs  s    JJJ!OJJJJJr;   r  r   
      )timeswarmup_times   )execute)rA   r  r  s     @r8   
test_timeszTestMemLeakClass.test_timesq  sZ    	 	 	 	 	 ajS4445zRr;   c                    t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d	           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d
 d           d d d            d S # 1 swxY w Y   d S )Nc                      dS Nr   rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>|       r;   r   r  c                      dS r  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>~  r  r;   c                      dS r  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r;   )r  c                      dS r  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r;   )	tolerancec                      dS r  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r;   )r/   )r   rG   rP   r  r   s    r8   test_param_errzTestMemLeakClass.test_param_errz  s   ]:&& 	- 	-LL!L,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:&& 	. 	.LL"L---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:&& 	5 	5LLL444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5]:&& 	2 	2LLbL111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]:&& 	0 	0LLBL///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sW   ?AA#BBB,CCC5DD!D>E$$E(+E(zskipped on CIr   zskipped during test coveragec                     g }|fd}	 t          j        t          d          5  |                     |d           d d d            n# 1 swxY w Y   ~d S # ~w xY w)Nc                 6    |                      ddz             d S )Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   appendlss    r8   r  z+TestMemLeakClass.test_leak_mem.<locals>.fun  s    IIi$&'''''r;   z	extra-memmatchd   r  )r   rG   AssertionErrorr  )rA   r*  r  s      r8   test_leak_memzTestMemLeakClass.test_leak_mem  s      	( 	( 	( 	(	~[AAA - -S,,,- - - - - - - - - - - - - - - FFFFs-   A AA AA AA Ac                       fd}g t           rdnd}t          j        t          d|z             5                       |           d d d            d S # 1 swxY w Y   d S )Nc                      t          t                    }                     | j                                       |            d S rM   )rv   r   
addCleanupr   r(  )r|   boxrA   s    r8   r  z1TestMemLeakClass.test_unclosed_files.<locals>.fun  s5    XAOOAG$$$JJqMMMMMr;   fdhandlez	unclosed r+  )r   r   rG   r.  r  )rA   r  r   r3  s   `  @r8   test_unclosed_filesz$TestMemLeakClass.test_unclosed_files  s    	 	 	 	 	 	
 *tt(]>t1CDDD 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 |    fd}g d}|                      ||dd           t                    |dz   k    sJ d S )Nc                  8                          ddz             d S )Nxxxxxxxxxxxxxxxxxxxxxxxxr&  r'  r)  s   r8   r  z,TestMemLeakClass.test_tolerance.<locals>.fun  s    IIho&&&&&r;   r-  r   i  )r  r  r   r-   )r  r   )rA   r  r  r*  s      @r8   test_tolerancezTestMemLeakClass.test_tolerance  sp    	' 	' 	' 	' 	' u18I 	 	
 	
 	
 2ww%!)######r;   c                 z   d }|                      t          |           t          j        t                    5  |                      t          |           d d d            n# 1 swxY w Y   d }t          j        t
                    5  |                      t          |           d d d            d S # 1 swxY w Y   d S )Nc                      ddz   d S r3   rO   rO   r;   r8   fun_1z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_1  s    EEEEr;   c                      d S rM   rO   rO   r;   r8   fun_2z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_2  s    Dr;   )execute_w_excrH   r   rG   r   r.  )rA   r=  r?  s      r8   test_execute_w_excz#TestMemLeakClass.test_execute_w_exc  sB   	 	 	 	,e444],-- 	/ 	/w...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	 	 	 ]>** 	9 	90%888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s#   A  A$'A$B00B47B4N)r_   r`   ra   r    r  r"  r   r   r   r
   r   r/  r6  r:  rA  rO   r;   r8   r  r  o  s             
0 
0 
0 [
?;;[)GHH  IH <; 	 	 		$ 	$ 	$9 9 9 9 9r;   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestFakePytestc                     t          j                    }|                    |           t          j                    }|                    |          }|S rM   )unittest	TestSuiteaddTestTextTestRunnerrun)rA   klasssuiterunnerresults        r8   run_test_classzTestFakePytest.run_test_class  sF    "$$e(**E""r;   c                    t          j        t                    5 }ddz   d d d            n# 1 swxY w Y   t          |j        t                    sJ t          j        t
          d          5 }t          d          # 1 swxY w Y   	 t          j        t
          d          5 }t          d          # 1 swxY w Y   	 |                     d          # t          $ r }t          |          dk    sJ Y d }~d S d }~ww xY w)Nr-   r   r9   r+  barexception not raisedz"foo" does not match "bar")	r   rG   rH   
isinstancevaluerP   failr.  str)rA   cmerrs      r8   test_raiseszTestFakePytest.test_raises  s    122 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"($566666
%888 	$BU###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	4#Je<<< ( '''( ( ( ( ( ( ( ( (
 ))2333  	< 	< 	<s88;;;;;;;;;;;	<sT   ,00.A>>BB
C %B55B99C <B9=C 
D  C;;D c                 "   t           j                            d          d             } |            dk    sJ t           j                            d           G d d                      } |                                            dk    sJ d S )Nr  r	  c                      dS r   rO   rO   r;   r8   r9   z%TestFakePytest.test_mark.<locals>.foo  s    1r;   r-   c                       e Zd Zd ZdS )%TestFakePytest.test_mark.<locals>.Fooc                     dS r   rO   r   s    r8   rP  z)TestFakePytest.test_mark.<locals>.Foo.bar  s    qr;   N)r_   r`   ra   rP  rO   r;   r8   Foor\    s#            r;   r^  )r   r   xdist_grouprP  )rA   r9   r^  s      r8   	test_markzTestFakePytest.test_mark  s    			%	%8	%	4	4	 	 
5	4	 suuzzzz			%	%8	%	4	4	 	 	 	 	 	 	 
5	4	 suuyy{{ar;   c                     G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ |j        d         d         dk    sJ  G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ d S )Nc                   X    e Zd Zej                            dd          d             ZdS ),TestFakePytest.test_skipif.<locals>.TestCaseTr   r   c                     ddk    sJ d S r   rO   r   s    r8   r9   z0TestFakePytest.test_skipif.<locals>.TestCase.foo      Avvvvvvr;   Nr_   r`   ra   r   r   r   r9   rO   r;   r8   TestCaserc    sD        $$T($;;  <;  r;   rg  r9   r-   r   r   c                   X    e Zd Zej                            dd          d             ZdS )rc  Fr   r   c                     ddk    sJ d S r   rO   r   s    r8   r9   z0TestFakePytest.test_skipif.<locals>.TestCase.foo  re  r;   Nrf  rO   r;   r8   rg  z,TestFakePytest.test_skipif.<locals>.TestCase  sD        $$U8$<<  =<  r;   rE  rg  rN  wasSuccessfulr   skippedrA   rg  rM  s      r8   test_skipifzTestFakePytest.test_skipif  s   	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''~a #x////	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''''r;   c                     G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ |j        d         d         dk    sJ d S )Nc                       e Zd Zd ZdS )*TestFakePytest.test_skip.<locals>.TestCasec                 >    t          j        d           ddk    sJ d S )Nr   r-   r   )r   skipr   s    r8   r9   z.TestFakePytest.test_skip.<locals>.TestCase.foo  s$     ***Avvvvvvr;   N)r_   r`   ra   r9   rO   r;   r8   rg  rq    s#            r;   rg  r9   r-   r   r   rj  rm  s      r8   	test_skipzTestFakePytest.test_skip  s    	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''~a #x//////r;   c                 :   |                      t                    }t          j        |           t	          t          j                            |d          d          5  	 d d d            n# 1 swxY w Y   t	          t          j                            |d          d          5 }|                    t          j	        d          
                                           d d d            n# 1 swxY w Y   t          j                            t          j        d|          5  |                     t"          d          5  t%          j                    }|                                dk    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	N)dirz__init__.pyrs   ztest_file.pyz                import unittest

                class TestCase(unittest.TestCase):
                    def test_passed(self):
                        pass
                r   zFake pytest module was usedr-   )ru   r   ri   r   rv   rx   r   rw   textwrapdedentlstripr   rb   objectrl   r   assertWarnsRegexUserWarningr   maincountTestCases)rA   tmpdirr|   rK  s       r8   	test_mainzTestFakePytest.test_main   sf   T**
"',,v}55s;; 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	"',,v~66<< 	GGHO %   VXX  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Zv|VV<< 	3 	3&&:  3 3 $(**++--22222	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   A,,A03A0%:C++C/2C/!F=.E8,F8E<	<F?E<	 FFFc                    t          j        t                    5  t          j        dt          d           d d d            n# 1 swxY w Y   	 t          j        t                    5  t          j        dt
          d           d d d            n# 1 swxY w Y   |                     d          # t          $ r Y nw xY wt          j        t          d          5  t          j        dt          d           d d d            n# 1 swxY w Y   	 t          j        t          d          5  t          j        dt          d           d d d            n# 1 swxY w Y   |                     d          # t          $ r Y d S w xY w)Nr9   r-   )
stacklevelrQ  r+  rP  )r   warnsr|  warningswarnDeprecationWarningrT  r.  r   s    r8   
test_warnszTestFakePytest.test_warns  s   {++ 	< 	<M%;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	4";// G Ge%7AFFFFG G G G G G G G G G G G G G G
 ))2333  	 	 	D	 {%888 	< 	<M%;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	4";e<<< @ @e[Q????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 ))2333  	 	 	DD	s   AA
AB1 (BB1 BB1 BB1 1
B>=B>DD	D	E5 ,E	E5 EE5 EE5 5
FFN)
r_   r`   ra   rN  rX  r`  rn  rt  r  r  rO   r;   r8   rC  rC    s}          4 4 4      ( ( ((	0 	0 	03 3 3(4 4 4 4 4r;   rC  c                       e Zd Zd Zd ZdS )TestTestingUtilsc                 $   t          j                    }t          |          }|                                 t	          d |                    |j                  D                       d         } |            |                                k    sJ d S )Nc              3   2   K   | ]}|d          dk    |V  dS )r-   r   NrO   .0xs     r8   	<genexpr>z:TestTestingUtils.test_process_namespace.<locals>.<genexpr>5  s*      DDQqTV^^1^^^^DDr;   r   )rl   r   r   testnextrn   gettersr   )rA   r   nsr  s       r8   test_process_namespacez'TestTestingUtils.test_process_namespace1  s}    Nq!!
			DDbggbj11DDDDDQGsuu      r;   c                     t                      }t          d |                    |j                  D                       d         } |            t	          j                    k    sJ d S )Nc              3   2   K   | ]}|d          dk    |V  dS )r-   net_if_addrsNrO   r  s     r8   r  z9TestTestingUtils.test_system_namespace.<locals>.<genexpr>:  s0      LLQqT^5K5K15K5K5K5KLLr;   r   )r#   r  rn   r  rl   r  )rA   r  r  s      r8   test_system_namespacez&TestTestingUtils.test_system_namespace8  sb    LLbggbj11LLLLLQOsuu+--------r;   N)r_   r`   ra   r  r  rO   r;   r8   r  r  0  s2        ! ! !. . . . .r;   r  c                       e Zd Zd ZdS )TestOtherUtilsc                     t           t          j        dd          ddd                    sJ t          t                                rJ d S )Nr9   za b cr-   r   r<   )r   r   
namedtupletupler   s    r8   test_is_namedtuplez!TestOtherUtils.test_is_namedtuple?  sP    C[3E7CCAq!LLMMMMM )))))))r;   N)r_   r`   ra   r  rO   r;   r8   r  r  >  s#        * * * * *r;   r  )=__doc__r   r   ri   r   r   r   rw  rE  r  r   rl   psutil.testsr   r   r   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*   rd   r   r   r   r   r_  r  rC  r  r  rO   r;   r8   <module>r     s   8 7      				                                       & & & & & & $ $ $ $ $ $ ( ( ( ( ( ( # # # # # # ! ! ! ! ! ! 1 1 1 1 1 1       # # # # # # ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' $ $ $ $ $ $ ) ) ) ) ) ) # # # # # #       ' ' ' ' ' ' $ $ $ $ $ $ 4 4 4 4 4 4 & & & & & & & & & & & & * * * * * *       & & & & & &       ) ) ) ) ) ) # # # # # # $ $ $ $ $ $ ) ) ) ) ) ) ' ' ' ' ' ' " " " " " " ( ( ( ( ( ( & & & & & & % % % % % %B( B( B( B( B( B( B( B(J$ $ $ $ $ $ $ $P*# *# *# *# *#n *# *# *#ZI+ I+ I+ I+ I+~ I+ I+ I+XE1 E1 E1 E1 E1> E1 E1 E1P h''H9 H9 H9 H9 H9~ H9 H9 ('H9Vr4 r4 r4 r4 r4^ r4 r4 r4j. . . . .~ . . .* * * * *^ * * * * *r;   