U
    +È-eˆ  ã                   @   sh  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
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"„ d"e(ƒZ,G d#d$„ d$e(ƒZ-G d%d&„ d&e(ƒZ.G d'd(„ d(e(ƒZ/e 0d)d*¡Z1G d+d,„ d,e(ƒZ2e	 3ej4 5e'¡ d-¡G d.d/„ d/e(ƒƒZ6e7d0krddd1l8m9Z9 e9e:ƒ dS )2zMiscellaneous tests.é    N)ÚLINUX)ÚPOSIX)ÚWINDOWS)Úbcat)Úcat)Údebug)Úisfile_strict)Úmemoize)Úmemoize_when_activated)Úparse_environ_block)Úsupports_ipv6)Úwrap_numbers)ÚPY3)ÚFileNotFoundError)Ú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)ÚPYTHON_EXE_ENV)ÚSCRIPTS_DIR)ÚPsutilTestCase)Úmock)Úreload_module)Úshc                   @   sˆ   e Zd Z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S ) ÚTestSpecialMethodsc              	   C   sR   |   t¡ tjj dd ¡ W 5 Q R X |   tj¡ t dd ¡ W 5 Q R X d S )Né   é€   )ÚassertRaisesÚOverflowErrorÚpsutilZ_psplatformZcextZcheck_pid_rangeÚNoSuchProcessÚProcess©Úself© r*   úW/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/psutil/tests/test_misc.pyÚtest_check_pid_range=   s    z'TestSpecialMethods.test_check_pid_rangec              	   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©Zside_effectzstatus='zombie'zname=Z
terminated)r%   r'   Zspawn_testprocÚpidÚassertInÚstrr-   ÚreplaceÚassertNotInÚ	terminateÚwaitr   ÚpatchÚobjectÚZombieProcessÚosÚgetpidr&   ÚAccessDenied)r)   ÚfuncÚpÚrr*   r*   r+   Útest_process__repr__C   sJ    
ÿÿÿÿz'TestSpecialMethods.test_process__repr__c                 C   s   | j td d S )N)r<   )r?   r1   r(   r*   r*   r+   Útest_process__str__g   s    z&TestSpecialMethods.test_process__str__c                 C   s   |   tt ¡ ƒd¡ d S )Nzpsutil.Error())ÚassertEqualÚreprr%   ÚErrorr(   r*   r*   r+   Útest_error__repr__j   s    z%TestSpecialMethods.test_error__repr__c                 C   s   |   tt ¡ ƒd¡ d S )NÚ )rA   r1   r%   rC   r(   r*   r*   r+   Útest_error__str__m   s    z$TestSpecialMethods.test_error__str__c                 C   s6   |   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-   rH   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rA   rB   r%   r&   r(   r*   r*   r+   Útest_no_such_process__repr__p   s    þþz/TestSpecialMethods.test_no_such_process__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrG   z"process no longer exists (pid=321)r-   rH   rI   úmsg (pid=321, name='name'))rA   r1   r%   r&   r(   r*   r*   r+   Útest_no_such_process__str__x   s    þþz.TestSpecialMethods.test_no_such_process__str__c              	   C   s8   |   tt d¡ƒd¡ |   ttjdddddƒd¡ d S )NrG   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r-   é@  Úfoo©r-   ZppidrH   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rA   rB   r%   r8   r(   r*   r*   r+   Útest_zombie_process__repr__€   s    þþz.TestSpecialMethods.test_zombie_process__repr__c              	   C   s8   |   tt d¡ƒd¡ |   ttjdddddƒd¡ d S )NrG   z,PID still exists but it's a zombie (pid=321)r-   rM   rN   rO   z$foo (pid=321, ppid=320, name='name'))rA   r1   r%   r8   r(   r*   r*   r+   Útest_zombie_process__str__‰   s    þþz-TestSpecialMethods.test_zombie_process__str__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrG   zpsutil.AccessDenied(pid=321)r-   rH   rI   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rA   rB   r%   r;   r(   r*   r*   r+   Útest_access_denied__repr__‘   s    þþz-TestSpecialMethods.test_access_denied__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrG   z	(pid=321)r-   rH   rI   rK   )rA   r1   r%   r;   r(   r*   r*   r+   Útest_access_denied__str__™   s    þþz,TestSpecialMethods.test_access_denied__str__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )Né   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rG   r-   ©r/   r-   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rA   rB   r%   ÚTimeoutExpiredr(   r*   r*   r+   Útest_timeout_expired__repr__¡   s    þþz/TestSpecialMethods.test_timeout_expired__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrT   ztimeout after 5 secondsrG   r-   rU   z.timeout after 5 seconds (pid=321, name='name'))rA   r1   r%   rV   r(   r*   r*   r+   Útest_timeout_expired__str__ª   s    þþz.TestSpecialMethods.test_timeout_expired__str__c                 C   s>   t  ¡ }t  ¡ }|  ||¡ d|_|  ||¡ |  |d¡ d S )N)r   r   rN   )r%   r'   rA   Ú_identÚassertNotEqual)r)   Úp1Úp2r*   r*   r+   Útest_process__eq__²   s    z%TestSpecialMethods.test_process__eq__c                 C   s(   t t ¡ t ¡ gƒ}|  t|ƒd¡ d S )Né   )Úsetr%   r'   rA   Úlen)r)   Úsr*   r*   r+   Útest_process__hash__º   s    z'TestSpecialMethods.test_process__hash__N)Ú__name__Ú
__module__Ú__qualname__r,   rB   r?   r@   rD   rF   rJ   rL   rP   rQ   rR   rS   rW   rX   r]   rb   r*   r*   r*   r+   r    ;   s   $		r    c                   @   s<   e Z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 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Ú_Ú
deprecatedz%r not in psutil.__all__)Údirr%   Ú
startswithÚ
__import__ÚImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr0   )r)   Z
dir_psutilr-   Zfunr*   r*   r+   Ú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 r*   )r1   )Ú.0Úxr*   r*   r+   Ú
<listcomp>à   s     z)TestMisc.test_version.<locals>.<listcomp>)rA   Újoinr%   Úversion_infoÚ__version__r(   r*   r*   r+   Útest_versionß   s    ÿzTestMisc.test_versionc                 C   s"   t  ¡ }d|_|  d| ¡ ¡ d S )NÚ1rN   )r%   r'   rN   r3   Úas_dict)r)   r=   r*   r*   r+   Ú!test_process_as_dict_no_new_namesã   s    z*TestMisc.test_process_as_dict_no_new_namesc                    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ÚpicklerA   )ÚretÚaÚbr(   r*   r+   Úcheckê   s
    

z*TestMisc.test_serialization.<locals>.checkr   )Úintervalz/proc/diskstats)r%   r'   r   Zvirtual_memoryZswap_memoryZ	cpu_timesZcpu_times_percentÚnet_io_countersr   r9   ÚpathÚexistsr   Údisk_io_countersZdisk_partitionsÚ
disk_usageÚgetcwdÚusers)r)   r‹   r*   r(   r+   Útest_serializationé   s    zTestMisc.test_serializationc              
   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.   r^   )r   r6   r7   r%   r'   r;   ÚcalledÚAssertionErrorr8   Ú
ValueErrorr#   )r)   Úmethr*   r*   r+   Útest_ad_on_process_creation
  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.0©Zreturn_valuezversion conflict)
r   r6   r#   rq   r   r%   r0   r1   Ú	exceptionru   )r)   Úcmr*   r*   r+   Útest_sanity_version_check  s     ÿz"TestMisc.test_sanity_version_checkN)	rc   rd   re   rw   r   r‚   r”   r™   r   r*   r*   r*   r+   rf   Ä   s   !rf   c                   @   sR   e Zd Zdd„ ZeZddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestMemoizeDecoratorc                 C   s
   g | _ d S rƒ   ©Úcallsr(   r*   r*   r+   ÚsetUp+  s    zTestMemoizeDecorator.setUpNc              	   C   s,  t dƒD ]2}|ƒ }|  | jdi fg¡ |d k	r|  ||¡ qt dƒD ]:}|dƒ}|  | jdi fdi fg¡ |d k	rD|  ||¡ qDt dƒD ]H}|ddd}|  | jdi fdi fdddifg¡ |d k	rˆ|  ||¡ qˆ|  t| jƒd¡ | ¡  |ƒ }|d k	r|  ||¡ |  t| jƒd¡ |  |jd	¡ d S )
Nr!   r*   r^   ©r^   ©Úbarr¤   é   é   úMy docstring.)ÚrangerA   r    r`   Úcache_clearrt   )r)   ÚobjÚexpected_retvalrl   rˆ   r*   r*   r+   Úrun_against0  s2     ÿ
z TestMemoizeDecorator.run_againstc                    s&   t ‡ fdd„ƒ}| ‰ | j|dd d S )Nc                     s   ˆ j  | |f¡ dS ©r§   é   ©r    Úappend©ÚargsÚkwargs©Z	baseclassr*   r+   rN   O  s    z/TestMemoizeDecorator.test_function.<locals>.foor®   ©r«   )r	   r¬   )r)   rN   r*   r´   r+   Útest_functionN  s    z"TestMemoizeDecorator.test_functionc                    s>   t G ‡ fdd„dƒƒ}| ‰ | j|d d |  |ƒ  ¡ d¡ d S )Nc                       s$   e Zd ZdZ‡ fdd„Zdd„ ZdS )z,TestMemoizeDecorator.test_class.<locals>.Foor§   c                    s   ˆ j  ||f¡ d S rƒ   r¯   ©r)   r²   r³   r´   r*   r+   Ú__init__]  s    z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__c                 S   s   dS )Nr®   r*   r(   r*   r*   r+   r¤   `  s    z0TestMemoizeDecorator.test_class.<locals>.Foo.barN)rc   rd   re   rt   r¸   r¤   r*   r´   r*   r+   ÚFooY  s   r¹   rµ   r®   )r	   r¬   rA   r¤   ©r)   r¹   r*   r´   r+   Ú
test_classX  s
    	zTestMemoizeDecorator.test_classc                 C   sš   t G dd„ dƒƒ}|  |ƒ |ƒ ¡ |  t|ƒ ƒt|ƒ ƒ¡ |  t|dƒƒt|dƒƒ¡ |  t|dddƒt|dddƒ¡ |  t|dƒƒt|dƒƒ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                 _   s   d S rƒ   r*   r·   r*   r*   r+   r¸   k  s    z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)rc   rd   re   r¸   r*   r*   r*   r+   ÚBari  s   r¼   r^   r¥   )rN   r!   )r	   ZassertIsrA   ÚidrZ   )r)   r¼   r*   r*   r+   Útest_class_singletong  s    $z)TestMemoizeDecorator.test_class_singletonc                    s,   G ‡ fdd„dƒ}| ‰ | j |ƒ jdd d S )Nc                       s    e Zd Zee‡ fdd„ƒƒZdS )z3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                     s   ˆ j  | |f¡ dS r­   r¯   r±   r´   r*   r+   r¤   v  s    z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)rc   rd   re   Ústaticmethodr	   r¤   r*   r´   r*   r+   r¹   u  s   r¹   r®   rµ   ©r¬   r¤   rº   r*   r´   r+   Útest_staticmethodt  s    z&TestMemoizeDecorator.test_staticmethodc                    s,   G ‡ fdd„dƒ}| ‰ | j |ƒ jdd d S )Nc                       s    e Zd Zee‡ fdd„ƒƒZdS )z2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                    s   ˆ j  ||f¡ dS r­   r¯   )Úclsr²   r³   r´   r*   r+   r¤   ‚  s    z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)rc   rd   re   Úclassmethodr	   r¤   r*   r´   r*   r+   r¹     s   r¹   r®   rµ   rÀ   rº   r*   r´   r+   Útest_classmethod€  s    z%TestMemoizeDecorator.test_classmethodc                    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 docstring.N©r°   r±   rŸ   r*   r+   rN     s    
z/TestMemoizeDecorator.test_original.<locals>.foor!   r*   r^   r¢   r£   r¤   r¥   r¦   rÅ   )r	   r¨   rA   r`   r©   rt   )r)   rN   rl   rˆ   Úexpectedr*   rŸ   r+   Útest_originalŒ  s0    z"TestMemoizeDecorator.test_original)N)rc   rd   re   r¡   ÚtearDownr¬   r¶   r»   r¾   rÁ   rÄ   rÈ   r*   r*   r*   r+   rž   )  s   

rž   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestCommonModulec                    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 )z9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                    s   ˆ   d ¡ d S rƒ   rÆ   r(   rŸ   r*   r+   rN   ·  s    z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)rc   rd   re   r
   rN   r*   rŸ   r*   r+   r¹   µ  s   r¹   r!   r^   )rN   rA   r`   Zcache_activateZcache_deactivate)r)   r¹   Úfr*   rŸ   r+   Útest_memoize_when_activated´  s     z,TestCommonModule.test_memoize_when_activatedc                 C   sÌ   dd„ }|   tdƒ|dƒdi¡ |   tdƒ|dƒd|dƒdi¡ |   td	ƒ|dƒd|dƒd
i¡ |   tdƒ|dƒd|dƒdi¡ |   tdƒ|dƒdi¡ |   tdƒ|dƒdi¡ |   tdƒ|dƒdi¡ d S )Nc                 S   s   t r|  ¡ S | S rƒ   )r   Úupper)ra   r*   r*   r+   ÚkÐ  s    z4TestCommonModule.test_parse_environ_block.<locals>.kza=1 r‰   r€   z	a=1 b=2  rŠ   Ú2za=1 b=  rE   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)rA   r   )r)   rÎ   r*   r*   r+   Útest_parse_environ_blockÏ  s     

ÿ
ÿ
ÿ
ÿz)TestCommonModule.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 nB|  tj¡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   r©   r   r6   Úhas_ipv6r–   ÚsocketÚerrorr•   Úgaierrorr#   ÚAF_INET6ÚSOCK_STREAMÚcloseÚbind)r)   ra   Úsockr*   r*   r+   Útest_supports_ipv6â  sD    ÿ
ÿ
ÿ
z#TestCommonModule.test_supports_ipv6c              	   C   sä   t j t¡}t|ƒst‚tt j |¡ƒr,t‚tjdt	t
jdƒd |  t	t|¡ W 5 Q R X tjdt	t
jdƒd |  t	t|¡ W 5 Q R X tjdt	t
jdƒd t|ƒr°t‚W 5 Q R X tjddd t|ƒrÖt‚W 5 Q R X d S )Nzpsutil._common.os.statrN   r.   zpsutil._common.stat.S_ISREGFrš   )r9   rŽ   ÚabspathÚ__file__r   r–   Údirnamer   r6   ÚOSErrorÚerrnoÚEPERMr#   ÚEACCESÚENOENT)r)   Z	this_filer*   r*   r+   Útest_isfile_strict  s"    
ÿ
ÿ
ÿz#TestCommonModule.test_isfile_strictc              	   C   s
  t rddlm} nddlm} t|ƒ ƒ}tdƒ W 5 Q R X | ¡ }| d¡sVt|ƒ‚|  d|¡ |  t	 
dd¡|¡ t|ƒ ƒ}ttdƒƒ W 5 Q R X | ¡ }|  d|¡ |  d	|¡ t|ƒ ƒ}td
dƒ}d|_t|ƒ W 5 Q R X | ¡ }|  d|¡ |  d|¡ d S )Nr   )ÚStringIOZhellozpsutil-debugz.pycú.pyzthis is an errorzignoring ValueErrorz'this is an error'r!   zno such filez/foo)r   Úiorä   r   r   Úgetvaluero   r–   r0   rÜ   r2   r—   rÞ   Úfilename)r)   rä   rË   rH   Úexcr*   r*   r+   Ú
test_debug  s*    
zTestCommonModule.test_debugc              	   C   s    |   ¡ }t|dƒ}| d¡ W 5 Q R X |  t|ƒd¡ |  t|ƒd¡ |  tt|d ¡ |  tt|d ¡ |  t|d ddd¡ |  t|d ddd¡ d S )NÚwrN   s   fooz-invalidr¤   )Úfallback)Z
get_testfnÚopenÚwriterA   r   r   r#   r   )r)   ZtestfnrË   r*   r*   r+   Útest_cat_bcat2  s    zTestCommonModule.test_cat_bcatN)	rc   rd   re   rÌ   rÐ   rÚ   rã   rê   rï   r*   r*   r*   r+   rÊ   ²  s   #rÊ   rN   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©   r(   r*   r*   r+   r¡   H  s    zTestWrapNumbers.setUpc                 C   s&   dt dddƒi}|  t|dƒ|¡ d S ©NÚdisk1rT   Údisk_io©ÚntrA   r   ©r)   Úinputr*   r*   r+   Útest_first_callM  s    zTestWrapNumbers.test_first_callc                 C   s8   dt dddƒi}|  t|dƒ|¡ |  t|dƒ|¡ d S rñ   rô   rö   r*   r*   r+   Útest_input_hasnt_changedQ  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ò   rT   ró   é
   é   é   é   é   rô   rö   r*   r*   r+   Útest_increase_but_no_wrapV  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*   r*   r+   Ú	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ò   rT   ró   é   ©rò   Zdisk2é   rô   rö   r*   r*   r+   Ú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*   r+   Ú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 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  )rA   r   )r)   ÚdÚoutr*   r*   r+   Ú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ò   rT   ró   r   r^   r!   ©rõ   r   Ú
cache_inforA   ©r)   r÷   Úcacher*   r*   r+   Ú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ò   rT   ró   rú   r   r^   ©)rò   r   )rò   r^   ©rò   r!   r!   r  r  r*   r*   r+   Ú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#  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  rA   r_   )r   r(   r*   r+   Úcheck_cache_infoã  s    ÿþ
ÿz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infor  rü   r  )rõ   r   r  rA   r_   )r)   r÷   r   r%  r*   r(   r+   Ú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ò   rT   ró   r	  r
  r   r^   r"  r!   r  r  r*   r*   r+   Útest_cache_changing_keys  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ò   rT   ró   z?!?)rõ   r   r©   rA   r  rö   r*   r*   r+   Ú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|¡ 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   ÚskipTestr   r  r0   r©   r3   rA   )r)   Úcachesr   r*   r*   r+   Útest_cache_clear_public_apis  s     


z,TestWrapNumbers.test_cache_clear_public_apisN)rc   rd   re   r¡   rÉ   rø   rù   rÿ   r  r  r  r  r!  r$  r&  r'  r(  ÚunittestÚskipIfr   r,  r*   r*   r*   r+   rð   F  s    
%0	rð   zcan't locate scripts directoryc                   @   s|  e Zd ZdZedd„ ƒZe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ore ¡  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.d/„ ƒZ!d0d1„ Z"e 	e# d¡d2d3„ ƒZ$e 	e% d¡d4d5„ ƒZ&e 	e' d¡e 	e( d6¡d7d8„ ƒƒZ)e 	e' d¡e 	e( d6¡d9d:„ ƒƒZ*d;S )<ÚTestScriptsz-Tests for scripts in the "scripts" directory.c              
   O   s    |  dt¡ dtj t| ¡ } t| g}|D ]}| |¡ q*zt|f|Ž 	¡ }W n@ t
k
rŽ } z"dt|ƒkr|t|ƒ W Y ¢S ‚ W 5 d }~X Y nX |sœt|ƒ‚|S )NÚenvz%sr;   )Ú
setdefaultr   r9   rŽ   r|   r   r   r°   r   ÚstripÚRuntimeErrorr1   r–   )Úexer²   r³   ÚcmdÚargr  Úerrr*   r*   r+   Úassert_stdout:  s    zTestScripts.assert_stdoutc              	   C   sH   t j t| ¡} trt| ddnt| ƒ}| ¡ }W 5 Q R X t |¡ d S )NÚutf8)Úencoding)	r9   rŽ   r|   r   r   rí   ÚreadÚastÚparse)r4  rË   Úsrcr*   r*   r+   Úassert_syntaxK  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 )Nrå   Ztest_r   zno test defined for %r script)	rn   r9   Úlistdirr   ÚendswithrŽ   Úsplitextrv   r|   )r)   Zmethsr-   r*   r*   r+   Útest_coverageR  s    
ÿzTestScripts.test_coveragez
POSIX onlyc                 C   s`   t  t¡D ]P\}}}|D ]@}| d¡rt j ||¡}tjt  |¡tj @ s|  	d| ¡‚qq
d S )Nrå   z%r is not executable)
r9   Úwalkr   rA  rŽ   r|   ÚstatÚS_IXUSRÚST_MODErv   )r)   ÚrootÚdirsÚfilesÚfilerŽ   r*   r*   r+   Útest_executable\  s    
zTestScripts.test_executablec                 C   s   |   d¡ d S )Nzdisk_usage.py©r8  r(   r*   r*   r+   Útest_disk_usagee  s    zTestScripts.test_disk_usagec                 C   s   |   d¡ d S )Nzfree.pyrM  r(   r*   r*   r+   Ú	test_freeh  s    zTestScripts.test_freec                 C   s   |   d¡ d S )Nz
meminfo.pyrM  r(   r*   r*   r+   Útest_meminfok  s    zTestScripts.test_meminfoc                 C   s   |   dtt ¡ ƒ¡ d S )Nzprocinfo.py©r8  r1   r9   r:   r(   r*   r*   r+   Útest_procinfon  s    zTestScripts.test_procinfozno usersc                 C   s   |   d¡ d S )Nzwho.pyrM  r(   r*   r*   r+   Útest_whoq  s    zTestScripts.test_whoc                 C   s   |   d¡ d S )Nzps.pyrM  r(   r*   r*   r+   Útest_psu  s    zTestScripts.test_psc                 C   s   |   d¡ d S )Nz	pstree.pyrM  r(   r*   r*   r+   Útest_pstreex  s    zTestScripts.test_pstreec                 C   s   |   d¡ d S )Nz
netstat.pyrM  r(   r*   r*   r+   Útest_netstat{  s    zTestScripts.test_netstatc                 C   s   |   d¡ d S )Nzifconfig.pyrM  r(   r*   r*   r+   Útest_ifconfig~  s    zTestScripts.test_ifconfigr)  c                 C   s   |   dtt ¡ ƒ¡ d S )Nzpmap.pyrQ  r(   r*   r*   r+   Ú	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*  r8  r(   r*   r*   r+   Útest_procsmem…  s    
zTestScripts.test_procsmemc                 C   s   |   d¡ d S )Nz
killall.py©r?  r(   r*   r*   r+   Útest_killallŠ  s    zTestScripts.test_killallc                 C   s   |   d¡ d S )Nz	nettop.pyr[  r(   r*   r*   r+   Útest_nettop  s    zTestScripts.test_nettopc                 C   s   |   d¡ d S )Nztop.pyr[  r(   r*   r*   r+   Útest_top  s    zTestScripts.test_topc                 C   s   |   d¡ d S )Nziotop.pyr[  r(   r*   r*   r+   Ú
test_iotop“  s    zTestScripts.test_iotopc                 C   s,   |   dt ¡  ¡ ¡}|  tt ¡ ƒ|¡ d S )Nzpidof.py)r8  r%   r'   r-   r0   r1   r9   r:   )r)   Úoutputr*   r*   r+   Ú
test_pidof–  s    zTestScripts.test_pidofzWINDOWS onlyc                 C   s   |   d¡ d S )Nzwinservices.pyrM  r(   r*   r*   r+   Útest_winservicesš  s    zTestScripts.test_winservicesc                 C   s   |   d¡ d S )Nzcpu_distribution.pyr[  r(   r*   r*   r+   Ú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*  r8  r(   r*   r*   r+   Útest_temperatures¡  s    
zTestScripts.test_temperaturesc                 C   s    t  ¡ s|  d¡ |  d¡ d S )Nzno fanszfans.py)r%   Zsensors_fansr*  r8  r(   r*   r*   r+   Ú	test_fans§  s    
zTestScripts.test_fansz
no batteryc                 C   s   |   d¡ d S )Nz
battery.pyrM  r(   r*   r*   r+   Útest_battery­  s    zTestScripts.test_batteryc                 C   s   |   d¡ d S )Nz
sensors.pyrM  r(   r*   r*   r+   Útest_sensors²  s    zTestScripts.test_sensorsN)+rc   rd   re   rt   r¿   r8  r?  rC  r-  r.  r   rL  rN  rO  rP  rR  r   r%   r“   rS  rT  rU  rV  rW  r   rX  rZ  r\  r]  r^  r_  ra  r   rb  rc  r   rd  r   re  r   r   rf  rg  r*   r*   r*   r+   r/  5  sN   








r/  Ú__main__)Úrun_from_name);rt   r<  Úcollectionsrß   r„   r9   r‡   rÒ   rE  r-  r%   Zpsutil.testsr   r   r   Zpsutil._commonr   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    rf   rž   rÊ   Ú
namedtuplerõ   rð   r.  rŽ   r   r/  rc   Zpsutil.tests.runnerri  rÜ   r*   r*   r*   r+   Ú<module>   sv    
e 
  pÿ 
