
    XhG                         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&jn                  jq                  d23       G d4 d5e             Z9 G d6 d7e      Z: G d8 d9e      Z; G d: d;e      Z<y)<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
y)	TestRetryDecoratorz
time.sleepc                     t        ddd       fd       }t        t        d             |       dk(  sJ |j                  dk(  sJ y )N      retriesintervallogfunc                  :     r j                          ddz    ryNr-   r   popqueues   g/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/tests/test_testutils.pyfooz2TestRetryDecorator.test_retry_success.<locals>.fooF        		A         )r   listrange
call_countselfsleepr9   r7   s      @r8   test_retry_successz%TestRetryDecorator.test_retry_successB   sQ     
q1T	2	 
3	 U1Xuzz1$$$r;   c                     t        ddd       fd       }t        t        d            t        j                  t
              5   |        d d d        |j                  dk(  sJ y # 1 sw Y   xY w)Nr,   r-   r.   c                  :     r j                          ddz    ry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   sj     
q1T	2	 
3	 U1X]],- 	E	1$$$	 	s   A''A0c                     t        t        d      d        }t        j                  t              5   |        d d d        |j
                  dk(  sJ y # 1 sw Y   xY w)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`   sW    	a	0	 
1	 ]]9% 	E	1$$$	 	s   AAc                     t        dd d       d        }t        j                  t              5   |        d d d        |j                  dk(  sJ y # 1 sw Y   xY w)Nr,   r.   c                      ddz   y r3   rO   rO   r;   r8   r9   z4TestRetryDecorator.test_no_interval_arg.<locals>.foon   	    Er;   r   r   r   rG   rH   r?   rQ   s      r8   test_no_interval_argz'TestRetryDecorator.test_no_interval_argj   s\     
q4	5	 
6	 ]],- 	E	1$$$	 	   AAc                     t        ddd       d        }t        j                  t              5   |        d d d        |j                  dk(  sJ y # 1 sw Y   xY w)Nr,   r-   r.   c                      ddz   y 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   sZ    	q1T	2	 
3	 ]],- 	E	1$$$	 	rX   c                 z    t        j                  t              5  t        dd       d d d        y # 1 sw Y   y xY w)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   1:N)__name__
__module____qualname__r   patchrC   rI   rR   rW   r[   r^   rO   r;   r8   r*   r*   A   s    TZZ% % TZZ% % TZZ% % TZZ	% 	% TZZ% % TZZ( (r;   r*   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSyncTestUtilsc                 p   t        t        j                                t        t	        j
                               dz   }t        j                  dt        dg            5  t        j                  t        j                        5  t        |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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    RYY[!FKKM"U*ZZ5D!IN 	$v334 $U#$	$ 	$$ $	$ 	$s$   $B,B B, B)	%B,,B5c                     | j                         }t        |d      5 }|j                  d       d d d        t        |       t        j
                  j                  |      rJ y # 1 sw Y   6xY w)Nwr9   
get_testfnopenwriter'   ri   pathexistsrA   testfnfs      r8   test_wait_for_filez$TestSyncTestUtils.test_wait_for_file   s[    "&# 	!GGEN	f77>>&))))	 	s   A$$A-c                     | j                         }t        |d      5  	 d d d        t        |d       t        j                  j                  |      rJ y # 1 sw Y   8xY w)Nrs   T)empty)ru   rv   r'   ri   rx   ry   rA   r{   s     r8   test_wait_for_file_emptyz*TestSyncTestUtils.test_wait_for_file_empty   sS    "&# 		fD)77>>&))))	 	s   AAc                    | j                         }t        j                  dt        dg            5  t	        j
                  t              5  t        |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   sf    "ZZ5D!IN 	&w' &f%&	& 	&& &	& 	&s#   A5A)A5)A2	.A55A>c                     | j                         }t        |d      5 }|j                  d       d d d        t        |d       t        j
                  j                  |      sJ y # 1 sw Y   8xY w)Nrs   r9   F)deletert   rz   s      r8   test_wait_for_file_no_deletez.TestSyncTestUtils.test_wait_for_file_no_delete   sZ    "&# 	!GGEN	fU+ww~~f%%%	 	s   A&&A/c                     t        d        y )Nc                       yNr-   rO   rO   r;   r8   <lambda>z3TestSyncTestUtils.test_call_until.<locals>.<lambda>       r;   r   rA   s    r8   test_call_untilz!TestSyncTestUtils.test_call_until   s
    9r;   N)	r_   r`   ra   rq   r}   r   r   r   r   rO   r;   r8   rd   rd      s     $**&&r;   rd   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestFSTestUtilsc                 p    t        t              5 }|j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr)r   __file__moderA   r|   s     r8   test_open_textzTestFSTestUtils.test_open_text   s1    x  	!A66S= =	! 	! 	!   ,5c                 p    t        t              5 }|j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrb)r   r   r   r   s     r8   test_open_binaryz TestFSTestUtils.test_open_binary   s1    " 	"a66T>!>	" 	" 	"r   c                     | j                         }t        |       t        j                  j	                  |      sJ t        |       t        j                  j	                  |      sJ y rM   )ru   r!   ri   rx   isdirr   s     r8   test_safe_mkdirzTestFSTestUtils.test_safe_mkdir   sJ    "6ww}}V$$$6ww}}V$$$r;   c                 `   | j                         }t        |d      j                          t        |       t        j
                  j                  |      rJ t        |       t	        j                  |       t        |       t        j
                  j                  |      rJ t        j                  dt        t        j                  d            5 }t        j                  t              5  t        |       d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)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77>>&)))F
F77>>&)))ZZ"b0I
 	w' $F#$88O8	 	$ $	 	s$   D$,D8D$D!	D$$D-c                 X   | j                         }t        j                         }t        j                  |       t	        |      5  t        j                         t        j
                  j                  ||      k(  sJ 	 d d d        t        j                         |k(  sJ y # 1 sw Y   #xY wrM   )ru   ri   getcwdr   r   rx   join)rA   r{   bases      r8   
test_chdirzTestFSTestUtils.test_chdir   sx    "yy{
6] 	=99;"'',,tV"<<<<	=yy{d"""	= 	=s   8B  B)N)r_   r`   ra   r   r   r   r   r   rO   r;   r8   r   r      s    !"%(#r;   r   c                   f    e Zd Zd Zd Zej                  j                  e d      d        Z	d Z
y)TestProcessUtilsc                 .   | j                         }t        j                  |j                        }|j	                         sJ t                |j	                         rJ t        j                  j                  rJ t        j                  j                  rJ y rM   )	spawn_testprocrl   Processpid
is_runningr   tests_pids_started_subprocesses_started)rA   subpps      r8   test_reap_childrenz#TestProcessUtils.test_reap_children   sm    ""$NN488$||~~<<>!!<<----<<55555r;   c                    | j                         \  }}|j                  |j                  k7  sJ |j                         sJ |j                         sJ t        j                         j                         }||gk(  sJ t        j                         j                  d      }t        |      dk(  sJ ||v sJ ||v sJ |j                         t        j                         k(  sJ |j                         |j                  k(  sJ t        |       |j                         rJ |j                         sJ t        |       |j                         rJ y )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   s8    446zyyJNN***!!!$$&&&>>#,,.E7""">>#,,t,<8}!!!   X%%%zz|ryy{*** EII---%##%%%$$&&&*((****r;   
POSIX onlyreasonc                 p    | j                         \  }}|j                         t        j                  k(  sJ y rM   )spawn_zombiestatusrl   STATUS_ZOMBIE)rA   _parentzombies      r8   test_spawn_zombiez"TestProcessUtils.test_spawn_zombie   s.    ++-}}&"6"6666r;   c                    | j                         }t        |       | j                  |j                         t        |       t	        j
                  | j                         j                        }t        |       | j                  |j                         t        |       t        ddg}t	        j                  |t        j                  t        j                  t              }t        |       | j                  |j                         t        |       | j                         j                  }t        |       | j                  |j                         t        |       t        r`| j                         \  }}t        |       t        |       | j                  |j                         | j                  |j                         y y )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   sG   !!155!!NN4..0445!155!! A

 LL????	
 	!155!!!!#''#155!#!..0NFFffvzz*vzz* r;   N)r_   r`   ra   r   r   r   markskipifr   r   r   rO   r;   r8   r   r      s;    6+* [[E	,77 87%+r;   r   c                       e Zd Zd Zej
                  j                  e d      d        Zd Z	ej
                  j                  e d      ej
                  j                  e
xs ed      d               Zd Zy	)
TestNetUtilsc                     t               }t        d|f      5 }|j                         d   |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   addrr-   )r   r   getsockname)rA   portss      r8   r   zTestNetUtils.bind_socket(  sE    r4j) 	.Q==?1%---	. 	. 	.s	   <Ar   r   c                 v   | j                         }t        |      5 }|j                  t        j                  k(  sJ |j
                  t        j                  k(  sJ |j                         |k(  sJ t        j                  j                  |      sJ t        j                  t        j                  |      j                        sJ 	 d d d        | j                         }t        |t        j                        5 }|j
                  t        j                  k(  sJ 	 d d d        y # 1 sw Y   ^xY w# 1 sw Y   y xY w)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99 2 2222##%---77>>$'''==!6!6777	8  d):):; 	2t99 1 1111	2 	2	8 	8	2 	2s   B)D#9 D/#D,/D8c                 4   dt               f}t        t        j                  |      \  }}|5  |5  |j	                         |k(  sJ |j                         |k(  sJ |j	                         |k7  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz	127.0.0.1r   )r   r$   r   AF_INETr   getpeername)rA   r   serverclients       r8   test_tcp_socketpairz TestNetUtils.test_tcp_socketpair;  s    ]_-'TB 	0V 	0%%'4///%%'4///%%'4///		0 	0 	0 	0 	0 	0s#   BA B1BB	BBz*/var/run/log UNIX socket opened by defaultc                    t        j                         }|j                         }t        |j	                  d            rJ | j                         }t        |      \  }}	 t        j                  j                  |      sJ t        j                  t        j                  |      j                        sJ |j                         |z
  dk(  sJ t        t        |j	                  d                  dk(  sJ |j                         |k(  sJ |j                         |k(  sJ 	 |j!                          |j!                          y # |j!                          |j!                          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/   
 NN))+.q/@/@f/@/MNNN (.	77>>$'''==!6!677799;(A---/0A0Av0A0NO 
 %%'4///%%'4///LLNLLN LLNLLNs   !C E "E%c                 r   t               5 }t        j                  t              }t        j                  t              }|D ]R  }||j                  xx   dz  cc<   ||j                  t        j                  t        j                        xx   dz  cc<   T |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        y # 1 sw Y   y xY w)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0E LQXX!#all6#4#4fnnEF!KFL '1,,,FOO,1111FNN+q000++,111**+q000	1 	1 	1s   DD--D6N)r_   r`   ra   r   r   r   r   r   r   r   r   r   r   r  rO   r;   r8   r   r   '  s    .
 [[E	,72 820 [[E	,7[['"N   8,1r;   r   serialr   c                       e Zd Z e       d        Zd Z e       ej                  j                  e	d      ej                  j                  e
d      d                      Zd Zd Zd	 Zy
)TestMemLeakClassc                 T    fd}ddi| j                  |dd       d   dk(  sJ y )Nc                        dxx   dz  cc<   y )Ncntr-   rO   )r  s   r8   funz(TestMemLeakClass.test_times.<locals>.funs  s    J!OJr;   r  r   
      )timeswarmup_times   )execute)rA   r  r  s     @r8   
test_timeszTestMemLeakClass.test_timesq  s7    	 ajS45zRr;   c                    t        j                  t              5  | j                  d d       d d d        t        j                  t              5  | j                  d d       d d d        t        j                  t              5  | j                  d d       d d d        t        j                  t              5  | j                  d d	       d d d        t        j                  t              5  | j                  d
 d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   y xY w)Nc                       yNr   rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>|  r   r;   r   r  c                       yr  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>~  r   r;   c                       yr  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r   r;   )r  c                       yr  rO   rO   r;   r8   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r   r;   )	tolerancec                       y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LLL4	5]]:& 	2LLbL1	2]]:& 	0LLBL/	0 	0	- 	-	. 	.	5 	5	2 	2	0 	0s;   DDD(<D42E DD%(D14D= E	zskipped on CIr   zskipped during test coveragec                     g }|fd}	 t        j                  t        d      5  | j                  |d       d d d        ~y # 1 sw Y   ~y xY w# ~w xY w)Nc                 ,    | j                  ddz         y )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  sQ      	(	~[A -S,- - s'   A AA AA A Ac                       fd}g t         rdnd}t        j                  t        d|z         5   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                  |    t        t              } j                  | j                         j	                  |        y rM   )rv   r   
addCleanupr   r'  )r|   boxrA   s    r8   r  z1TestMemLeakClass.test_unclosed_files.<locals>.fun  s'    XAOOAGG$JJqMr;   fdhandlez	unclosed r*  )r   r   rG   r-  r  )rA   r  r   r2  s   `  @r8   test_unclosed_filesz$TestMemLeakClass.test_unclosed_files  sL    	
 t(]]>t1CD 	LL	 	 	s   AAc                 h    fd}g d}| j                  ||dd       t              |dz   k(  sJ y )Nc                  .     j                  ddz         y )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  sG    	' u18I 	 	
 2w%!)###r;   c                 L   d }| j                  t        |       t        j                  t              5  | j                  t        |       d d d        d }t        j                  t
              5  | j                  t        |       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nc                      ddz   y r3   rO   rO   r;   r8   fun_1z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_1  s	    Er;   c                       y rM   rO   rO   r;   r8   fun_2z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_2  s    r;   )execute_w_excrH   r   rG   r   r-  )rA   r<  r>  s      r8   test_execute_w_excz#TestMemLeakClass.test_execute_w_exc  s    	 	,e4]],- 	/w.	/	 ]]>* 	90%8	9 	9	/ 	/	9 	9s   B.BBB#N)r_   r`   ra   r    r  r!  r   r   r   r
   r   r.  r5  r9  r@  rO   r;   r8   r  r  o  s|       
0 [[
?;[[)GH I < 		$9r;   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestFakePytestc                     t        j                         }|j                  |       t        j                         }|j	                  |      }|S rM   )unittest	TestSuiteaddTestTextTestRunnerrun)rA   klasssuiterunnerresults        r8   run_test_classzTestFakePytest.run_test_class  s=    ""$e((*E"r;   c                    t        j                  t              5 }ddz   d d d        t        j                  t              sJ t        j                  t
        d      5 }t        d      # 1 sw Y   LxY w# 1 sw Y   nxY w	 t        j                  t
        d      5 }t        d      # 1 sw Y   nxY w	 | j                  d      # t        $ r}t        |      dk(  sJ Y d }~y 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 	bE	"(($5666
%8 	$BU##	 		$ 	$	4##Je< ( ''( ( (
 ))233  	<s8;;;;	<sA   A+A7+A47B C	 B++B40C	 		C,C''C,c                     t         j                  j                  d      d        } |       dk(  sJ t         j                  j                  d       G d d             } |       j                         dk(  sJ y )Nr  r	  c                       yr   rO   rO   r;   r8   r9   z%TestFakePytest.test_mark.<locals>.foo  s    r;   r-   c                       e Zd Zd Zy)%TestFakePytest.test_mark.<locals>.Fooc                      yr   rO   r   s    r8   rO  z)TestFakePytest.test_mark.<locals>.Foo.bar  s    r;   N)r_   r`   ra   rO  rO   r;   r8   Foor[    s    r;   r]  )r   r   xdist_grouprO  )rA   r9   r]  s      r8   	test_markzTestFakePytest.test_mark  s{    				%	%8	%	4	 
5	 uzz				%	%8	%	4	 	 
5	 uyy{ar;   c                     G d dt         j                        }| j                   |d            }|j                         sJ t	        |j
                        dk(  sJ |j
                  d   d   dk(  sJ  G d dt         j                        }| j                   |d            }|j                         sJ t	        |j
                        dk(  sJ y )Nc                   R    e Zd Zej                  j                  dd      d        Zy),TestFakePytest.test_skipif.<locals>.TestCaseTr   r   c                     ddk(  sJ y r   rO   r   s    r8   r9   z0TestFakePytest.test_skipif.<locals>.TestCase.foo      Avvr;   Nr_   r`   ra   r   r   r   r9   rO   r;   r8   TestCaserb    s*    $$T($; <r;   rf  r9   r-   r   r   c                   R    e Zd Zej                  j                  dd      d        Zy)rb  Fr   r   c                     ddk(  sJ y r   rO   r   s    r8   r9   z0TestFakePytest.test_skipif.<locals>.TestCase.foo  rd  r;   Nre  rO   r;   r8   rf  z,TestFakePytest.test_skipif.<locals>.TestCase  s*    $$U8$< =r;   rD  rf  rM  wasSuccessfulr   skippedrA   rf  rL  s      r8   test_skipifzTestFakePytest.test_skipif  s    	x(( 	
 $$Xe_5##%%%6>>"a'''~~a #x///	x(( 	
 $$Xe_5##%%%6>>"a'''r;   c                      G d dt         j                        }| j                   |d            }|j                         sJ t	        |j
                        dk(  sJ |j
                  d   d   dk(  sJ y )Nc                       e Zd Zd Zy)*TestFakePytest.test_skip.<locals>.TestCasec                 <    t        j                  d       ddk(  sJ y )Nr   r-   r   )r   skipr   s    r8   r9   z.TestFakePytest.test_skip.<locals>.TestCase.foo  s      *Avvr;   N)r_   r`   ra   r9   rO   r;   r8   rf  rp    s    r;   rf  r9   r-   r   r   ri  rl  s      r8   	test_skipzTestFakePytest.test_skip  so    	x(( 	
 $$Xe_5##%%%6>>"a'''~~a #x///r;   c                    | j                  t              }t        j                  |       t	        t        j
                  j                  |d      d      5  	 d d d        t	        t        j
                  j                  |d      d      5 }|j                  t        j                  d      j                                d d d        t        j                  j                  t        j                  d|      5  | j!                  t"        d      5  t%        j&                         }|j)                         dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)	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|   rJ  s       r8   	test_mainzTestFakePytest.test_main   s*   T*
"'',,v}5s; 		"'',,v~6< 	GGHOO %  VX	 ZZv||VV< 	3&&: 3 $((*++-222	3	3 	3	 		 	3 3	3 	3s<   E
3E4E+*E6E+EEE(	$E++E4c                    t        j                  t              5  t        j                  dt        d       d d d        	 t        j                  t              5  t        j                  dt
        d       d d d        | j                  d      # 1 sw Y   YxY w# 1 sw Y   &xY w# 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 Y   nxY w	 t        j                  t        d      5  t        j                  dt        d       d d d        n# 1 sw Y   nxY w| j                  d      # t        $ r Y y w xY w)Nr9   r-   )
stacklevelrP  r*  rO  )r   warnsr{  warningswarnDeprecationWarningrS  r-  r   s    r8   
test_warnszTestFakePytest.test_warns  s0   {+ 	<MM%;	<	4"";/ Ge%7AFG
 ))233	< 	<
G G 		 {%8 	<MM%;	< 	< 	<	4"";e< @e[Q?@ @ @
 ))233  		sk   B B' B6B' BB$ B' '	B32B3C77D E" E<	E" E
E" "	E.-E.N)
r_   r`   ra   rM  rW  r_  rm  rs  r  r  rO   r;   r8   rB  rB    s%    4  ((	03(4r;   rB  c                       e Zd Zd Zd Zy)TestTestingUtilsc                     t        j                         }t        |      }|j                          t	        d |j                  |j                        D              d   } |       |j                         k(  sJ y )Nc              3   2   K   | ]  }|d    dk(  s|  yw)r-   r   NrO   .0xs     r8   	<genexpr>z:TestTestingUtils.test_process_namespace.<locals>.<genexpr>5  s     DQqTV^1D   r   )rl   r   r   testnextrn   gettersr   )rA   r   nsr  s       r8   test_process_namespacez'TestTestingUtils.test_process_namespace1  sY    NNq!
	Dbggbjj1DDQGu   r;   c                     t               }t        d |j                  |j                        D              d   } |       t	        j
                         k(  sJ y )Nc              3   2   K   | ]  }|d    dk(  s|  yw)r-   net_if_addrsNrO   r  s     r8   r  z9TestTestingUtils.test_system_namespace.<locals>.<genexpr>:  s     LQqT^5K1Lr  r   )r#   r  rn   r  rl   r  )rA   r  r  s      r8   test_system_namespacez&TestTestingUtils.test_system_namespace8  sE    Lbggbjj1LLQOu++----r;   N)r_   r`   ra   r  r  rO   r;   r8   r  r  0  s    !.r;   r  c                       e Zd Zd Zy)TestOtherUtilsc                     t         t        j                  dd      ddd            sJ t        t                     rJ y )Nr9   za b cr-   r   r<   )r   r   
namedtupletupler   s    r8   test_is_namedtuplez!TestOtherUtils.test_is_namedtuple?  s<    C[33E7CAq!LMMM ))))r;   N)r_   r`   ra   r  rO   r;   r8   r  r  >  s    *r;   r  )=__doc__r   r   ri   r   r   r   rv  rD  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  rB  r  r  rO   r;   r8   <module>r     s9   8   	             & $ ( # ! 1  # ' ' ' $ ) #  ' $ 4 & & *  &  ) # $ ) ' " ( & %B( B(J$ $P*#n *#ZI+~ I+XE1> E1P h'H9~ H9 (H9Vr4^ r4j.~ .*^ *r;   