
    gH                     4   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
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m0Z0 dd%lm1Z1 dd&lm2Z2 dd'lm3Z3 dd(lm4Z4  G d) d*e      Z5 G d+ d,e      Z6 G d- d.e      Z7 G d/ d0e      Z8 G d1 d2e      Z9e)jt                  jw                  d34       G d5 d6e             Z< G d7 d8e      Z= G d9 d:e      Z> G d; d<e      Z?y)=z1Tests for testing utils (psutil.tests namespace).    N)FREEBSD)NETBSD)POSIX)open_binary)	open_text)supports_ipv6)PY3)
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)mock)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   P/var/www/openai/venv/lib/python3.12/site-packages/psutil/tests/test_testutils.pyfooz2TestRetryDecorator.test_retry_success.<locals>.fooI        		A         )r    listrange
call_countselfsleepr:   r8   s      @r9   test_retry_successz%TestRetryDecorator.test_retry_successE   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r4   r5   r7   s   r9   r:   z2TestRetryDecorator.test_retry_failure.<locals>.fooW   r;   r<      )r    r>   r?   r   raisesZeroDivisionErrorr@   rA   s      @r9   test_retry_failurez%TestRetryDecorator.test_retry_failureT   sc     
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.   )	exceptionr1   c                      t         N)	TypeError r<   r9   r:   z2TestRetryDecorator.test_exception_arg.<locals>.fooe   s    Or<   r   )r    
ValueErrorr   rH   rO   r@   rB   rC   r:   s      r9   test_exception_argz%TestRetryDecorator.test_exception_argc   sP    	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 r4   rP   rP   r<   r9   r:   z4TestRetryDecorator.test_no_interval_arg.<locals>.fooq   	    Er<   r   r    r   rH   rI   r@   rR   s      r9   test_no_interval_argz'TestRetryDecorator.test_no_interval_argm   sU     
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 r4   rP   rP   r<   r9   r:   z0TestRetryDecorator.test_retries_arg.<locals>.foo{   rV   r<   rW   rR   s      r9   test_retries_argz#TestRetryDecorator.test_retries_argy   sS    	q1T	2	 
3	 ]],-E .1$$$ .-rY   c                 z    t        j                  t              5  t        dd       d d d        y # 1 sw Y   y xY w)Nr-   r.   )r0   timeout)r   rH   rQ   r    )rB   rC   s     r9   test_retries_and_timeout_argsz0TestRetryDecorator.test_retries_and_timeout_args   s$    ]]:&!Q' '&&s   1:N)__name__
__module____qualname__r   patchrD   rJ   rS   rX   r\   r_   rP   r<   r9   r+   r+   D   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   rc   iterr   rH   NoSuchProcess)rB   nopids     r9   test_wait_for_pidz#TestSyncTestUtils.test_wait_for_pid   ss    RYY[!FKKM"U*ZZ5D!INv334U# 5 ON44 ONs$   $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wr:   
get_testfnopenwriter(   rj   pathexistsrB   testfnfs      r9   test_wait_for_filez$TestSyncTestUtils.test_wait_for_file   sT    "&#!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)Nrt   T)empty)rv   rw   r(   rj   ry   rz   rB   r|   s     r9   test_wait_for_file_emptyz*TestSyncTestUtils.test_wait_for_file_empty   sL    "&# 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)Nrg   r   rh   )rv   r   rc   ro   r   rH   IOErrorr(   r   s     r9   test_wait_for_file_no_filez,TestSyncTestUtils.test_wait_for_file_no_file   sV    "ZZ5D!INw'f% ( ON'' ONs#   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)Nrt   r:   F)deleteru   r{   s      r9   test_wait_for_file_no_deletez.TestSyncTestUtils.test_wait_for_file_no_delete   sS    "&#!GGEN fU+ww~~f%%% s   A&&A/c                     t        d        y )Nc                       yNr.   rP   rP   r<   r9   <lambda>z3TestSyncTestUtils.test_call_until.<locals>.<lambda>   s    1r<   r   rB   s    r9   test_call_untilz!TestSyncTestUtils.test_call_until   s
    9r<   N)	r`   ra   rb   rr   r~   r   r   r   r   rP   r<   r9   re   re      s     $**&&r<   re   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rB   r}   s     r9   test_open_textzTestFSTestUtils.test_open_text   s(    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     r9   test_open_binaryz TestFSTestUtils.test_open_binary   s(    "a66T>!> #""r   c                     | j                         }t        |       t        j                  j	                  |      sJ t        |       t        j                  j	                  |      sJ y rN   )rv   r"   rj   ry   isdirr   s     r9   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)Nrt   zpsutil.tests.os.stat )side_effect)rv   rw   closer#   rj   ry   rz   mkdirr   rc   OSErrorerrnoEINVALr   rH   called)rB   r|   ms      r9   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rN   )rv   rj   getcwdr   r   ry   join)rB   r|   bases      r9   
test_chdirzTestFSTestUtils.test_chdir   sp    "yy{
6]99;"'',,tV"<<<< yy{d""" ]s   8B  B)N)r`   ra   rb   r   r   r   r   r   rP   r<   r9   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 rN   )	spawn_testprocrm   Processpid
is_runningr   tests_pids_started_subprocesses_started)rB   subpps      r9   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   rm   r   childrenlenppidrj   rk   r&   )rB   child
grandchildr   s       r9   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 rN   )spawn_zombiestatusrm   STATUS_ZOMBIE)rB   _parentzombies      r9   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   rm   r   r   Popen
subprocessPIPEr   r   r   )rB   r   cmdr   parentr   s         r9   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`   ra   rb   r   r   r   markskipifr   r   r   rP   r<   r9   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        j                  t        d|f            5 }|j	                         d   |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   addrr.   )r   
contextlibclosingr   getsockname)rB   portss      r9   r   zTestNetUtils.bind_socket+  sG    "d <===?1%--- >==s   AAr   r   c                    | j                         }t        |      }t        j                  |      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                         }t        j                  |      5  |j                  t
        j                   k(  sJ 	 d d d        y # 1 sw Y   sxY w# 1 sw Y   y xY w)N)type)rv   r   r   r   familysocketAF_UNIXr   SOCK_STREAMr   rj   ry   rz   statS_ISSOCKst_mode
SOCK_DGRAM)rB   namesocks      r9   test_bind_unix_socketz"TestNetUtils.test_bind_unix_socket0  s    %%;;&..00099 2 2222##%---77>>$'''==!6!6777 &  6+<+<=%99 1 1111 &% &% &%s   B)E# EEE"c                    dt               f}t        t        j                  |      \  }}t	        j
                  |      5  t	        j
                  |      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   r   r   getpeername)rB   r   serverclients       r9   test_tcp_socketpairz TestNetUtils.test_tcp_socketpair@  s    ]_-'TB'##F+ ))+t333))+t333))+t333 , ('++ ('s%    B4A B(B4(B1	-B44B=z*/var/run/log UNIX socket opened by defaultc                    t        j                         }|j                         }t        |j	                  d            g k(  s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   )rm   r   num_fdsr   net_connectionsrv   r'   rj   ry   rz   r   r   r   r   r   r   r   )rB   r   r   r   r   r   s         r9   test_unix_socketpairz!TestNetUtils.test_unix_socketpairK  s6   
 NN))+'(9(9v(9(FG2M	
M (.	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   )rB   socksfamstypesr   s        r9   test_create_socketsz TestNetUtils.test_create_socketsg  s    **3/D++C0EQXX!#all6#4#4fnnEF!KF  '1,,,FOO,1111FNN+q000++,111**+q000 s   DD--D6N)r`   ra   rb   r   r   r   r   r   r   r   r   r   r   r
  rP   r<   r9   r   r   *  s    .
 [[E	,72 82	4 [[E	,7[['"N   80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.   rP   )r  s   r9   funz(TestMemLeakClass.test_times.<locals>.fun|  s    J!OJr<   r  r   
      )timeswarmup_times   )execute)rB   r  r  s     @r9   
test_timeszTestMemLeakClass.test_timesz  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   rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>      r<   r   r  c                       yr  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   c                       yr  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )r  c                       yr  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )	tolerancec                       yr  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )r0   )r   rH   rQ   r  r   s    r9   test_param_errzTestMemLeakClass.test_param_err  s    ]]:&LL!L, ']]:&LL"L- ']]:&LLL4 ']]:&LLbL1 ']]:&LLBL/ '& '&&&&&&&&&s;   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    r9   r  z+TestMemLeakClass.test_leak_mem.<locals>.fun  s    IIi$&'r<   z	extra-memmatchd   r  )r   rH   AssertionErrorr  )rB   r-  r  s      r9   test_leak_memzTestMemLeakClass.test_leak_mem  sN      	(	~[AS, B  B 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 rN   )rw   r   
addCleanupr   r+  )r}   boxrB   s    r9   r  z1TestMemLeakClass.test_unclosed_files.<locals>.fun  s'    XAOOAGG$JJqMr<   fdhandlez	unclosed r.  )r   r   rH   r1  r  )rB   r  r   r6  s   `  @r9   test_unclosed_filesz$TestMemLeakClass.test_unclosed_files  sD    	
 t(]]>t1CDLL EDDs   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   r9   r  z,TestMemLeakClass.test_tolerance.<locals>.fun  s    IIho&r<   r0  r   i  )r  r  r#  r.   )r  r   )rB   r  r  r-  s      @r9   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 r4   rP   rP   r<   r9   fun_1z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_1  s	    Er<   c                       y rN   rP   rP   r<   r9   fun_2z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_2  s    r<   )execute_w_excrI   r   rH   r   r1  )rB   r@  rB  s      r9   test_execute_w_excz#TestMemLeakClass.test_execute_w_exc  sz    	 	,e4]],-w. .	 ]]>*0%8 +* .- +*s   B.BBB#N)r`   ra   rb   r!   r  r%  r   r   r   r
   r   r2  r9  r=  rD  rP   r<   r9   r  r  x  s|       
0 [[
?;[[)GH I < 		$9r<   r  c                   x    e Zd Zd Zd Zd Zd Zej                  j                  e
 d      d        Zd Zd	 Zy
)TestFakePytestc                     t        j                         }|j                  |       t        j                         }|j	                  |      }|S rN   )unittest	TestSuiteaddTestTextTestRunnerrun)rB   klasssuiterunnerresults        r9   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   r:   r.  barexception not raisedz"foo" does not match "bar")	r   rH   rI   
isinstancevaluerQ   failr1  str)rB   cmerrs      r9   test_raiseszTestFakePytest.test_raises  s     12bE 3"(($5666
%8BU## 32 98	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   rP   rP   r<   r9   r:   z%TestFakePytest.test_mark.<locals>.foo  s    r<   r.   c                       e Zd Zd Zy)%TestFakePytest.test_mark.<locals>.Fooc                      yr   rP   r   s    r9   rS  z)TestFakePytest.test_mark.<locals>.Foo.bar  s    r<   N)r`   ra   rb   rS  rP   r<   r9   Foor_    s    r<   ra  )r   r   xdist_grouprS  )rB   r:   ra  s      r9   	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   rP   r   s    r9   r:   z0TestFakePytest.test_skipif.<locals>.TestCase.foo      Avvr<   Nr`   ra   rb   r   r   r   r:   rP   r<   r9   TestCaserf    s*    $$T($; <r<   rj  r:   r.   r   r   c                   R    e Zd Zej                  j                  dd      d        Zy)rf  Fr   r   c                     ddk(  sJ y r   rP   r   s    r9   r:   z0TestFakePytest.test_skipif.<locals>.TestCase.foo  rh  r<   Nri  rP   r<   r9   rj  z,TestFakePytest.test_skipif.<locals>.TestCase  s*    $$U8$< =r<   rH  rj  rQ  wasSuccessfulr   skippedrB   rj  rP  s      r9   test_skipifzTestFakePytest.test_skipif  s    	x(( 	
 $$Xe_5##%%%6>>"a'''~~a #x///	x(( 	
 $$Xe_5##%%%6>>"a'''r<   znot PY3r   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    r9   r:   z.TestFakePytest.test_skip.<locals>.TestCase.foo  s      *Avvr<   N)r`   ra   rb   r:   rP   r<   r9   rj  rt     s    r<   rj  r:   r.   r   r   rm  rp  s      r9   	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__.pyrt   ztest_file.pyz                import unittest

                class TestCase(unittest.TestCase):
                    def test_passed(self):
                        pass
                r   zFake pytest module was usedr.   )rv   r   rj   r   rw   ry   r   rx   textwrapdedentlstripr   rc   objectrm   r   assertWarnsRegexUserWarningr   maincountTestCases)rB   tmpdirr}   rN  s       r9   	test_mainzTestFakePytest.test_main
  s   T*
"'',,v}5s; <"'',,v~6<GGHOO %  VX = ZZv||VV<&&: $((*++-222	 =< <;<<  =<s<   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)Nr:   r.   )
stacklevelrT  r.  rS  )r   warnsr  warningswarnDeprecationWarningrW  r1  r   s    r9   
test_warnszTestFakePytest.test_warns  s   {+MM%; ,	4"";/e%7AF 0
 ))233 ,+
 0/ 		 {%8MM%; 988	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`   ra   rb   rQ  r[  rc  rq  r   r   r   r	   rw  r  r  rP   r<   r9   rF  rF    sJ    4  (( [[C	2	0 3	03(4r<   rF  c                       e Zd Zd Zd Zy)TestTestingUtilsc                    t        j                         }t        |      }|j                          |j	                  |j
                        D cg c]  }|d   dk(  s| c}d   d   } |       |j                         k(  sJ y c c}w )Nr.   r   r   )rm   r   r   testro   gettersr   )rB   r   nsxr  s        r9   test_process_namespacez'TestTestingUtils.test_process_namespace;  st    NNq!
	''"**-@-Q1q-@CAFu    As   BBc                     t               }|j                  |j                        D cg c]  }|d   dk(  s| c}d   d   } |       t        j                         k(  sJ y c c}w )Nr.   net_if_addrsr   )r$   ro   r  rm   r  )rB   r  r  r  s       r9   test_system_namespacez&TestTestingUtils.test_system_namespaceB  sa    ''"**-H-Q11Gq-HKANu++---- Is
   A"A"N)r`   ra   rb   r  r  rP   r<   r9   r  r  :  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 )Nr:   za b cr.   r   r=   )r   r   
namedtupletupler   s    r9   test_is_namedtuplez!TestOtherUtils.test_is_namedtupleI  s<    C[33E7CAq!LMMM ))))r<   N)r`   ra   rb   r  rP   r<   r9   r  r  H  s    *r<   r  )@__doc__r   r   r   rj   r   r   r   rz  rH  r  rm   psutil.testsr   r   r   psutil._commonr   r   r   psutil._compatr	   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+   re   r   r   r   r   rb  r  rF  r  r  rP   r<   r9   <module>r     s?   8    	            & $ (  # ! 1  # ' ' ' $ ) #  ' $ 4 & &  *  &  ) # $ ) ' " ( & %B( B(J$ $P*#n *#ZI+~ I+XK1> K1\ h'H9~ H9 (H9Vs4^ s4l.~ .*^ *r<   