o
    ì©Zhv  ã                   @   s  d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
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„ de"ƒZ(e )d d!¡Z*G d"d#„ d#e"ƒZ+e' ,ej- .e!¡ d$¡G d%d&„ d&e"ƒƒZ/e0d'krdd(l1m2Z2 e2e3ƒ dS dS ))z
Miscellaneous tests.
é    N)ÚLINUX)ÚPOSIX)ÚWINDOWS)Údebug)Úmemoize)Úmemoize_when_activated)Úsupports_ipv6)Úwrap_numbers)ÚPY3)Úredirect_stderr)ÚAPPVEYOR)Ú
CI_TESTING)ÚHAS_BATTERY)ÚHAS_MEMORY_MAPS)ÚHAS_NET_IO_COUNTERS)ÚHAS_SENSORS_BATTERY)ÚHAS_SENSORS_FANS)ÚHAS_SENSORS_TEMPERATURES)Ú
PYTHON_EXE)ÚROOT_DIR)ÚSCRIPTS_DIR)ÚPsutilTestCase)Úimport_module_by_path)Úmock)Úreload_module)Úsh)Úunittestc                   @   sä   e Zd Zefdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Ze ed+¡d,d-„ ƒZd.d/„ Zd0d1„ Zd2d3„ Zd4S )5ÚTestMiscc                 C   s   t  |  ¡ j¡}||ƒ}|  d|¡ |  d|j |¡ |  dt| ¡ ƒ | dd¡¡ |  d|¡ |  d|¡ | 	¡  | 
¡  ||ƒ}|  d|¡ |  d|¡ tjjt jd	t  t ¡ ¡d
% t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W d   ƒ n1 s†w   Y  tjjt jd	t  t ¡ ¡d
% t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W d   ƒ n1 sÂw   Y  tjjt jd	t  t ¡ ¡d
  t  ¡ }||ƒ}|  d|j |¡ |  d|¡ W d   ƒ d S 1 sùw   Y  d S )Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'Úname©Zside_effectzstatus='zombie'zname=Z
terminated)ÚpsutilÚProcessZspawn_testprocÚpidÚassertInÚstrr   ÚreplaceÚassertNotInÚ	terminateÚwaitr   ÚpatchÚobjectÚZombieProcessÚosÚgetpidÚNoSuchProcessÚAccessDenied)ÚselfÚfuncÚpÚr© r4   úM/var/www/html/lang_env/lib/python3.10/site-packages/psutil/tests/test_misc.pyÚtest_process__repr__;   sP   
ÿÿúÿúÿ"ûzTestMisc.test_process__repr__c                 C   s   | j td d S )N)r1   )r6   r$   ©r0   r4   r4   r5   Útest_process__str___   ó   zTestMisc.test_process__str__c                 C   ó6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NéA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r   Úmsg©r   r<   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))ÚassertEqualÚreprr    r.   r7   r4   r4   r5   Útest_no_such_process__repr__b   ó   þþz%TestMisc.test_no_such_process__repr__c                 C   r:   )Nr;   z"process no longer exists (pid=321)r   r<   r=   úmsg (pid=321, name='name'))r>   r$   r    r.   r7   r4   r4   r5   Útest_no_such_process__str__j   rA   z$TestMisc.test_no_such_process__str__c              	   C   ó8   |   tt d¡ƒd¡ |   ttjdddddƒd¡ d S )Nr;   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r   é@  Úfoo©r   Zppidr<   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))r>   r?   r    r+   r7   r4   r4   r5   Útest_zombie_process__repr__r   s   þþz$TestMisc.test_zombie_process__repr__c              	   C   rD   )Nr;   z,PID still exists but it's a zombie (pid=321)r   rE   rF   rG   z$foo (pid=321, ppid=320, name='name'))r>   r$   r    r+   r7   r4   r4   r5   Útest_zombie_process__str__{   s   þþz#TestMisc.test_zombie_process__str__c                 C   r:   )Nr;   zpsutil.AccessDenied(pid=321)r   r<   r=   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))r>   r?   r    r/   r7   r4   r4   r5   Útest_access_denied__repr__ƒ   rA   z#TestMisc.test_access_denied__repr__c                 C   r:   )Nr;   z	(pid=321)r   r<   r=   rB   )r>   r$   r    r/   r7   r4   r4   r5   Útest_access_denied__str__‹   rA   z"TestMisc.test_access_denied__str__c                 C   r:   )Né   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')r;   r   ©r"   r   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))r>   r?   r    ÚTimeoutExpiredr7   r4   r4   r5   Útest_timeout_expired__repr__“   rA   z%TestMisc.test_timeout_expired__repr__c                 C   r:   )NrL   ztimeout after 5 secondsr;   r   rM   z.timeout after 5 seconds (pid=321, name='name'))r>   r$   r    rN   r7   r4   r4   r5   Útest_timeout_expired__str__œ   rA   z$TestMisc.test_timeout_expired__str__c                 C   s>   t  ¡ }t  ¡ }|  ||¡ d|_|  ||¡ |  |d¡ d S )N)r   r   rF   )r    r!   r>   Ú_identZassertNotEqual)r0   Úp1Zp2r4   r4   r5   Útest_process__eq__¤   s   zTestMisc.test_process__eq__c                 C   s(   t t ¡ t ¡ gƒ}|  t|ƒd¡ d S )Né   )Úsetr    r!   r>   Úlen)r0   Úsr4   r4   r5   Útest_process__hash__¬   s   zTestMisc.test_process__hash__c              	   C   s¨   t tƒ}|D ]?}|dv rq| d¡sEzt|ƒ W q tyD   |tjvrBtt|ƒ}|d u r/Y q|jd urBd|j ¡ vrB|  	d| ¡ Y qw qtjD ]}|  
||¡ qId S )N)ÚlongZtestsÚtestÚPermissionErrorÚProcessLookupErrorÚ_Ú
deprecatedz%r not in psutil.__all__)Údirr    Ú
startswithÚ
__import__ÚImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr#   )r0   Z
dir_psutilr   Zfunr4   r4   r5   Útest__all__°   s*   



€ùý
ÿzTestMisc.test__all__c                 C   s$   |   d dd„ tjD ƒ¡tj¡ d S )NÚ.c                 S   s   g | ]}t |ƒ‘qS r4   )r$   )Ú.0Úxr4   r4   r5   Ú
<listcomp>Ê   s    z)TestMisc.test_version.<locals>.<listcomp>)r>   Újoinr    Úversion_infoÚ__version__r7   r4   r4   r5   Útest_versionÉ   s   ÿzTestMisc.test_versionc                 C   s"   t  ¡ }d|_|  d| ¡ ¡ d S )NÚ1rF   )r    r!   rF   r&   Úas_dict)r0   r2   r4   r4   r5   Ú!test_process_as_dict_no_new_namesÍ   s   z*TestMisc.test_process_as_dict_no_new_namesc                    s  t ‡ fdd„ƒ}g ‰ tdƒD ]}|ƒ }di f}|  ||¡ |  tˆ ƒd¡ qtdƒD ]}|dƒ}di f}|  ||¡ |  tˆ ƒd¡ q*tdƒD ]}|ddd}dddif}|  ||¡ |  tˆ ƒd	¡ qG| ¡  |ƒ }di f}|  ||¡ |  tˆ ƒd
¡ |  |jd¡ d S )Nc                     s   ˆ   d¡ | |fS )úfoo docstringN©Úappend)ÚargsÚkwargs©Zcallsr4   r5   rF   Ô   s   
z"TestMisc.test_memoize.<locals>.fooé   r4   rT   )rT   )Úbarr{   é   é   rt   )r   Úranger>   rV   Úcache_clearre   )r0   rF   rk   ÚretÚexpectedr4   ry   r5   Útest_memoizeÓ   s0   zTestMisc.test_memoizec                    s    G ‡ fdd„dƒ}|ƒ }g ‰ |  ¡  |  ¡  |  tˆ ƒd¡ g ‰ |j  |¡ |  ¡  |  ¡  |  tˆ ƒd¡ g ‰ |j  |¡ |  ¡  |  ¡  |  tˆ ƒd¡ d S )Nc                       s   e Zd Ze‡ fdd„ƒZdS )z1TestMisc.test_memoize_when_activated.<locals>.Fooc                    s   ˆ   d ¡ d S ©Nru   r7   ry   r4   r5   rF   ù   ó   z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)Ú__name__Ú
__module__Ú__qualname__r   rF   r4   ry   r4   r5   ÚFoo÷   s    rˆ   rz   rT   )rF   r>   rV   Zcache_activateZcache_deactivate)r0   rˆ   Úfr4   ry   r5   Útest_memoize_when_activatedö   s    z$TestMisc.test_memoize_when_activatedc                 C   sØ   ddl m} dd„ }|  |dƒ|dƒdi¡ |  |dƒ|dƒd|d	ƒd
i¡ |  |dƒ|dƒd|d	ƒdi¡ |  |dƒ|dƒd|d	ƒd
i¡ |  |dƒ|dƒdi¡ |  |dƒ|dƒdi¡ |  |dƒ|dƒdi¡ d S )Nr   )Úparse_environ_blockc                 S   s   t r|  ¡ S | S rƒ   )r   Úupper)rW   r4   r4   r5   Úk  r9   z,TestMisc.test_parse_environ_block.<locals>.kza=1 Úarq   z	a=1 b=2  ÚbÚ2za=1 b=  Ú za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)Úpsutil._commonr‹   r>   )r0   r‹   r   r4   r4   r5   Útest_parse_environ_block  s"   

ÿ
ÿ
ÿ
ÿz!TestMisc.test_parse_environ_blockc              	   C   s°  |   tj¡ tƒ r§t d¡}d|_t ¡  tƒ rJ ‚W d   ƒ n1 s%w   Y  t ¡  tjdtjd}tƒ r<J ‚|jsAJ ‚W d   ƒ n1 sKw   Y  t ¡  tjdtj	d}tƒ rbJ ‚t ¡  |jskJ ‚W d   ƒ n1 suw   Y  t ¡  tjdtj	d}tƒ rŒJ ‚t ¡  |js•J ‚W d   ƒ d S 1 s w   Y  d S |  
t¡" t tjtj¡}z| d¡ W | ¡  n| ¡  w W d   ƒ d S 1 sÑw   Y  d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr   z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   r   r   r)   Úhas_ipv6ÚsocketÚerrorÚcalledÚgaierrorÚassertRaisesÚ	ExceptionÚAF_INET6ÚSOCK_STREAMÚbindÚclose)r0   rW   Úsockr4   r4   r5   Útest_supports_ipv6&  sN   ýÿ
ýÿ
üÿ
"ü"ûzTestMisc.test_supports_ipv6c                 C   sB  ddl m} tj t¡}||ƒsJ ‚|tj |¡ƒrJ ‚tjdt	t
jdƒd |  t	||¡ W d   ƒ n1 s9w   Y  tjdt	t
jdƒd |  t	||¡ W d   ƒ n1 s[w   Y  tjdt	t
jdƒd ||ƒrrJ ‚W d   ƒ n1 s|w   Y  tjddd ||ƒrJ ‚W d   ƒ d S 1 sšw   Y  d S )	Nr   )Úisfile_strictzpsutil._common.os.statrF   r   zpsutil._common.stat.S_ISREGF©Úreturn_value)r’   r¡   r,   ÚpathÚabspathÚ__file__Údirnamer   r)   ÚOSErrorÚerrnoÚEPERMr™   ÚEACCESÚENOENT)r0   r¡   Z	this_filer4   r4   r5   Útest_isfile_strictI  s,   
ÿþ
ÿþ
ÿþ"ÿzTestMisc.test_isfile_strictc                    s¬   ‡ fdd„}|t  ¡  ¡ ƒ |t  ¡ ƒ |t  ¡ ƒ |t  ¡ ƒ |t jddƒ |t  ¡ ƒ tr7t	j
 d¡s7nts?|t  ¡ ƒ |t  ¡ ƒ |t  t	 ¡ ¡ƒ |t  ¡ ƒ d S )Nc                    s<   t d urt  t  | ¡¡ t | ¡}t |¡}ˆ  | |¡ d S rƒ   )ÚjsonÚloadsÚdumpsÚpickler>   )r€   rŽ   r   r7   r4   r5   Úcheck[  s
   

z*TestMisc.test_serialization.<locals>.checkr   )Úintervalz/proc/diskstats)r    r!   rr   Zvirtual_memoryZswap_memoryZ	cpu_timesZcpu_times_percentÚnet_io_countersr   r,   r¤   Úexistsr   Údisk_io_countersZdisk_partitionsÚ
disk_usageÚgetcwdÚusers)r0   r²   r4   r7   r5   Útest_serializationZ  s   zTestMisc.test_serializationz*temporarily disabled due to setuptools bugc                 C   sT   t j td¡}trt j |¡s|  d¡S t|ƒ}|  t	|j
¡ |  | ¡ tj¡ d S )Nzsetup.pyzcan't find setup.py)r,   r¤   rm   r   r   rµ   ÚskipTestr   r™   Ú
SystemExitÚsetupr>   Úget_versionr    ro   )r0   Úsetup_pyÚmoduler4   r4   r5   Útest_setup_scriptr  s   
zTestMisc.test_setup_scriptc              	   C   s
  t jjtjdtjd}t ¡  |jsJ ‚W d   ƒ n1 sw   Y  t jjtjdt d¡d}t ¡  |js;J ‚W d   ƒ n1 sEw   Y  t jjtjdtd'}|  	t¡ t ¡  W d   ƒ n1 siw   Y  |jssJ ‚W d   ƒ d S 1 s~w   Y  d S )NZcreate_timer   rT   )
r   r)   r*   r    r!   r/   r—   r+   Ú
ValueErrorr™   )r0   Úmethr4   r4   r5   Útest_ad_on_process_creation{  s.   ÿýÿýÿ
ÿ"üz$TestMisc.test_ad_on_process_creationc              	   C   s|   t jddd- |  t¡}ttƒ W d   ƒ n1 sw   Y  |  dt|jƒ 	¡ ¡ W d   ƒ d S 1 s7w   Y  d S )Nzpsutil._psplatform.cext.versionz0.0.0r¢   zversion conflict)
r   r)   r™   rb   r   r    r#   r$   Ú	exceptionrf   )r0   Úcmr4   r4   r5   Útest_sanity_version_checkŒ  s   ÿ
ÿ"üz"TestMisc.test_sanity_version_checkc                 C   sF  t r	ddlm} nddlm} t|ƒ ƒ}tdƒ W d   ƒ n1 s#w   Y  | ¡ }| d¡s5J |ƒ‚|  d|¡ |  t 	dd¡|¡ t|ƒ ƒ}tt
dƒƒ W d   ƒ n1 s[w   Y  | ¡ }|  d|¡ |  d	|¡ t|ƒ ƒ}td
dƒ}d|_t|ƒ W d   ƒ n1 sŒw   Y  | ¡ }|  d|¡ |  d|¡ d S )Nr   )ÚStringIOZhellozpsutil-debugz.pycú.pyzthis is an errorzignoring ValueErrorz'this is an error'rz   zno such filez/foo)r
   ÚiorÈ   r   r   Úgetvaluer`   r#   r¦   r%   rÂ   r¨   Úfilename)r0   rÈ   r‰   r<   Úexcr4   r4   r5   Ú
test_debug”  s0   
ÿÿ

ýzTestMisc.test_debugN) r…   r†   r‡   r?   r6   r8   r@   rC   rH   rI   rJ   rK   rO   rP   rS   rX   rh   rp   rs   r‚   rŠ   r“   r    r­   rº   r   ÚskipIfr   rÁ   rÄ   rÇ   rÎ   r4   r4   r4   r5   r   9   s6    $		##

r   rF   za b cc                   @   sŽ   e Zd Zdd„ ZeZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze e d¡dd„ ƒZdS )ÚTestWrapNumbersc                 C   s   t  ¡  d S rƒ   )r	   r   r7   r4   r4   r5   ÚsetUp¼  s   zTestWrapNumbers.setUpc                 C   s&   dt dddƒi}|  t|dƒ|¡ d S ©NÚdisk1rL   Údisk_io©Úntr>   r	   ©r0   Úinputr4   r4   r5   Útest_first_callÁ  s   zTestWrapNumbers.test_first_callc                 C   s8   dt dddƒi}|  t|dƒ|¡ |  t|dƒ|¡ d S rÒ   rÕ   r×   r4   r4   r5   Útest_input_hasnt_changedÅ  s   z(TestWrapNumbers.test_input_hasnt_changedc                 C   sŒ   dt dddƒi}|  t|dƒ|¡ dt dddƒi}|  t|dƒ|¡ dt dddƒi}|  t|dƒ|¡ dt dddƒi}|  t|dƒ|¡ d S )	NrÓ   rL   rÔ   é
   é   é   é   é   rÕ   r×   r4   r4   r5   Útest_increase_but_no_wrapÊ  s   z)TestWrapNumbers.test_increase_but_no_wrapc                 C   s–  dt dddƒi}|  t|dƒ|¡ dt dddƒi}|  t|dƒdt dddƒi¡ dt dddƒi}|  t|dƒdt dddƒi¡ dt dddƒi}|  t|dƒdt dddƒi¡ dt dddƒi}|  t|dƒdt ddd	ƒi¡ dt dddƒi}|  t|dƒdt ddd	ƒi¡ dt d
ddƒi}|  t|dƒdt ddd	ƒi¡ dt dddƒi}|  t|dƒdt ddd	ƒi¡ dt dddƒi}|  t|dƒdt ddd	ƒi¡ d S )NrÓ   éd   rÔ   rÛ   én   éZ   é¾   rÝ   éÒ   é2   é–   é(   rÕ   r×   r4   r4   r5   Ú	test_wrapÔ  sD   ÿÿÿÿÿÿÿÿzTestWrapNumbers.test_wrapc                 C   st   dt dddƒi}|  t|dƒ|¡ t dddƒt dddƒdœ}|  t|dƒ|¡ dt dddƒi}|  t|dƒ|¡ d S )NrÓ   rL   rÔ   é   ©rÓ   Zdisk2é   rÕ   r×   r4   r4   r5   Útest_changing_keysù  s   

ÿz"TestWrapNumbers.test_changing_keysc                 C   s.  t dddƒt dddƒdœ}|  t|dƒ|¡ t dddƒt dddƒdœ}|  t|dƒt dddƒt dddƒdœ¡ dt dddƒi}|  t|dƒ|¡ t dddƒt dddƒdœ}|  t|dƒ|¡ t dddƒt dddƒdœ}|  t|dƒ|¡ t dddƒt dddƒdœ}|  t|dƒt dddƒt dddƒdœ¡ d S )Nræ   rá   rë   rÔ   rÛ   râ   rÓ   rÕ   r×   r4   r4   r5   Útest_changing_keys_w_wrap  s<   

ÿ

ÿ

ÿÿ

ÿ

ÿ

ÿ

ÿÿz)TestWrapNumbers.test_changing_keys_w_wrapc                 C   sb   dddddœ}|   t|dƒ|¡ |   t|dƒ|¡ dddddœ}t|dƒ}|   |d d	 d
¡ d S )N)	i,  éü  é€  é#  éR  éÃ  é  é§ä éÈ·  )	i“  rz   i tU i   i  r   r   r   rì   )	é6   r÷   i $ i ÐN r}   é   rß   i·  é   )	iU	  i»  i"  rç   iÜ  i4  iã  iŽ  i\  )Únvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3rÔ   )	rá   rï   rð   rñ   rò   ró   rô   rõ   rö   rú   r   i  )r>   r	   )r0   ÚdÚoutr4   r4   r5   Útest_real_data#  s   ýý
zTestWrapNumbers.test_real_datac                 C   sb   dt dddƒi}t|dƒ t ¡ }|  |d d|i¡ |  |d di i¡ |  |d di i¡ d S )NrÓ   rL   rÔ   r   rT   rz   ©rÖ   r	   Ú
cache_infor>   ©r0   rØ   Úcacher4   r4   r5   Útest_cache_first_call4  s   
z%TestWrapNumbers.test_cache_first_callc                 C   s„   dt dddƒi}t|dƒ dt dddƒi}t|dƒ t ¡ }|  |d d|i¡ |  |d dddddœi¡ |  |d di i¡ d S )	NrÓ   rL   rÔ   rÛ   r   rT   ©)rÓ   r   )rÓ   rT   ©rÓ   rz   rz   rþ   r   r4   r4   r5   Útest_cache_call_twice<  s   

þz%TestWrapNumbers.test_cache_call_twicec                    s‚  dt dddƒi}t|dƒ dt dddƒi}t|dƒ t ¡ }ˆ  |d d|i¡ ˆ  |d dddddœi¡ ˆ  |d ddtd	gƒii¡ ‡ fd
d„}dt dddƒi}t|dƒ t ¡ }ˆ  |d d|i¡ |ƒ  dt dddƒi}t|dƒ t ¡ }ˆ  |d d|i¡ |ƒ  dt dddƒi}t|dƒ t ¡ }ˆ  |d d|i¡ ˆ  |d dddddœi¡ ˆ  |d ddtd	gƒii¡ d S )NrÓ   rá   rÔ   rÛ   r   rT   r  rz   r  c                     sF   t  ¡ } ˆ  | d dddddœi¡ ˆ  | d ddtdgƒii¡ d S )	NrT   rÔ   r   rá   r  rz   rÓ   r  )r	   rÿ   r>   rU   )r  r7   r4   r5   Úassert_W  s   ÿþ
ÿz0TestWrapNumbers.test_cache_wrap.<locals>.assert_rã   rÝ   rä   )rÖ   r	   rÿ   r>   rU   )r0   rØ   r  r  r4   r7   r5   Útest_cache_wrapH  s>   

þ



þ"zTestWrapNumbers.test_cache_wrapc                 C   sŽ   dt dddƒi}t|dƒ t dddƒt dddƒdœ}t|dƒ t ¡ }|  |d d|i¡ |  |d dddddœi¡ |  |d	 di i¡ d S )
NrÓ   rL   rÔ   rê   rë   r   rT   r  rz   rþ   r   r4   r4   r5   Útest_cache_changing_keysx  s   


ÿ
þz(TestWrapNumbers.test_cache_changing_keysc                 C   s\   dt dddƒi}t|dƒ t|dƒ t d¡ |  t ¡ i i i f¡ t d¡ t d¡ d S )NrÓ   rL   rÔ   z?!?)rÖ   r	   r   r>   rÿ   r×   r4   r4   r5   Útest_cache_clear…  s   



z TestWrapNumbers.test_cache_clearúnot supportedc                 C   s°   t  ¡ rt  ¡ s|  d¡S t  ¡  t  ¡  t ¡ }|D ]}|  d|¡ |  d|¡ qt j ¡  t ¡ }|D ]}|  d|¡ |  d|¡ q5t j ¡  t ¡ }|  	|i i i f¡ d S )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)
r    r¶   r´   r»   r	   rÿ   r#   r   r&   r>   )r0   Úcachesr  r4   r4   r5   Útest_cache_clear_public_apisŽ  s    


z,TestWrapNumbers.test_cache_clear_public_apisN)r…   r†   r‡   rÑ   ZtearDownrÙ   rÚ   rà   ré   rí   rî   rý   r  r  r  r  r	  r   rÏ   r   r  r4   r4   r4   r5   rÐ   º  s"    
%0	rÐ   zcan't locate scripts directoryc                   @   s~  e Zd ZdZedd„ ƒZed<dd„ƒZdd„ Ze 	e
 d	¡d
d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Ze 	eo:e ¡  d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Ze 	e d¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Ze 	e  d.¡d/d0„ ƒZ!d1d2„ Z"e 	e# d¡d3d4„ ƒZ$e 	e% d¡d5d6„ ƒZ&e 	e' d¡e 	e( d7¡d8d9„ ƒƒZ)e 	e' d¡e 	e( d7¡d:d;„ ƒƒZ*dS )=ÚTestScriptsz-Tests for scripts in the "scripts" directory.c              
   O   s’   dt j t| ¡ } t| g}|D ]}| |¡ qzt|fi |¤Ž ¡ }W n ty@ } zdt	|ƒv r;t	|ƒW  Y d }~S ‚ d }~ww |sGJ |ƒ‚|S )Nz%sr/   )
r,   r¤   rm   r   r   rv   r   ÚstripÚRuntimeErrorr$   )Úexerw   rx   ÚcmdÚargrü   Úerrr4   r4   r5   Úassert_stdout®  s   €üzTestScripts.assert_stdoutNc                 C   sf   t j t| ¡} trt| ddd}nt| dƒ}| | ¡ }W d   ƒ n1 s'w   Y  t |¡ d S )NÚrtÚutf8)Úencoding)	r,   r¤   rm   r   r
   ÚopenÚreadÚastÚparse)r  rw   r‰   Úsrcr4   r4   r5   Úassert_syntax¾  s   

ÿzTestScripts.assert_syntaxc                 C   sV   t | ƒ}t t¡D ]}| d¡r(dtj |¡d  |vr(|  dtj t|¡ ¡ q	d S )NrÉ   Ztest_r   zno test defined for %r script)	r_   r,   Úlistdirr   Úendswithr¤   Úsplitextrg   rm   )r0   Zmethsr   r4   r4   r5   Útest_coverageÉ  s   
ÿ€üzTestScripts.test_coveragez
POSIX onlyc                 C   s`   t  t¡D ](\}}}|D ] }| d¡r,t j ||¡}tjt  |¡tj @ s,|  	d| ¡‚qqd S )NrÉ   z%r is not executable)
r,   Úwalkr   r  r¤   rm   ÚstatÚS_IXUSRÚST_MODErg   )r0   ÚrootÚdirsÚfilesÚfiler¤   r4   r4   r5   Útest_executableÓ  s   
€üÿzTestScripts.test_executablec                 C   ó   |   d¡ d S )Nzdisk_usage.py©r  r7   r4   r4   r5   Útest_disk_usageÜ  ó   zTestScripts.test_disk_usagec                 C   r+  )Nzfree.pyr,  r7   r4   r4   r5   Ú	test_freeß  r.  zTestScripts.test_freec                 C   r+  )Nz
meminfo.pyr,  r7   r4   r4   r5   Útest_meminfoâ  r.  zTestScripts.test_meminfoc                 C   ó   |   dtt ¡ ƒ¡ d S )Nzprocinfo.py©r  r$   r,   r-   r7   r4   r4   r5   Útest_procinfoå  s   zTestScripts.test_procinfozno usersc                 C   r+  )Nzwho.pyr,  r7   r4   r4   r5   Útest_whoè  r„   zTestScripts.test_whoc                 C   r+  )Nzps.pyr,  r7   r4   r4   r5   Útest_psì  r.  zTestScripts.test_psc                 C   r+  )Nz	pstree.pyr,  r7   r4   r4   r5   Útest_pstreeï  r.  zTestScripts.test_pstreec                 C   r+  )Nz
netstat.pyr,  r7   r4   r4   r5   Útest_netstatò  r.  zTestScripts.test_netstatc                 C   r+  )Nzifconfig.pyr,  r7   r4   r4   r5   Útest_ifconfigõ  r.  zTestScripts.test_ifconfigr
  c                 C   r1  )Nzpmap.pyr2  r7   r4   r4   r5   Ú	test_pmapø  s   zTestScripts.test_pmapc                 C   s*   dt  ¡  ¡ jvr|  d¡‚|  d¡ d S )NZussr
  zprocsmem.py)r    r!   Zmemory_full_infoÚ_fieldsr»   r  r7   r4   r4   r5   Útest_procsmemü  s   
zTestScripts.test_procsmemc                 C   r+  )Nz
killall.py©r  r7   r4   r4   r5   Útest_killall  r.  zTestScripts.test_killallc                 C   r+  )Nz	nettop.pyr<  r7   r4   r4   r5   Útest_nettop  r.  zTestScripts.test_nettopc                 C   r+  )Nztop.pyr<  r7   r4   r4   r5   Útest_top  r.  zTestScripts.test_topc                 C   r+  )Nziotop.pyr<  r7   r4   r4   r5   Ú
test_iotop
  r.  zTestScripts.test_iotopc                 C   s,   |   dt ¡  ¡ ¡}|  tt ¡ ƒ|¡ d S )Nzpidof.py)r  r    r!   r   r#   r$   r,   r-   )r0   Úoutputr4   r4   r5   Ú
test_pidof  s   zTestScripts.test_pidofzWINDOWS onlyc                 C   r+  )Nzwinservices.pyr,  r7   r4   r4   r5   Útest_winservices  r„   zTestScripts.test_winservicesc                 C   r+  )Nzcpu_distribution.pyr<  r7   r4   r4   r5   Útest_cpu_distribution  r.  z!TestScripts.test_cpu_distributionc                 C   ó    t  ¡ s	|  d¡ |  d¡ d S )Nzno temperaturesztemperatures.py)r    Zsensors_temperaturesr»   r  r7   r4   r4   r5   Útest_temperatures  ó   
zTestScripts.test_temperaturesc                 C   rE  )Nzno fanszfans.py)r    Zsensors_fansr»   r  r7   r4   r4   r5   Ú	test_fans  rG  zTestScripts.test_fansz
no batteryc                 C   r+  )Nz
battery.pyr,  r7   r4   r4   r5   Útest_battery$  ó   zTestScripts.test_batteryc                 C   r+  )Nz
sensors.pyr,  r7   r4   r4   r5   Útest_sensors)  rJ  zTestScripts.test_sensorsrƒ   )+r…   r†   r‡   re   Ústaticmethodr  r  r!  r   rÏ   r   r*  r-  r/  r0  r3  r   r    r¹   r4  r5  r6  r7  r8  r   r9  r;  r=  r>  r?  r@  rB  r   rC  rD  r   rF  r   rH  r   r   rI  rK  r4   r4   r4   r5   r  ©  sP    








r  Ú__main__)Úrun_from_name)4re   r  Úcollectionsr©   r®   r,   r±   r•   r#  r    Zpsutil.testsr   r   r   r’   r   r   r   r   r	   Zpsutil._compatr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
namedtuplerÖ   rÐ   rÏ   r¤   rµ   r  r…   Zpsutil.tests.runnerrN  r¦   r4   r4   r4   r5   Ú<module>   sl       pÿ 
þ