
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    Œ=Ý_¨o  ã                   @   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
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
Z
ddlZ
e	j'dd… dk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 ƒƒZ0e1d'k�r
dd(l2m3Z3 e3e4ƒ dS ))z
Miscellaneous tests.
é    N)ÚLINUX)ÚPOSIX)ÚWINDOWS)Úmemoize)Úmemoize_when_activated)Úsupports_ipv6)Úwrap_numbers)ÚPY3)ÚAPPVEYOR)Ú
CI_TESTING)ÚHAS_BATTERY)ÚHAS_MEMORY_MAPS)ÚHAS_NET_IO_COUNTERS)ÚHAS_SENSORS_BATTERY)ÚHAS_SENSORS_FANS)ÚHAS_SENSORS_TEMPERATURES)Úimport_module_by_path)Úmock)ÚPsutilTestCase)Ú
PYTHON_EXE)Úreload_module)ÚROOT_DIR)ÚSCRIPTS_DIR)Úsh)Úunittesté   )é   é	   c                   @   sÀ   e Zd Zefdd„Zdd„ Zefdd„Zefdd„Zefd	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)S )*Ú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 5 Q R X tjjt jd	t  t ¡ ¡d
��@ t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W 5 Q R X tjjt jd	t  t ¡ ¡d
��4 t  ¡ }||ƒ}|  d|j |¡ |  d|¡ W 5 Q R X d S )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=Z
terminated)ÚpsutilÚProcessZspawn_testprocÚpidÚassertInÚstrr   ÚreplaceÚassertNotInÚ	terminateÚwaitr   ÚpatchÚobjectÚZombieProcessÚosÚgetpidÚNoSuchProcessÚAccessDenied)ÚselfÚfuncÚpÚr© r6   úI/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_misc.pyÚtest_process__repr__=   sJ    
ÿÿÿÿzTestMisc.test_process__repr__c                 C   s   | j td� d S )N)r3   )r8   r&   ©r2   r6   r6   r7   Útest_process__str__a   s    zTestMisc.test_process__str__c                 C   sN   |   tt d¡ƒd¡ |   ttjddd�ƒd¡ |   ttjddd�ƒd¡ d S )NéA  z7psutil.NoSuchProcess process no longer exists (pid=321)Úfoo©r   zCpsutil.NoSuchProcess process no longer exists (pid=321, name='foo')©Úmsgzpsutil.NoSuchProcess foo)ÚassertEqualÚreprr"   r0   ©r2   r3   r6   r6   r7   Útest_no_such_process__repr__d   s    þþþz%TestMisc.test_no_such_process__repr__c                 C   sj   |   tt d¡ƒd¡ |   ttjddd�ƒd¡ |   ttjdddd�ƒd¡ |   ttjddd	�ƒd
¡ d S )Nr;   zEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)r<   r=   zQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo')é   )r   ÚppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1)r>   zpsutil.ZombieProcess foo)r@   rA   r"   r-   rB   r6   r6   r7   Útest_zombie_process__repr__p   s     þþþþz$TestMisc.test_zombie_process__repr__c                 C   sN   |   tt d¡ƒd¡ |   ttjddd�ƒd¡ |   ttjddd�ƒd¡ d S )Nr;   zpsutil.AccessDenied (pid=321)r<   r=   z)psutil.AccessDenied (pid=321, name='foo')r>   zpsutil.AccessDenied foo)r@   rA   r"   r1   rB   r6   r6   r7   Útest_access_denied__repr__�   s    þþþz#TestMisc.test_access_denied__repr__c                 C   sP   |   tt d¡ƒd¡ |   ttjddd�ƒd¡ |   ttjdddd�ƒd¡ d S )	Nr;   z/psutil.TimeoutExpired timeout after 321 secondséo   )r$   z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)r<   )r$   r   zEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r@   rA   r"   ÚTimeoutExpiredrB   r6   r6   r7   Útest_timeout_expired__repr__Œ   s    þþþz%TestMisc.test_timeout_expired__repr__c                 C   s>   t  ¡ }t  ¡ }|  ||¡ d|_|  ||¡ |  |d¡ d S )N)r   r   r<   )r"   r#   r@   Ú_identZassertNotEqual)r2   Úp1Úp2r6   r6   r7   Útest_process__eq__˜   s    zTestMisc.test_process__eq__c                 C   s(   t t ¡ t ¡ gƒ}|  t|ƒd¡ d S )NrD   )Úsetr"   r#   r@   Úlen)r2   Úsr6   r6   r7   Útest_process__hash__    s    zTestMisc.test_process__hash__c              	   C   sª   t tƒ}|D ]€}|dkrq| d¡szt|ƒ W q tk
rŠ   |tjkr†tt|ƒ}|d kr`Y q|jd k	r†d|j ¡ kr†|  	d| ¡ Y qX qtjD ]}|  
||¡ q”d S )N)ÚlongÚtestsÚtestÚPermissionErrorÚProcessLookupErrorÚ_Z
deprecatedz%r not in psutil.__all__)Údirr"   Ú
startswithÚ
__import__ÚImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr%   )r2   Z
dir_psutilr   Úfunr6   r6   r7   Ú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 r6   )r&   )Ú.0Úxr6   r6   r7   Ú
<listcomp>¾   s     z)TestMisc.test_version.<locals>.<listcomp>)r@   Újoinr"   Úversion_infoÚ__version__r9   r6   r6   r7   Útest_version½   s    ÿzTestMisc.test_versionc                 C   s"   t  ¡ }d|_|  d| ¡ ¡ d S )NÚ1r<   )r"   r#   r<   r(   Úas_dict)r2   r4   r6   r6   r7   Ú!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 ]0}|dƒ}di f}|  ||¡ |  tˆ ƒd¡ qTtdƒD ]8}|ddd�}dddif}|  ||¡ |  tˆ ƒd	¡ qŽ| ¡  |ƒ }di f}|  ||¡ |  tˆ ƒd
¡ |  |jd¡ d S )Nc                     s   ˆ   d¡ | |fS )úfoo docstringN©Úappend)ÚargsÚkwargs©Zcallsr6   r7   r<   È   s    
z"TestMisc.test_memoize.<locals>.foor   r6   rD   )rD   )Úbarru   r   é   ro   )r   Úranger@   rP   Úcache_clearr_   )r2   r<   rf   ÚretZexpectedr6   rt   r7   Ú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 ©Nrp   r9   rt   r6   r7   r<   í   s    z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)Ú__name__Ú
__module__Ú__qualname__r   r<   r6   rt   r6   r7   ÚFooë   s   r   r   rD   )r<   r@   rP   Úcache_activateÚcache_deactivate)r2   r   Úfr6   rt   r7   Ú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)rQ   r6   r6   r7   Úk  s    z,TestMisc.test_parse_environ_block.<locals>.kza=1 Úarl   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@   )r2   r„   r†   r6   r6   r7   Útest_parse_environ_block  s"    

ÿ
ÿ
ÿ
ÿz!TestMisc.test_parse_environ_blockc              	   C   s>  |   tj¡ tƒ rút d¡�}d|_t ¡  tƒ r6t‚W 5 Q R X t ¡  tjdtjd��}tƒ rdt‚|j	snt‚W 5 Q R X t ¡  tjdtj
d��"}tƒ rœt‚t ¡  |j	s®t‚W 5 Q R X t ¡  tjdtj
d��"}tƒ rÜt‚t ¡  |j	sît‚W 5 Q R X n@|  t¡�0 t tjtj¡}z| d¡ W 5 | ¡  X W 5 Q R X d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr    z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   rx   r   r+   Úhas_ipv6ÚAssertionErrorÚsocketÚerrorÚcalledÚgaierrorÚassertRaisesÚ	ExceptionÚAF_INET6ÚSOCK_STREAMÚcloseÚbind)r2   rQ   Úsockr6   r6   r7   Útest_supports_ipv6  sD    ÿ
ÿ
ÿ
zTestMisc.test_supports_ipv6c              	   C   sð   ddl m} tj t¡}||ƒs$t‚|tj |¡ƒr8t‚tj	dt
tjdƒd�� |  t
||¡ W 5 Q R X tj	dt
tjdƒd�� |  t
||¡ W 5 Q R X tj	dt
tjdƒd�� ||ƒr¼t‚W 5 Q R X tj	ddd�� ||ƒrât‚W 5 Q R X d S )	Nr   )Úisfile_strictzpsutil._common.os.statr<   r    zpsutil._common.stat.S_ISREGF©Zreturn_value)r‹   r›   r.   ÚpathÚabspathÚ__file__rŽ   Údirnamer   r+   ÚOSErrorÚerrnoÚEPERMr“   ÚEACCESÚENOENT)r2   r›   Z	this_filer6   r6   r7   Útest_isfile_strict=  s$    
ÿ
ÿ
ÿzTestMisc.test_isfile_strictc                    s¬   ‡ fdd„}|t  ¡  ¡ ƒ |t  ¡ ƒ |t  ¡ ƒ |t  ¡ ƒ |t jdd�ƒ |t  ¡ ƒ trnt	j
 d¡snnts~|t  ¡ ƒ |t  ¡ ƒ |t  t	 ¡ ¡ƒ |t  ¡ ƒ d S )Nc                    s<   t d k	rt  t  | ¡¡ t | ¡}t |¡}ˆ  | |¡ d S r{   )ÚjsonÚloadsÚdumpsÚpickler@   )ry   r‡   rˆ   r9   r6   r7   ÚcheckO  s
    

z*TestMisc.test_serialization.<locals>.checkr   )Úintervalz/proc/diskstats)r"   r#   rm   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)r2   r«   r6   r9   r7   Útest_serializationN  s    zTestMisc.test_serializationc                 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�   rh   r   r   r®   ÚskipTestr   r“   Ú
SystemExitÚsetupr@   Úget_versionr"   rj   )r2   Zsetup_pyÚmoduler6   r6   r7   Útest_setup_scripte  s    
zTestMisc.test_setup_scriptc              
   C   s¸   t jjtjdtjd��}t ¡  |js*t‚W 5 Q R X t jjtjdt d¡d��}t ¡  |jsbt‚W 5 Q R X t jjtjdt	d��.}|  
t	¡� t ¡  W 5 Q R X |jsªt‚W 5 Q R X d S )NZcreate_timer    rD   )r   r+   r,   r"   r#   r1   r‘   rŽ   r-   Ú
ValueErrorr“   )r2   Úmethr6   r6   r7   Útest_ad_on_process_creationm  s&    ÿÿÿz$TestMisc.test_ad_on_process_creationc              
   C   sR   t jddd��: |  t¡�}ttƒ W 5 Q R X |  dt|jƒ 	¡ ¡ W 5 Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0rœ   zversion conflict)
r   r+   r“   r\   r   r"   r%   r&   Ú	exceptionr`   )r2   Úcmr6   r6   r7   Útest_sanity_version_check~  s     ÿz"TestMisc.test_sanity_version_checkN)r|   r}   r~   rA   r8   r:   rC   rF   rG   rJ   rN   rR   rc   rk   rn   rz   rƒ   rŒ   rš   r¦   r³   r¹   r¼   r¿   r6   r6   r6   r7   r   ;   s(   $##r   r<   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   rx   r9   r6   r6   r7   ÚsetUp‘  s    zTestWrapNumbers.setUpc                 C   s&   dt dddƒi}|  t|dƒ|¡ d S ©NÚdisk1é   Údisk_io©Úntr@   r   ©r2   Úinputr6   r6   r7   Ú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È   r6   r6   r7   Ú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Ã   rÄ   rÅ   é
   é   é   é   é   rÆ   rÈ   r6   r6   r7   Ú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È   r6   r6   r7   Ú	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Ã   rÄ   rÅ   é   ©rÃ   Zdisk2é   rÆ   rÈ   r6   r6   r7   Ú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È   r6   r6   r7   Ú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“  r   i tU i   i  r   r   r   rÝ   )	é6   rè   i �$ i ÐN rv   é   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   )r2   ÚdÚoutr6   r6   r7   Ú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Ã   rÄ   rÅ   r   rD   r   ©rÇ   r   Ú
cache_infor@   ©r2   rÉ   Úcacher6   r6   r7   Útest_cache_first_call	  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Ã   rÄ   rÅ   rÌ   r   rD   ©)rÃ   r   )rÃ   rD   ©rÃ   r   r   rï   rñ   r6   r6   r7   Ú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   rD   rô   r   rõ   c                     sF   t  ¡ } ˆ  | d dddddœi¡ ˆ  | d ddtdgƒii¡ d S )	NrD   rÅ   r   rÒ   rô   r   rÃ   rõ   )r   rð   r@   rO   )rò   r9   r6   r7   Úassert_,  s    ÿþ
ÿz0TestWrapNumbers.test_cache_wrap.<locals>.assert_rÔ   rÎ   rÕ   )rÇ   r   rð   r@   rO   )r2   rÉ   rò   r÷   r6   r9   r7   Útest_cache_wrap  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Ã   rÄ   rÅ   rÛ   rÜ   r   rD   rô   r   rï   rñ   r6   r6   r7   Útest_cache_changing_keysM  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Ã   rÄ   rÅ   z?!?)rÇ   r   rx   r@   rð   rÈ   r6   r6   r7   Útest_cache_clearZ  s    



z TestWrapNumbers.test_cache_clearúnot supportedc                 C   s°   t  ¡ rt  ¡ s|  d¡S t  ¡  t  ¡  t ¡ }|D ]}|  d|¡ |  d|¡ q6t j ¡  t ¡ }|D ]}|  d|¡ |  d|¡ qjt 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%   rx   r(   r@   )r2   Zcachesrò   r6   r6   r7   Útest_cache_clear_public_apisc  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   ÚskipIfr   rü   r6   r6   r6   r7   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ote ¡  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|Ž ¡ }W n@ tk
r‚ } z"dt	|ƒkrpt	|ƒ W Y ¢S ‚ W 5 d }~X Y nX |s�t
|ƒ‚|S )Nz%sr1   )r.   r�   rh   r   r   rq   r   ÚstripÚRuntimeErrorr&   rŽ   )Úexerr   rs   ÚcmdÚargrí   Úerrr6   r6   r7   Úassert_stdoutƒ  s    zTestScripts.assert_stdoutNc              	   C   sR   t j t| ¡} tr"t| ddd�}n
t| dƒ}|� | ¡ }W 5 Q R X t |¡ d S )NÚrtÚutf8)Úencoding)	r.   r�   rh   r   r	   ÚopenÚreadÚastÚparse)r  rr   r‚   Úsrcr6   r6   r7   Úassert_syntax“  s    
zTestScripts.assert_syntaxc                 C   sV   t | ƒ}t t¡D ]>}| d¡rdtj |¡d  |kr|  dtj t|¡ ¡ qd S )Nú.pyZtest_r   zno test defined for %r script)	rY   r.   Úlistdirr   Úendswithr�   Úsplitextra   rh   )r2   Zmethsr   r6   r6   r7   Útest_coveragež  s    
ÿzTestScripts.test_coveragez
POSIX onlyc                 C   sP   t  t¡D ]@}| d¡r
t j t|¡}tjt  |¡tj @ s
|  	d| ¡ q
d S )Nr  z%r is not executable)
r.   r  r   r  r�   rh   ÚstatÚS_IXUSRÚST_MODEra   )r2   r   r�   r6   r6   r7   Útest_executable¨  s
    
zTestScripts.test_executablec                 C   s   |   d¡ d S )Nzdisk_usage.py©r  r9   r6   r6   r7   Útest_disk_usage°  s    zTestScripts.test_disk_usagec                 C   s   |   d¡ d S )Nzfree.pyr  r9   r6   r6   r7   Ú	test_free³  s    zTestScripts.test_freec                 C   s   |   d¡ d S )Nz
meminfo.pyr  r9   r6   r6   r7   Útest_meminfo¶  s    zTestScripts.test_meminfoc                 C   s   |   dtt ¡ ƒ¡ d S )Nzprocinfo.py©r  r&   r.   r/   r9   r6   r6   r7   Útest_procinfo¹  s    zTestScripts.test_procinfozno usersc                 C   s   |   d¡ d S )Nzwho.pyr  r9   r6   r6   r7   Útest_who¼  s    zTestScripts.test_whoc                 C   s   |   d¡ d S )Nzps.pyr  r9   r6   r6   r7   Útest_psÀ  s    zTestScripts.test_psc                 C   s   |   d¡ d S )Nz	pstree.pyr  r9   r6   r6   r7   Útest_pstreeÃ  s    zTestScripts.test_pstreec                 C   s   |   d¡ d S )Nz
netstat.pyr  r9   r6   r6   r7   Útest_netstatÆ  s    zTestScripts.test_netstatc                 C   s   |   d¡ d S )Nzifconfig.pyr  r9   r6   r6   r7   Útest_ifconfigÉ  s    zTestScripts.test_ifconfigrû   c                 C   s   |   dtt ¡ ƒ¡ d S )Nzpmap.pyr  r9   r6   r6   r7   Ú	test_pmapÌ  s    zTestScripts.test_pmapc                 C   s*   dt  ¡  ¡ jkr|  d¡‚|  d¡ d S )NZussrû   zprocsmem.py)r"   r#   Zmemory_full_infoÚ_fieldsr´   r  r9   r6   r6   r7   Útest_procsmemÐ  s    
zTestScripts.test_procsmemc                 C   s   |   d¡ d S )Nz
killall.py©r  r9   r6   r6   r7   Útest_killallÕ  s    zTestScripts.test_killallc                 C   s   |   d¡ d S )Nz	nettop.pyr&  r9   r6   r6   r7   Útest_nettopØ  s    zTestScripts.test_nettopc                 C   s   |   d¡ d S )Nztop.pyr&  r9   r6   r6   r7   Útest_topÛ  s    zTestScripts.test_topc                 C   s   |   d¡ d S )Nziotop.pyr&  r9   r6   r6   r7   Ú
test_iotopÞ  s    zTestScripts.test_iotopc                 C   s,   |   dt ¡  ¡ ¡}|  tt ¡ ƒ|¡ d S )Nzpidof.py)r  r"   r#   r   r%   r&   r.   r/   )r2   Úoutputr6   r6   r7   Ú
test_pidofá  s    zTestScripts.test_pidofzWINDOWS onlyc                 C   s   |   d¡ d S )Nzwinservices.pyr  r9   r6   r6   r7   Útest_winserviceså  s    zTestScripts.test_winservicesc                 C   s   |   d¡ d S )Nzcpu_distribution.pyr&  r9   r6   r6   r7   Útest_cpu_distributioné  s    z!TestScripts.test_cpu_distributionc                 C   s    t  ¡ s|  d¡ |  d¡ d S )Nzno temperaturesztemperatures.py)r"   Zsensors_temperaturesr´   r  r9   r6   r6   r7   Útest_temperaturesì  s    
zTestScripts.test_temperaturesc                 C   s    t  ¡ s|  d¡ |  d¡ d S )Nzno fanszfans.py)r"   Zsensors_fansr´   r  r9   r6   r6   r7   Ú	test_fansò  s    
zTestScripts.test_fansz
no batteryc                 C   s   |   d¡ d S )Nz
battery.pyr  r9   r6   r6   r7   Útest_batteryø  s    zTestScripts.test_batteryc                 C   s   |   d¡ d S )Nz
sensors.pyr  r9   r6   r6   r7   Útest_sensorsý  s    zTestScripts.test_sensors)N)+r|   r}   r~   r_   Ústaticmethodr  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   r0  r   r   r1  r2  r6   r6   r6   r7   rþ   ~  sN   








rþ   Ú__main__)Úrun_from_name)5r_   r  Úcollectionsr¢   r§   r.   rª   r�   r  Úsysr"   r   r   r   r‹   r   r   r   r   Zpsutil._compatr	   Zpsutil.testsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ri   Z	PYTHON_39r   Ú
namedtuplerÇ   rÀ   rý   r�   r®   rþ   r|   Zpsutil.tests.runnerr5  rŸ   r6   r6   r6   r7   Ú<module>   sf     S pÿ 
