<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Œ=Ý_¨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 d Q R X tjjt jd	t  t ¡ ¡d
@ t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W d Q R X tjjt jd	t  t ¡ ¡d
4 t  ¡ }||ƒ}|  d|j |¡ |  d|¡ W d 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© r5   úI/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_misc.pyÚtest_process__repr__=   sB    zTestMisc.test_process__repr__c             C   s   | j td d S )N)r2   )r7   r%   )r1   r5   r5   r6   Ú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 )NiA  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!   r/   )r1   r2   r5   r5   r6   Ú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 )NiA  zEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)r9   )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;   r<   r!   r,   )r1   r2   r5   r5   r6   Ú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 )NiA  zpsutil.AccessDenied (pid=321)r9   )r   z)psutil.AccessDenied (pid=321, name='foo'))r:   zpsutil.AccessDenied foo)r;   r<   r!   r0   )r1   r2   r5   r5   r6   Ú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 )	NiA  z/psutil.TimeoutExpired timeout after 321 secondséo   )r#   z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)r9   )r#   r   zEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r;   r<   r!   ÚTimeoutExpired)r1   r2   r5   r5   r6   Útest_timeout_expired__repr__Œ   s    z%TestMisc.test_timeout_expired__repr__c             C   s>   t  ¡ }t  ¡ }|  ||¡ d|_|  ||¡ |  |d¡ d S )N)r   r   r9   )r!   r"   r;   Ú_identZassertNotEqual)r1   Úp1Úp2r5   r5   r6   Útest_process__eq__˜   s    zTestMisc.test_process__eq__c             C   s(   t t ¡ t ¡ gƒ}|  t|ƒd¡ d S )Nr>   )Úsetr!   r"   r;   Úlen)r1   Úsr5   r5   r6   Útest_process__hash__    s    zTestMisc.test_process__hash__c          	   C   s°   t tƒ}x†|D ]~}|dkrq| d¡syt|ƒ W q tk
rŠ   |tjkr†tt|ƒ}|d kr`w|jd k	r†d|j ¡ kr†|  	d| ¡ Y qX qW xtjD ]}|  
||¡ q˜W d S )N)ÚlongÚtestsÚtestÚPermissionErrorÚProcessLookupErrorÚ_Z
deprecatedz%r not in psutil.__all__)Údirr!   Ú
startswithÚ
__import__ÚImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr$   )r1   Z
dir_psutilr   Úfunr5   r5   r6   Ú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 r5   )r%   )Ú.0Úxr5   r5   r6   ú
<listcomp>¾   s    z)TestMisc.test_version.<locals>.<listcomp>)r;   Újoinr!   Úversion_infoÚ__version__)r1   r5   r5   r6   Útest_version½   s    zTestMisc.test_versionc             C   s"   t  ¡ }d|_|  d| ¡ ¡ d S )NÚ1r9   )r!   r"   r9   r'   Úas_dict)r1   r3   r5   r5   r6   Ú!test_process_as_dict_no_new_namesÁ   s    z*TestMisc.test_process_as_dict_no_new_namesc                s  t ‡ fdd„ƒ}g ‰ x:tdƒD ].}|ƒ }di f}|  ||¡ |  tˆ ƒd¡ qW x<tdƒD ]0}|dƒ}di f}|  ||¡ |  tˆ ƒd¡ qZW xDtdƒD ]8}|ddd}dddif}|  ||¡ |  tˆ ƒd	¡ q˜W | ¡  |ƒ }di f}|  ||¡ |  tˆ ƒd
¡ |  |jd¡ d S )Nc                 s   ˆ   d¡ | |fS )zfoo docstringN)Úappend)ÚargsÚkwargs)Úcallsr5   r6   r9   È   s    
z"TestMisc.test_memoize.<locals>.foor   r5   r>   )r>   )Úbarrm   r   é   zfoo docstring)r   Úranger;   rJ   Úcache_clearrY   )r1   r9   r`   ÚretZexpectedr5   )rl   r6   Útest_memoizeÇ   s.    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 )N)ri   )r1   )rl   r5   r6   r9   í   s    z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)Ú__name__Ú
__module__Ú__qualname__r   r9   r5   )rl   r5   r6   ÚFooë   s   rv   r   r>   )r9   r;   rJ   Úcache_activateÚcache_deactivate)r1   rv   Úfr5   )rl   r6   Ú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 )N)r   Úupper)rK   r5   r5   r6   Úk  s    z,TestMisc.test_parse_environ_block.<locals>.kza=1 Úarf   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;   )r1   r{   r}   r5   r5   r6   Útest_parse_environ_block  s    



z!TestMisc.test_parse_environ_blockc          	   C   s>  |   tj¡ tƒ rút d¡}d|_t ¡  tƒ r6t‚W d Q R X t ¡  tjdtjd}tƒ rdt‚|j	snt‚W d Q R X t ¡  tjdtj
d"}tƒ rœt‚t ¡  |j	s®t‚W d Q R X t ¡  tjdtj
d"}tƒ rÜt‚t ¡  |j	sît‚W d Q R X n@|  t¡0 t tjtj¡}z| d¡ W d | ¡  X W d Q R X d S )Nzpsutil._common.socketFzpsutil._common.socket.socket)r    z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   rp   r   r*   Úhas_ipv6ÚAssertionErrorÚsocketÚerrorÚcalledÚgaierrorÚassertRaisesÚ	ExceptionÚAF_INET6ÚSOCK_STREAMÚbindÚclose)r1   rK   Úsockr5   r5   r6   Útest_supports_ipv6  s8    


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 d Q R X tj	dt
tjdƒd |  t
||¡ W d Q R X tj	dt
tjdƒd ||ƒr¼t‚W d Q R X tj	ddd ||ƒrât‚W d Q R X d S )	Nr   )Úisfile_strictzpsutil._common.os.statr9   )r    zpsutil._common.stat.S_ISREGF)Úreturn_value)r‚   r’   r-   ÚpathÚabspathÚ__file__r…   Údirnamer   r*   ÚOSErrorÚerrnoÚEPERMrŠ   ÚEACCESÚENOENT)r1   r’   Z	this_filer5   r5   r6   Ú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 )N)ÚjsonÚloadsÚdumpsÚpickler;   )rq   r~   r   )r1   r5   r6   ÚcheckO  s
    

z*TestMisc.test_serialization.<locals>.checkr   )Úintervalz/proc/diskstats)r!   r"   rg   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)r1   r¢   r5   )r1   r6   Ú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”   rb   r   r   r¥   ÚskipTestr   rŠ   Ú
SystemExitÚsetupr;   Úget_versionr!   rd   )r1   Zsetup_pyÚmoduler5   r5   r6   Ú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 d Q R X t jjtjdt d¡d}t ¡  |jsbt‚W d Q R X t jjtjdt	d.}|  
t	¡ t ¡  W d Q R X |jsªt‚W d Q R X d S )NZcreate_time)r    r>   )r   r*   r+   r!   r"   r0   rˆ   r…   r,   Ú
ValueErrorrŠ   )r1   Úmethr5   r5   r6   Útest_ad_on_process_creationm  s    
z$TestMisc.test_ad_on_process_creationc          
   C   sR   t jddd: |  t¡}ttƒ W d Q R X |  dt|jƒ 	¡ ¡ W d Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0)r“   zversion conflict)
r   r*   rŠ   rV   r   r!   r$   r%   Ú	exceptionrZ   )r1   Úcmr5   r5   r6   Útest_sanity_version_check~  s
    z"TestMisc.test_sanity_version_checkN)rs   rt   ru   r<   r7   r8   r=   r@   rA   rD   rH   rL   r]   re   rh   rr   rz   rƒ   r‘   r   rª   r°   r³   r¶   r5   r5   r5   r6   r   ;   s(   $##r   r9   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 )N)r   rp   )r1   r5   r5   r6   ÚsetUp‘  s    zTestWrapNumbers.setUpc             C   s&   dt dddƒi}|  t|dƒ|¡ d S )NÚdisk1é   Údisk_io)Úntr;   r   )r1   Úinputr5   r5   r6   Útest_first_call–  s    zTestWrapNumbers.test_first_callc             C   s8   dt dddƒi}|  t|dƒ|¡ |  t|dƒ|¡ d S )Nr¹   rº   r»   )r¼   r;   r   )r1   r½   r5   r5   r6   Ú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;   r   )r1   r½   r5   r5   r6   Ú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;   r   )r1   r½   r5   r5   r6   Ú	test_wrap©  s4    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¹   Údisk2é   )r¼   r;   r   )r1   r½   r5   r5   r6   Ú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¼   r;   r   )r1   r½   r5   r5   r6   Ú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,  iü  i€  i#  iR  iÃ  i  i§ä iÈ·  )	i“  r   i tU i   i  r   r   r   rÑ   )	é6   rÔ   i $ i ÐN rn   é   rÄ   i·  é   )	iU	  i»  i"  rÌ   iÜ  i4  iã  iŽ  i\  )Únvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r»   )	rÆ   iü  i€  i#  iR  iÃ  i  i§ä iÈ·  r×   r   i  )r;   r   )r1   ÚdÚoutr5   r5   r6   Ú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   r>   r   )r¼   r   Ú
cache_infor;   )r1   r½   Úcacher5   r5   r6   Ú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   r>   ))r¹   r   )r¹   r>   )r¹   r   r   )r¼   r   rÛ   r;   )r1   r½   rÜ   r5   r5   r6   Ú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   r>   ))r¹   r   )r¹   r>   )r¹   r   r   )r¹   r   c                 sF   t  ¡ } ˆ  | d dddddœi¡ ˆ  | d ddtdgƒii¡ d S )	Nr>   r»   r   rÆ   ))r¹   r   )r¹   r>   )r¹   r   r   r¹   )r¹   r   )r   rÛ   r;   rI   )rÜ   )r1   r5   r6   Úassert_,  s    
z0TestWrapNumbers.test_cache_wrap.<locals>.assert_rÈ   rÂ   rÉ   )r¼   r   rÛ   r;   rI   )r1   r½   rÜ   rß   r5   )r1   r6   Ú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Ð   r   r>   ))r¹   r   )r¹   r>   )r¹   r   r   )r¼   r   rÛ   r;   )r1   r½   rÜ   r5   r5   r6   Ú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   rp   r;   rÛ   )r1   r½   r5   r5   r6   Útest_cache_clearZ  s    



z TestWrapNumbers.test_cache_clearznot supportedc             C   s¸   t  ¡ rt  ¡ s|  d¡S t  ¡  t  ¡  t ¡ }x$|D ]}|  d|¡ |  d|¡ q8W t j ¡  t ¡ }x$|D ]}|  d|¡ |  d|¡ qpW t 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$   rp   r'   r;   )r1   ZcachesrÜ   r5   r5   r6   Útest_cache_clear_public_apisc  s     




z,TestWrapNumbers.test_cache_clear_public_apisN)rs   rt   ru   r¸   ZtearDownr¾   r¿   rÅ   rÎ   rÒ   rÓ   rÚ   rÝ   rÞ   rà   rá   râ   r   ÚskipIfr   rã   r5   r5   r5   r6   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}x|D ]}| |¡ q W yt|f|Ž ¡ }W n8 tk
r~ } zdt	|ƒkrlt	|ƒS ‚ W d d }~X Y nX |sŒt
|ƒ‚|S )Nz%sr0   )r-   r”   rb   r   r   ri   r   ÚstripÚRuntimeErrorr%   r…   )Úexerj   rk   ÚcmdÚargrÙ   Úerrr5   r5   r6   Úassert_stdoutƒ  s    
zTestScripts.assert_stdoutNc          	   C   sR   t j t| ¡} tr"t| ddd}n
t| dƒ}| | ¡ }W d Q R X t |¡ d S )NÚrtÚutf8)Úencoding)	r-   r”   rb   r   r	   ÚopenÚreadÚastÚparse)rè   rj   ry   Úsrcr5   r5   r6   Úassert_syntax“  s    
zTestScripts.assert_syntaxc             C   sZ   t | ƒ}xLt t¡D ]>}| d¡rdtj |¡d  |kr|  dtj t|¡ ¡ qW d S )Nz.pyZtest_r   zno test defined for %r script)	rS   r-   Úlistdirr   Úendswithr”   Úsplitextr[   rb   )r1   Zmethsr   r5   r5   r6   Útest_coveragež  s    
zTestScripts.test_coveragez
POSIX onlyc             C   sT   xNt  t¡D ]@}| d¡rt j t|¡}tjt  |¡tj @ s|  	d| ¡ qW d S )Nz.pyz%r is not executable)
r-   rö   r   r÷   r”   rb   ÚstatÚS_IXUSRÚST_MODEr[   )r1   r   r”   r5   r5   r6   Útest_executable¨  s
    
zTestScripts.test_executablec             C   s   |   d¡ d S )Nzdisk_usage.py)rì   )r1   r5   r5   r6   Útest_disk_usage°  s    zTestScripts.test_disk_usagec             C   s   |   d¡ d S )Nzfree.py)rì   )r1   r5   r5   r6   Ú	test_free³  s    zTestScripts.test_freec             C   s   |   d¡ d S )Nz
meminfo.py)rì   )r1   r5   r5   r6   Útest_meminfo¶  s    zTestScripts.test_meminfoc             C   s   |   dtt ¡ ƒ¡ d S )Nzprocinfo.py)rì   r%   r-   r.   )r1   r5   r5   r6   Útest_procinfo¹  s    zTestScripts.test_procinfozno usersc             C   s   |   d¡ d S )Nzwho.py)rì   )r1   r5   r5   r6   Útest_who¼  s    zTestScripts.test_whoc             C   s   |   d¡ d S )Nzps.py)rì   )r1   r5   r5   r6   Útest_psÀ  s    zTestScripts.test_psc             C   s   |   d¡ d S )Nz	pstree.py)rì   )r1   r5   r5   r6   Útest_pstreeÃ  s    zTestScripts.test_pstreec             C   s   |   d¡ d S )Nz
netstat.py)rì   )r1   r5   r5   r6   Útest_netstatÆ  s    zTestScripts.test_netstatc             C   s   |   d¡ d S )Nzifconfig.py)rì   )r1   r5   r5   r6   Útest_ifconfigÉ  s    zTestScripts.test_ifconfigznot supportedc             C   s   |   dtt ¡ ƒ¡ d S )Nzpmap.py)rì   r%   r-   r.   )r1   r5   r5   r6   Ú	test_pmapÌ  s    zTestScripts.test_pmapc             C   s*   dt  ¡  ¡ jkr|  d¡‚|  d¡ d S )NZussznot supportedzprocsmem.py)r!   r"   Zmemory_full_infoÚ_fieldsr«   rì   )r1   r5   r5   r6   Útest_procsmemÐ  s    
zTestScripts.test_procsmemc             C   s   |   d¡ d S )Nz
killall.py)rõ   )r1   r5   r5   r6   Útest_killallÕ  s    zTestScripts.test_killallc             C   s   |   d¡ d S )Nz	nettop.py)rõ   )r1   r5   r5   r6   Útest_nettopØ  s    zTestScripts.test_nettopc             C   s   |   d¡ d S )Nztop.py)rõ   )r1   r5   r5   r6   Útest_topÛ  s    zTestScripts.test_topc             C   s   |   d¡ d S )Nziotop.py)rõ   )r1   r5   r5   r6   Ú
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.   )r1   Úoutputr5   r5   r6   Ú
test_pidofá  s    zTestScripts.test_pidofzWINDOWS onlyc             C   s   |   d¡ d S )Nzwinservices.py)rì   )r1   r5   r5   r6   Útest_winserviceså  s    zTestScripts.test_winservicesc             C   s   |   d¡ d S )Nzcpu_distribution.py)rõ   )r1   r5   r5   r6   Ú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ì   )r1   r5   r5   r6   Ú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ì   )r1   r5   r5   r6   Ú	test_fansò  s    
zTestScripts.test_fansz
no batteryc             C   s   |   d¡ d S )Nz
battery.py)rì   )r1   r5   r5   r6   Útest_batteryø  s    zTestScripts.test_batteryc             C   s   |   d¡ d S )Nz
sensors.py)rì   )r1   r5   r5   r6   Útest_sensorsý  s    zTestScripts.test_sensors)N)+rs   rt   ru   rY   Ú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   r  r   r   r  r  r5   r5   r5   r6   rå   ~  s<   

rå   Ú__main__)Úrun_from_name)5rY   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   rc   Z	PYTHON_39r   Ú
namedtupler¼   r·   rä   r”   r¥   rå   rs   Zpsutil.tests.runnerr  r–   r5   r5   r5   r6   Ú<module>
   sd     S p 
