
    ztf                        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-  G d" d#e(      Z. G d$ d%e(      Z/ G d& d'e(      Z0 G d( d)e(      Z1 ejd                  d*d+      Z3 G d, d-e(      Z4 e
jj                  ejl                  jo                  e'       d.       G d/ d0e(             Z8e9d1k(  rdd2l:m;Z;  e;e<       yy)3zMiscellaneous tests.    N)POSIX)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activated)parse_environ_block)supports_ipv6)wrap_numbers)PY3)FileNotFoundError)redirect_stderr)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)
PYTHON_EXE)PYTHON_EXE_ENV)	QEMU_USER)SCRIPTS_DIR)PsutilTestCase)mock)process_namespace)reload_module)sh)system_namespacec                   j    e Zd Zd ZefdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zy)TestSpecialMethodsc                 H   | j                  t              5  t        j                  j                  j                  ddz         d d d        | j                  t        j                        5  t        j                  ddz         d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)N      )assertRaisesOverflowErrorpsutil_psplatformcextcheck_pid_rangeNoSuchProcessProcessselfs    `/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range>   s    }- 	<##33AsF;	<v334 	#NN1c6"	# 	#	< 	<	# 	#s   -B*BBB!c                    t        j                  | j                         j                        } ||      }| j	                  d|       | j	                  d|j                  z  |       | j	                  dt        |j                               z  |j                  dd             | j	                  d|       | j                  d|       |j                          |j                           ||      }| j	                  d|       | j	                  d|       t        j                  j                  t         j                  d	t        j                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j	                  d|       | j                  d|       d d d        t        j                  j                  t         j                  d	t        j"                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j	                  d|       | j                  d|       d d d        t        j                  j                  t         j                  d	t        j$                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j                  d|       d d d        y # 1 sw Y   sxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'nameside_effectzstatus='zombie'zname=
terminated)r)   r.   spawn_testprocpidassertInstrr4   replaceassertNotIn	terminatewaitr   patchobjectZombieProcessosgetpidr-   AccessDenied)r0   funcprs       r1   test_process__repr__z'TestSpecialMethods.test_process__repr__D   s   NN4..0445G&*h&*#affh-'9h)G	
 	i#a(		G+Q/k1%ZZNN,,RYY[9  
 		)
  AQAMM(QUU*A.MM+Q/Wa(		) ZZNN,,RYY[9  
 		)
  AQAMM(QUU*A.MM,*Wa(		) ZZNN++BIIK8  
 	)
  AQAMM(QUU*A.Wa(	) 	))		) 		)		) 		)	) 	)s'   (A L9%A M"AM9MMMc                 0    | j                  t               y )N)rF   )rI   r;   r/   s    r1   test_process__str__z&TestSpecialMethods.test_process__str__r   s    !!s!+    c                 ^    | j                  t        t        j                               d       y )Nzpsutil.Error())assertEqualreprr)   Errorr/   s    r1   test_error__repr__z%TestSpecialMethods.test_error__repr__u   s    flln-/?@rL   c                 ^    | j                  t        t        j                               d       y )N )rN   r;   r)   rP   r/   s    r1   test_error__str__z$TestSpecialMethods.test_error__str__x   s    V\\^,b1rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r4   msgr4   rW   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rN   rO   r)   r-   r/   s    r1   test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__{   sP    %%c*+K	
 	%%cEBCC	
rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrV   z"process no longer exists (pid=321)r4   rW   rX   msg (pid=321, name='name'))rN   r;   r)   r-   r/   s    r1   test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__   sP    $$S)*0	
 	$$Sv5AB(	
rL   c           
          | j                  t        t        j                  d            d       | j                  t        t        j                  dddd            d       y )NrV   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r4   @  foor4   ppidrW   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rN   rO   r)   rB   r/   s    r1   test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__   sT    %%c*+*	

 	%%cSeLMM	
rL   c           
          | j                  t        t        j                  d            d       | j                  t        t        j                  dddd            d       y )NrV   z,PID still exists but it's a zombie (pid=321)r4   r^   r_   r`   z$foo (pid=321, ppid=320, name='name'))rN   r;   r)   rB   r/   s    r1   test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__   sR    $$S)*:	
 	$$SvCUKL2	
rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrV   zpsutil.AccessDenied(pid=321)r4   rW   rX   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rN   rO   r)   rE   r/   s    r1   test_access_denied__repr__z-TestSpecialMethods.test_access_denied__repr__   sP    $$S)*,J	
 	$$Sv5ABB	
rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrV   z	(pid=321)r4   rW   rX   r[   )rN   r;   r)   rE   r/   s    r1   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sJ    V0056D##Cf%@A(	
rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rV   r4   r9   r4   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rN   rO   r)   TimeoutExpiredr/   s    r1   test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__   sR    &&q)*M	
 	&&qc?@-	
rL   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )Nrj   ztimeout after 5 secondsrV   r4   rk   z.timeout after 5 seconds (pid=321, name='name'))rN   r;   r)   rl   r/   s    r1   test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__   sP    %%a()+D	
 	%%aSv>?<	
rL   c                     t        j                         }t        j                         }| j                  ||       d|_        | j	                  ||       | j	                  |d       y )N)r   r   r_   )r)   r.   rN   _identassertNotEqual)r0   p1p2s      r1   test_process__eq__z%TestSpecialMethods.test_process__eq__   sQ    ^^^^R 	B#B&rL   c                     t        t        j                         t        j                         g      }| j                  t	        |      d       y )N   )setr)   r.   rN   len)r0   ss     r1   test_process__hash__z'TestSpecialMethods.test_process__hash__   s3    !6>>#345Q#rL   N)__name__
__module____qualname__r2   rO   rI   rK   rQ   rT   rY   r\   rb   rd   rf   rh   rm   ro   ru   r{    rL   r1   r#   r#   =   sT    # )- ,)\,A2

	



	

'$rL   r#   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestMiscc                    t        t              }|D ]%  }|dv r|j                  d      r	 t        |       ' t        j
                  D ]  }| j                  ||        y # t        $ re |t        j
                  vrPt        t        |      }|Y |j                  0d|j                  j                         vr| j                  d|z        Y w xY w)N)r   longteststestPermissionErrorProcessLookupError_
deprecatedz%r not in psutil.__all__)dirr)   
startswith
__import__ImportError__all__getattr__doc__lowerfailr:   )r0   
dir_psutilr4   funs       r1   test__all__zTestMisc.test__all__   s    [
 	OD   ??3'Ot$	O8 NN 	,DMM$
+	, # 	O6>>1%fd3;$KK3 ,CKK4E4E4G G"&)),F,M"NN	Os   A""-C<CCc           
          | j                  dj                  t        j                  D cg c]  }t	        |       c}      t        j
                         y c c}w )N.)rN   joinr)   version_infor;   __version__)r0   xs     r1   test_versionzTestMisc.test_version   s<    HHf&9&9:c!f:;V=O=O	
:s   Ac                 z    t        j                         }d|_        | j                  d|j	                                y )N1r_   )r)   r.   r_   r=   as_dict)r0   rG   s     r1   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names  s+    NN		,rL   c           
      x     fd}t        j                         } |t        j                         j                                t        |      }|j	                  |j
                  d      D ]1  \  }} j                  ||      5  	  |       } ||       d d d        3 t               }|j	                  |j
                        D ]A  \  }}|dv rt        r|dk(  r j                  |      5  	  |       } ||       d d d        C t        j                  t        j                  t        j                  dd	d
                  } j                  |t         j                          j!                  |j"                  d        j!                  |j$                  d	        j!                  |j&                  d
       t        j                  t        j                  t        j(                  dd	dd
                  } j                  |t         j(                          j!                  |j"                  d        j!                  |j*                  d        j!                  |j$                  d	        j!                  |j&                  d
       t        j                  t        j                  t        j                  dd	d
                  } j                  |t         j                          j!                  |j"                  d        j!                  |j$                  d	        j!                  |j&                  d
       t        j                  t        j                  t        j,                  ddd	                  } j                  |t         j,                          j!                  |j.                  d        j!                  |j"                  d        j!                  |j$                  d	       y # t         j                  $ r Y ow xY w# 1 sw Y   xY w# t         j                  $ r Y -w xY w# 1 sw Y   uxY w)Nc                     t        j                  t        j                  |              t        j                  |       }t        j                  |      }j	                  | |       y N)jsonloadsdumpspicklerN   )retabr0   s      r1   checkz*TestMisc.test_serialization.<locals>.check  sB    JJtzz#'S!AQAS!$rL   T)clear_cache)procr4   >   win_service_getwin_service_iternet_if_stats)r4   i  r4   rW   )r9   r4   rW   *   )r9   r4   ra   rW   {   !   )secondsr9   r4   )r)   r.   r   r   itergetterssubTestrP   r!   r   rE   r   r   r   r-   assertIsInstancerN   r9   r4   rW   rB   ra   rl   r   )r0   r   r   nsr   r4   r   r   s   `       r1   test_serializationzTestMisc.test_serialization  sb   	% ~~fnn&&()t$> 	IC4d3 %C #J 	 , 	IC>>T^34( %C #J 	  LLLL$$FF

 	a!5!56%(&LLLL$$FO

 	a!5!56%$(&LLLL,,6uMN
 	a!4!45$(&LLLL%%bdH

 	a!6!67B'%({ ||  ( **  s`   PO.P-P//P6P/.PPPPP	P,(P/+P,,P//P9	c                    t         j                  j                  t        j                  dt        j
                        5 }t        j                          |j                  sJ 	 d d d        t         j                  j                  t        j                  dt        j                  d            5 }t        j                          |j                  sJ 	 d d d        t         j                  j                  t        j                  dt              5 }| j                  t              5  t        j                          d d d        |j                  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# 1 sw Y   y xY w)Ncreate_timer5   rw   )
r   r@   rA   r)   r.   rE   calledrB   
ValueErrorr'   )r0   meths     r1   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creationb  s1    ZZNNMv7J7J  
 	NN;;;		
 ZZNNMv7K7KA7N  
 	NN;;;		
 ZZNNMz  
 	"":. ! !;;;	 		 	
	 	! !	 	s;   #E.#E%E=$E19E=E"%E.1E:	6E==Fc                 4   t        j                  dd      5  | j                  t              5 }t	        t
               d d d        | j                  dt        j                        j                                d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nzpsutil._psplatform.cext.versionz0.0.0return_valuezversion conflict)
r   r@   r'   r   r   r)   r:   r;   	exceptionr   )r0   cms     r1   test_sanity_version_checkz"TestMisc.test_sanity_version_checkv  s    ZZ-G
 	I "";/ &2f%&MM,c",,.?.E.E.GH	I 	I& &	I 	Is!   BB;BB	BBN)	r|   r}   r~   r   r   r   r   r   r   r   rL   r1   r   r      s$    ,B

-O)v(IrL   r   c                   B    e Zd Zd ZeZd
dZd Zd Zd Zd Z	d Z
d	 Zy)TestMemoizeDecoratorc                     g | _         y r   callsr/   s    r1   setUpzTestMemoizeDecorator.setUp  s	    
rL   Nc           	         t        d      D ]=  } |       }| j                  | j                  di fg       |,| j                  ||       ? t        d      D ]A  } |d      }| j                  | j                  di fdi fg       |0| j                  ||       C t        d      D ]H  } |dd      }| j                  | j                  di fdi fdddifg       |7| j                  ||       J | j                  t        | j                        d       |j	                           |       }|| j                  ||       | j                  t        | j                        d       | j                  |j
                  d	       y )
Nr%   r   rw   rw   barr         My docstring.)rangerN   r   ry   cache_clearr   )r0   objexpected_retvalr   r   s        r1   run_againstz TestMemoizeDecorator.run_against  su   q 	7A%CTZZ2r(4*  o6		7 q 	7Aa&CTZZ2r(T2J)?@*  o6		7 q 	7AaQ-C

b"XbzD5!*3EF *  o6	7 	TZZ!,e&S/2TZZ!,o6rL   c                 L    t         fd       }| | j                  |d       y )Nc                  @    j                   j                  | |f       yr      r   appendargskwargs	baseclasss     r1   r_   z/TestMemoizeDecorator.test_function.<locals>.foo  s     OO""D&>2rL   r   r   )r	   r   )r0   r_   r   s     @r1   test_functionz"TestMemoizeDecorator.test_function  s/    		 
	
 	b1rL   c                     t          G fdd             }| | j                  |d        | j                   |       j                         d       y )Nc                   "    e Zd ZdZ fdZd Zy),TestMemoizeDecorator.test_class.<locals>.Foor   c                 @    j                   j                  ||f       y r   r   )r0   r   r   r   s      r1   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__  s    &&f~6rL   c                      y)Nr   r   r/   s    r1   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    rL   N)r|   r}   r~   r   r   r   r   s   r1   Foor     s    7rL   r   r   r   )r	   r   rN   r   r0   r   r   s     @r1   
test_classzTestMemoizeDecorator.test_class  sL    		 	 
	 	d3b)rL   c           	         t          G d d             }| j                   |        |              | j                  t         |             t         |                    | j                  t         |d            t         |d                   | j                  t         |dd            t         |dd                   | j	                  t         |d            t         |d                   y )Nc                       e Zd Zd Zy)6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                      y r   r   )r0   r   r   s      r1   r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__  s    rL   N)r|   r}   r~   r   r   rL   r1   Barr     s    rL   r   rw   r   )r_   r%   )r	   assertIsrN   idrr   )r0   r   s     r1   test_class_singletonz)TestMemoizeDecorator.test_class_singleton  s    		 	 
	 	ceSU#CEBsuI.CFRAZ0CqM*Bs1!},=>Bs1vJ3q6
3rL   c                 f     G fdd      }| | j                   |       j                  d       y )Nc                   ,    e Zd Zee fd              Zy)3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                  @    j                   j                  | |f       yr   r   r   s     r1   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar       &&f~6rL   N)r|   r}   r~   staticmethodr	   r   r   s   r1   r   r     s      rL   r   r   r   r   r   r   s     @r1   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  -    	 	 	B7rL   c                 f     G fdd      }| | j                   |       j                  d       y )Nc                   ,    e Zd Zee fd              Zy)2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                 @    j                   j                  ||f       yr   r   )clsr   r   r   s      r1   r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.bar  r   rL   N)r|   r}   r~   classmethodr	   r   r   s   r1   r   r    s      rL   r   r   r   r   r   s     @r1   test_classmethodz%TestMemoizeDecorator.test_classmethod  r   rL   c                    t         fd       }g t        d      D ]:  } |       }di f}| j                  ||       | j                  t              d       < t        d      D ];  } |d      }di f}| j                  ||       | j                  t              d       = t        d      D ]?  } |dd      }dddif}| j                  ||       | j                  t              d       A |j	                           |       }di f}| j                  ||       | j                  t              d	       | j                  |j
                  d
       y )Nc                  .    j                  d       | |fS )Foo docstring.Nr   )r   r   r   s     r1   r_   z/TestMemoizeDecorator.test_original.<locals>.foo  s     LL&>!rL   r%   r   rw   r   r   r   r   r   r	  )r	   r   rN   ry   r   r   )r0   r_   r   r   expectedr   s        @r1   test_originalz"TestMemoizeDecorator.test_original  sW    
	" 
	"
 q 	,A%CBxHS(+SZ+		, q 	,Aa&CbzHS(+SZ+		, q 	,AaQ-Cuaj)HS(+SZ+		, 	e8h'UQ'&67rL   r   )r|   r}   r~   r   tearDownr   r   r   r   r   r  r  r   rL   r1   r   r     s1     H7>2*4
8
8#8rL   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestCommonModulec                     G fdd      } |       }g |j                          |j                          | j                  t              d       g |j                   j                  |       |j                          |j                          | j                  t              d       g |j                   j	                  |       |j                          |j                          | j                  t              d       y )Nc                   "    e Zd Ze fd       Zy)9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                 (    j                  d        y r   r
  )r0   r   s    r1   r_   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.foo  s    T"rL   N)r|   r}   r~   r
   r_   r   s   r1   r   r    s    ## $#rL   r   r%   rw   )r_   rN   ry   cache_activatecache_deactivate)r0   r   fr   s      @r1   test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activated  s    	# 	#
 E		UQ' 	Q		UQ' 	q!		UQ'rL   c                 $   d }| j                  t        d       |d      di       | j                  t        d       |d      d |d      di       | j                  t        d       |d      d |d      d	i       | j                  t        d
       |d      d |d      di       | j                  t        d       |d      di       | j                  t        d       |d      di       | j                  t        d       |d      di       y )Nc                 2    t         r| j                         S | S r   )r   upper)rz   s    r1   kz4TestCommonModule.test_parse_environ_block.<locals>.k*  s     '1779.Q.rL   za=1 r   r   z	a=1 b=2  r   2za=1 b=  rS   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)rN   r   )r0   r  s     r1   test_parse_environ_blockz)TestCommonModule.test_parse_environ_block)  s   	/ 	,W5#}E/!C&#qvs1K	
 	.3afb0I	
 	 34sVS!C&#&	

 	,\:QsVSMJ,];afc]K,Z81S63-HrL   c                    | j                  t        j                         t               rt        j                  d      5 }d|_        t        j                          t               rJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ |j                  sJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ t        j                          |j                  sJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ t        j                          |j                  sJ 	 d d d        y | j                  t        j                        5  t        j                  t        j                  t        j                        }	 |j                  d       |j                          	 d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   y xY w# |j                          w xY w# 1 sw Y   y xY w)Nzpsutil._common.socketFzpsutil._common.socket.socketr5   z!psutil._common.socket.socket.bind)z::1r   )
addCleanupr   r   r   r@   has_ipv6socketerrorr   gaierrorr'   AF_INET6SOCK_STREAMbindclose)r0   rz   socks      r1   test_supports_ipv6z#TestCommonModule.test_supports_ipv6?  s   112?34 +"
))+(?**?+
 %%'.FLL  (?**xxx	  %%'.FOO  (?**))+xxx  %%'3"OO   (?**))+xxx    ""6<<0 !}}V__f6H6HI!IIj)JJL! !;+ +          JJL! !sT    (H/*H</I	8/I3I7I"I7/H9<I	II"I44I77J c                 L   t         j                  j                  t              }t	        |      sJ t	        t         j                  j                  |            rJ t        j                  dt        t        j                  d            5  | j                  t        t        |       d d d        t        j                  dt        t        j                  d            5  | j                  t        t        |       d d d        t        j                  dt        t        j                  d            5  t	        |      rJ 	 d d d        t        j                  dd      5  t	        |      rJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nzpsutil._common.os.statr_   r5   zpsutil._common.stat.S_ISREGFr   )rC   pathabspath__file__r   dirnamer   r@   OSErrorerrnoEPERMr'   EACCESENOENT)r0   	this_files     r1   test_isfile_strictz#TestCommonModule.test_isfile_strictf  sS   GGOOH-	Y''' !;<<<ZZ$'%++u2M
 	A g}i@	A ZZ$'%,,2N
 	A g}i@	A ZZ$'%,,2N
 	0 %Y////	0 ZZ5EJ 	0$Y////	0 	0	A 	A	A 	A	0 	0	0 	0s0   
E6F0FF6E?FFF#c                 P   t         rddlm} nddlm} t         |             5 }t	        d       t
        j                  j                          d d d        j                         }|j                  d      sJ |       | j                  d|       | j                  t        j                  dd      |       t         |             5 }t	        t        d             d d d        |j                         }| j                  d|       | j                  d	|       t         |             5 }t        d
d      }d|_        t	        |       d d d        |j                         }| j                  d|       | j                  d|       y # 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   WxY w)Nr   )StringIOhellozpsutil-debugz.pyc.pyzthis is an errorzignoring ValueErrorz'this is an error'r%   zno such filez/foo)r   ior7  r   r   sysstderrflushgetvaluer   r:   r-  r<   r   r/  filename)r0   r7  r  rW   excs        r1   
test_debugzTestCommonModule.test_debugy  sP   #)XZ( 	A'NJJ	 jjl~~n-2s2-gs#h&&vu5s; XZ( 	2A*/01	2jjl+S1*C0 XZ( 	A!^,C!CL#J	 jjlnc*fc"-	 		2 	2	 	s#   *FF'FFFF%c                    | j                         }t        |d      5 }|j                  d       d d d        | j                  t	        |      d       | j                  t        |      d       | j                  t        t        |dz          | j                  t        t
        |dz          | j                  t	        |dz   d      d       | j                  t        |dz   d      d       y # 1 sw Y   xY w)Nwr_   s   fooz-invalidr   )fallback)
get_testfnopenwriterN   r   r   r'   r   )r0   testfnr  s      r1   test_cat_bcatzTestCommonModule.test_cat_bcat  s    "&# 	!GGEN	Ve,fv.+S&:2EF+T6J3FGVj05A5Ifz1EBEJ	 	s   C**C3N)	r|   r}   r~   r  r  r)  r5  rA  rI  r   rL   r1   r  r    s#    (4I,%!N0&#<	KrL   r  r_   za b cc                       e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Z ej$                  e d      d        Zy)TestWrapNumbersc                 ,    t        j                          y r   )r   r   r/   s    r1   r   zTestWrapNumbers.setUp  s      "rL   c                 Z    dt        ddd      i}| j                  t        |d      |       y Ndisk1rj   disk_iontrN   r   r0   inputs     r1   test_first_callzTestWrapNumbers.test_first_call  s+    "Q1+&eY7?rL   c                     dt        ddd      i}| j                  t        |d      |       | j                  t        |d      |       y rN  rQ  rS  s     r1   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  sB    "Q1+&eY7?eY7?rL   c                 \   dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       y )	NrO  rj   rP  
               rQ  rS  s     r1   test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wrap  s    "Q1+&eY7?"RR.)eY7?"RR.)eY7?"RR.)eY7?rL   c           	         dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        d
dd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       y )NrO  d   rP  rY  n   Z      r[     2      (   rQ  rS  s     r1   	test_wrapzTestWrapNumbers.test_wrap  s   "S#s+,eY7?"S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
rL   c                    dt        ddd      i}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       y )NrO  rj   rP     rO  disk2   rQ  rS  s     r1   test_changing_keysz"TestWrapNumbers.test_changing_keys  s     "Q1+&eY7?Q1+1a<eY7?"Q1+&eY7?rL   c           	         t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      t        ddd      t        ddd      d       dt        ddd      i}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      t        ddd      t        ddd      d       y )Nre  r`  rk  rP  rY  ra  rO  rQ  rS  s     r1   test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wrap  s]   RR.2c33DEeY7?RR.2c33CD	*Rnr#sC/@A	

 "RR.)eY7? RR.2c33DEeY7?RR.2c33DEeY7?RR.2c33CD	*Rnr#sC/@A	
rL   c                     ddddd}| j                  t        |d      |       | j                  t        |d      |       ddddd}t        |d      }| j                  |d   d	   d
       y )N)	i,      #  R       ȷ  )	i  r%   i tU i   i  r   r   r   rm  )	6   rz  i $ i N r      r]  i     )	iU	  i  i"  rf  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3rP  )	r`  rr  rs  rt  ru  rv  rw  rx  ry  r}  r   i  )rN   r   )r0   douts      r1   test_real_datazTestWrapNumbers.test_real_data  s    MBHL	
 	a3Q7a3Q7 NBHL	
 1i(Y*C0rL   c                     dt        ddd      i}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   di i       | j                  |d   di i       y )NrO  rj   rP  r   rw   r%   rR  r   
cache_inforN   r0   rT  caches      r1   test_cache_first_callz%TestWrapNumbers.test_cache_first_call,  su    "Q1+&UI&'')qIu#56qIr?3qIr?3rL   c                 *   dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   dddddi       | j                  |d   di i       y )	NrO  rj   rP  rY  r   rw   )rO  r   )rO  rw   rO  r%   r%   r  r  s      r1   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice4  s    "Q1+&UI&"RR.)UI&'')qIu#56!HqKL	
 	qIr?3rL   c                     dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        j                  |d   dddddi        j                  |d   ddt	        d	g      ii        fd
}dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        |        dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        |        dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        j                  |d   dddddi        j                  |d   ddt	        d	g      ii       y )NrO  r`  rP  rY  r   rw   r  r%   r  c                      t        j                         } j                  | d   dddddi       j                  | d   ddt        dg      ii       y )	Nrw   rP  r   r`  r  r%   rO  r  )r   r  rN   rx   )r  r0   s    r1   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infoQ  sf     ++-Ea&'&'&) 	 a9w\N0C&DErL   rb  r[  rc  )rR  r   r  rN   rx   )r0   rT  r  r  s   `   r1   test_cache_wrapzTestWrapNumbers.test_cache_wrapA  s   "S#s+,UI& "S#r*+UI&'')qIu#56!HqMN	
 	qIl^9L/M#NO	" "S#r*+UI&'')qIu#56 "S#r*+UI&'')qIu#56 "S#r*+UI&'')qIu#56!HqMN	
 	qIl^9L/M#NOrL   c                 B   dt        ddd      i}t        |d       t        ddd      t        ddd      d}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   dddddi       | j                  |d	   di i       y )
NrO  rj   rP  rj  rk  r   rw   r  r%   r  r  s      r1   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keysz  s    "Q1+&UI&Q1+1a<UI&'')qIu#56!HqKL	
 	qIr?3rL   c                    dt        ddd      i}t        |d       t        |d       t        j                  d       | j                  t        j                         i i i f       t        j                  d       t        j                  d       y )NrO  rj   rP  z?!?)rR  r   r   rN   r  rS  s     r1   test_cache_clearz TestWrapNumbers.test_cache_clear  sq    "Q1+&UI&UI&  +002RRLA  +  'rL   not supportedc                    t        j                         rt        j                         st        j                  d      t        j                          t        j                          t        j                         }|D ]&  }| j                  d|       | j                  d|       ( t         j                  j                          t        j                         }|D ]&  }| j                  d|       | j                  d|       ( t         j                  j                          t        j                         }| j                  |i i i f       y )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)r)   disk_io_countersnet_io_countersunittestSkipTestr   r  r:   r   r=   rN   )r0   cachesr  s      r1   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apis  s   &&(0F0F0H##$@AA! ((* 	;EMM3U;MM2E:	; 	++-((* 	?EMM2E:6>	? 	**,((*"b".rL   N)r|   r}   r~   r   r  rU  rW  r^  rh  rn  rp  r  r  r  r  r  r  r  skipIfr   r  r   rL   r1   rK  rK    sv    # H@@
@+
Z	@
61*447Pr4( X__,,o>/ ?/rL   rK  zcan't locate scripts directoryc                      e Zd ZdZed        Zed        Zd Z ej                  e
 d      d        Zd Zd Zd	 Zd
 Z ej                  exr  ej$                          d      d        Zd Zd Zd Z ej                  ed      d        Z ej                  e d      d        Zd Zd Zd Zd Zd Zd Z  ej                  e! d      d        Z"d Z# ej                  e$ d      d        Z% ej                  e& d      d        Z' ej                  e( d       ej                  e) d      d                Z* ej                  e( d       ej                  e) d      d!               Z+y")#TestScriptsz-Tests for scripts in the "scripts" directory.c                 f   |j                  dt               dt        j                  j	                  t
        |       z  } t        | g}|D ]  }|j                  |        	 t        |fi |j                         }|sJ |       |S # t        $ r#}dt        |      v rt        |      cY d }~S  d }~ww xY w)Nenvz%srE   )
setdefaultr   rC   r+  r   r   r   r   r    stripRuntimeErrorr;   )exer   r   cmdargr  errs          r1   assert_stdoutzTestScripts.assert_stdout  s    %0RWW\\+s333 	CJJsO		S#F#))+C Cs
  	S)3x		s$   B 	B0B+$B0*B++B0c                     t         j                  j                  t        |       } t        rt        | d      n
t        |       5 }|j                         }d d d        t        j                         y # 1 sw Y   xY w)Nutf8)encoding)	rC   r+  r   r   r   rF  readastparse)r  r  srcs      r1   assert_syntaxzTestScripts.assert_syntax  sU    ggll;,+.T#'DI 	&&(C			#	 	s   A22A;c                 4   t        |       }t        j                  t              D ]q  }|j	                  d      sdt        j
                  j                  |      d   z   |vs=| j                  dt        j
                  j                  t        |      z         y )Nr9  test_r   zno test defined for %r script)	r   rC   listdirr   endswithr+  splitextr   r   )r0   methsr4   s      r1   test_coveragezTestScripts.test_coverage  s{    D	JJ{+ 	D}}U#RWW--d3A66eC))7'',,{D9: 		rL   z
POSIX onlyc                 P   t        j                  t              D ]  \  }}}|D ]  }|j                  d      st         j                  j                  ||      }t        j                  t        j                  |      t        j                     z  rm| j                  d|z          y )Nr9  z%r is not executable)
rC   walkr   r  r+  r   statS_IXUSRST_MODEr   )r0   rootdirsfilesfiler+  s         r1   test_executablezTestScripts.test_executable  s    !#!5 	GD$ G=='77<<d3D<<"''$-*EE"ii(>(EFF	G	GrL   c                 &    | j                  d       y )Nzdisk_usage.pyr  r/   s    r1   test_disk_usagezTestScripts.test_disk_usage  s    ?+rL   c                 &    | j                  d       y )Nzfree.pyr  r/   s    r1   	test_freezTestScripts.test_free  s    9%rL   c                 &    | j                  d       y )Nz
meminfo.pyr  r/   s    r1   test_meminfozTestScripts.test_meminfo      <(rL   c                 ^    | j                  dt        t        j                                      y )Nzprocinfo.pyr  r;   rC   rD   r/   s    r1   test_procinfozTestScripts.test_procinfo  s    =#biik*:;rL   zno usersc                 &    | j                  d       y )Nzwho.pyr  r/   s    r1   test_whozTestScripts.test_who  s    8$rL   c                 &    | j                  d       y )Nzps.pyr  r/   s    r1   test_pszTestScripts.test_ps  s    7#rL   c                 &    | j                  d       y )Nz	pstree.pyr  r/   s    r1   test_pstreezTestScripts.test_pstree      ;'rL   c                 &    | j                  d       y )Nz
netstat.pyr  r/   s    r1   test_netstatzTestScripts.test_netstat  r  rL   zQEMU user not supportedc                 &    | j                  d       y )Nzifconfig.pyr  r/   s    r1   test_ifconfigzTestScripts.test_ifconfig  s    =)rL   r  c                 ^    | j                  dt        t        j                                      y )Nzpmap.pyr  r/   s    r1   	test_pmapzTestScripts.test_pmap  s    9c"))+&67rL   c                     dt        j                         j                         j                  vrt	        j
                  d      | j                  d       y )Nussr  zprocsmem.py)r)   r.   memory_full_info_fieldsr  r  r  r/   s    r1   test_procsmemzTestScripts.test_procsmem  s?    (99;CCC##O44=)rL   c                 &    | j                  d       y )Nz
killall.pyr  r/   s    r1   test_killallzTestScripts.test_killall  r  rL   c                 &    | j                  d       y )Nz	nettop.pyr  r/   s    r1   test_nettopzTestScripts.test_nettop  r  rL   c                 &    | j                  d       y )Nztop.pyr  r/   s    r1   test_topzTestScripts.test_top
  s    8$rL   c                 &    | j                  d       y )Nziotop.pyr  r/   s    r1   
test_iotopzTestScripts.test_iotop  s    :&rL   c                     | j                  dt        j                         j                               }| j	                  t        t        j                               |       y )Nzpidof.py)r  r)   r.   r4   r:   r;   rC   rD   )r0   outputs     r1   
test_pidofzTestScripts.test_pidof  s=    ##J0@0E0E0GHc"))+&/rL   zWINDOWS onlyc                 &    | j                  d       y )Nzwinservices.pyr  r/   s    r1   test_winserviceszTestScripts.test_winservices  s    +,rL   c                 &    | j                  d       y )Nzcpu_distribution.pyr  r/   s    r1   test_cpu_distributionz!TestScripts.test_cpu_distribution  s    01rL   c                 x    t        j                         st        j                  d      | j	                  d       y )Nzno temperaturesztemperatures.py)r)   sensors_temperaturesr  r  r  r/   s    r1   test_temperatureszTestScripts.test_temperatures  s/    **,##$566,-rL   c                 x    t        j                         st        j                  d      | j	                  d       y )Nzno fanszfans.py)r)   sensors_fansr  r  r  r/   s    r1   	test_fanszTestScripts.test_fans!  s-    ""$##I..9%rL   z
no batteryc                 &    | j                  d       y )Nz
battery.pyr  r/   s    r1   test_batteryzTestScripts.test_battery'       	<(rL   c                 &    | j                  d       y )Nz
sensors.pyr  r/   s    r1   test_sensorszTestScripts.test_sensors,  r  rL   N),r|   r}   r~   r   r   r  r  r  r  r  r   r  r  r  r  r  r   r)   usersr  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   rL   r1   r  r    s    8    
 X__Y-G .G,&)< X__Z6$6
C% D%$() X__Y 9:* ;* X__(/:8 ;8*
)(%'0 X__[.1- 2-2 X__11?C. D.
 X__))?;& <&
 X__,,o>X___l3) 4 ?) X__,,o>X___l3) 4 ?)rL   r  __main__)run_from_name)=r   r  collectionsr0  r   rC   r   r!  r  r;  r  r)   psutil.testsr   r   psutil._commonr   r   r   r   r	   r
   r   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  
namedtuplerR  rK  r  r+  existsr  r|   psutil.tests.runnerr  r-  r   rL   r1   <module>r     sJ    
    	    
          ( " 1 . ( '  , * # $ ( , , ) 1 # ' " $ '  * &  )U$ U$zcI~ cIVF8> F8RRK~ RKt [E7+x/n x/@ 
{##%EA). A)A)H z1( rL   