o
    adf-                     @   sl  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j45e' d-G d.d/ d/e(Z6e7d0kr4dd1l8m9Z9 e9e: dS 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   s|   |  t tjjdd  W d    n1 sw   Y  |  tj tdd  W d    d S 1 s7w   Y  d S )N      )assertRaisesOverflowErrorpsutilZ_psplatformZcextZcheck_pid_rangeNoSuchProcessProcessself r*   _/var/www/html/software/conda/envs/catlas/lib/python3.10/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 d    n1 sw   Y  tjjt jd	t t d
% t  }||}| d|j | | d| | d| W d    n1 sw   Y  tjjt jd	t t d
  t  }||}| d|j | | d| W d    d S 1 sw   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)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__B   s\   

"z'TestSpecialMethods.test_process__repr__c                 C   s   | j td d S )N)r<   )r?   r1   r(   r*   r*   r+   test_process__str__p      z&TestSpecialMethods.test_process__str__c                 C      |  tt d d S )Nzpsutil.Error())assertEqualreprr%   Errorr(   r*   r*   r+   test_error__repr__s      z%TestSpecialMethods.test_error__repr__c                 C   rB   )N )rC   r1   r%   rE   r(   r*   r*   r+   test_error__str__v   rG   z$TestSpecialMethods.test_error__str__c                 C   6   |  ttdd |  ttjddddd d S )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r-   msgr-   rL   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rC   rD   r%   r&   r(   r*   r*   r+   test_no_such_process__repr__y      z/TestSpecialMethods.test_no_such_process__repr__c                 C   rJ   )NrK   z"process no longer exists (pid=321)r-   rL   rM   msg (pid=321, name='name'))rC   r1   r%   r&   r(   r*   r*   r+   test_no_such_process__str__   rO   z.TestSpecialMethods.test_no_such_process__str__c              	   C   8   |  ttdd |  ttjdddddd d S )NrK   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r-   @  foor-   ZppidrL   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rC   rD   r%   r8   r(   r*   r*   r+   test_zombie_process__repr__   s   z.TestSpecialMethods.test_zombie_process__repr__c              	   C   rR   )NrK   z,PID still exists but it's a zombie (pid=321)r-   rS   rT   rU   z$foo (pid=321, ppid=320, name='name'))rC   r1   r%   r8   r(   r*   r*   r+   test_zombie_process__str__   s   z-TestSpecialMethods.test_zombie_process__str__c                 C   rJ   )NrK   zpsutil.AccessDenied(pid=321)r-   rL   rM   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rC   rD   r%   r;   r(   r*   r*   r+   test_access_denied__repr__      z-TestSpecialMethods.test_access_denied__repr__c                 C   rJ   )NrK   z	(pid=321)r-   rL   rM   rP   )rC   r1   r%   r;   r(   r*   r*   r+   test_access_denied__str__   s
   z,TestSpecialMethods.test_access_denied__str__c                 C   rJ   )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rK   r-   r/   r-   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rC   rD   r%   TimeoutExpiredr(   r*   r*   r+   test_timeout_expired__repr__   rO   z/TestSpecialMethods.test_timeout_expired__repr__c                 C   rJ   )Nr[   ztimeout after 5 secondsrK   r-   r\   z.timeout after 5 seconds (pid=321, name='name'))rC   r1   r%   r]   r(   r*   r*   r+   test_timeout_expired__str__   rY   z.TestSpecialMethods.test_timeout_expired__str__c                 C   s>   t  }t  }| || d|_| || | |d d S )N)r   r   rT   )r%   r'   rC   _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'   rC   len)r)   sr*   r*   r+   test_process__hash__   s   z'TestSpecialMethods.test_process__hash__N)__name__
__module____qualname__r,   rD   r?   r@   rF   rI   rN   rQ   rV   rW   rX   rZ   r^   r_   rd   ri   r*   r*   r*   r+   r    ;   s     .


		r    c                   @   <   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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)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>)rC   joinr%   version_info__version__r(   r*   r*   r+   test_version   s   zTestMisc.test_versionc                 C   s"   t  }d|_| d|  d S )N1rT   )r%   r'   rT   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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 N)jsonloadsdumpspicklerC   )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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.   re   )
r   r6   r7   r%   r'   r;   calledr8   
ValueErrorr#   )r)   methr*   r*   r+   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.0return_valuezversion conflict)
r   r6   r#   ry   r   r%   r0   r1   	exceptionr}   )r)   cmr*   r*   r+   test_sanity_version_check9  s   
"z"TestMisc.test_sanity_version_checkN)	rj   rk   rl   r   r   r   r   r   r   r*   r*   r*   r+   rn      s     !rn   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+   setUpI  s   
zTestMemoizeDecorator.setUpNc              	   C   s*  t dD ]}| }| | jdi fg |d ur| || qt dD ]}|d}| | jdi fdi fg |d ur?| || q"t dD ]$}|ddd}| | jdi fdi fdddifg |d urh| || qD| t| jd |  | }|d ur| || | t| jd | |jd	 d S )
Nr!   r*   re   re   barr         My docstring.)rangerC   r   rg   cache_clearr|   )r)   objexpected_retvalrt   r   r*   r*   r+   run_againstN  s6   z TestMemoizeDecorator.run_againstc                    s&   t  fdd}|  | j|dd d S )Nc                         j | |f dS r      r   appendargskwargsZ	baseclassr*   r+   rT   n  s   z/TestMemoizeDecorator.test_function.<locals>.foor   r   )r	   r   )r)   rT   r*   r   r+   test_functionm  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        z0TestMemoizeDecorator.test_class.<locals>.Foo.barN)rj   rk   rl   r|   r   r   r*   r   r*   r+   Foox  s    r   r   r   )r	   r   rC   r   r)   r   r*   r   r+   
test_classw  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     r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)rj   rk   rl   r   r*   r*   r*   r+   Bar  s    r   re   r   )rT   r!   )r	   ZassertIsrC   idra   )r)   r   r*   r*   r+   test_class_singleton  s   $ z)TestMemoizeDecorator.test_class_singletonc                    ,   G  fddd}|  | j | jdd d S )Nc                           e Zd Zee fddZdS )z3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                     r   r   r   r   r   r*   r+   r        z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)rj   rk   rl   staticmethodr	   r   r*   r   r*   r+   r         r   r   r   r   r   r   r*   r   r+   test_staticmethod     z&TestMemoizeDecorator.test_staticmethodc                    r   )Nc                       r   )z2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                    s    j ||f dS r   r   )clsr   r   r   r*   r+   r     r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)rj   rk   rl   classmethodr	   r   r*   r   r*   r+   r     r   r   r   r   r   r   r*   r   r+   test_classmethod  r   z%TestMemoizeDecorator.test_classmethodc                    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 docstring.Nr   r   r   r*   r+   rT     s   
z/TestMemoizeDecorator.test_original.<locals>.foor!   r*   re   r   r   r   r   r   r   )r	   r   rC   rg   r   r|   )r)   rT   rt   r   expectedr*   r   r+   test_original  s0   z"TestMemoizeDecorator.test_originalr   )rj   rk   rl   r   tearDownr   r   r   r   r   r   r   r*   r*   r*   r+   r   H  s    

r   c                   @   rm   )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+   rT        z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)rj   rk   rl   r
   rT   r*   r   r*   r+   r     s    r   r!   re   )rT   rC   rg   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)rh   r*   r*   r+   k  rA   z4TestCommonModule.test_parse_environ_block.<locals>.kza=1 r   r   z	a=1 b=2  r   2za=1 b=  rH   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)rC   r   )r)   r   r*   r*   r+   test_parse_environ_block  s   z)TestCommonModule.test_parse_environ_blockc              	   C   s  |  tj t rt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 rJ t  |jsJ W d    d S 1 sw   Y  d S | 
tj" ttjtj}z|d W |  n|  w W d    d S 1 sw   Y  d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr.   z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   r   r   r6   has_ipv6socketerrorr   gaierrorr#   AF_INET6SOCK_STREAMbindclose)r)   rh   sockr*   r*   r+   test_supports_ipv6  sP   


""z#TestCommonModule.test_supports_ipv6c                 C   s6  t jt}t|sJ tt j|rJ tjdtt	j
dd | tt| W d    n1 s3w   Y  tjdtt	jdd | tt| W d    n1 sUw   Y  tjdtt	jdd t|rlJ W d    n1 svw   Y  tjddd t|rJ W d    d S 1 sw   Y  d S )Nzpsutil._common.os.statrT   r.   zpsutil._common.stat.S_ISREGFr   )r9   r   abspath__file__r   dirnamer   r6   OSErrorerrnoEPERMr#   EACCESENOENT)r)   Z	this_filer*   r*   r+   test_isfile_strict)  s*   "z#TestCommonModule.test_isfile_strictc                 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 sw   Y  | }| 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   getvaluerw   r0   r   r2   r   r   filename)r)   r   r   rL   excr*   r*   r+   
test_debug<  s0   


zTestCommonModule.test_debugc                 C   s   |   }t|d}|d W d    n1 sw   Y  | t|d | t|d | tt|d  | tt|d  | t|d ddd | t|d ddd d S )NwrT   s   fooz-invalidr   )fallback)Z
get_testfnopenwriterC   r   r   r#   r   )r)   Ztestfnr   r*   r*   r+   test_cat_bcatY  s   zTestCommonModule.test_cat_bcatN)	rj   rk   rl   r   r   r   r   r   r   r*   r*   r*   r+   r     s    'r   rT   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   n  s   zTestWrapNumbers.setUpc                 C   s&   dt dddi}| t|d| d S Ndisk1r[   disk_iontrC   r   r)   inputr*   r*   r+   test_first_calls  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_changedw  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*   r*   r+   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*   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  r[   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  )rC   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  r[   r  r   re   r!   r  r   
cache_inforC   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  r[   r  r
  r   re   )r  r   )r  re   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   re   r2  r!   r3  c                     sF   t  }  | d dddddi  | d ddtdgii d S )	Nre   r  r   r  r2  r!   r  r3  )r   r.  rC   rf   )r0  r(   r*   r+   check_cache_info  s   
z9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infor  r  r  )r  r   r.  rC   rf   )r)   r  r0  r5  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  r[   r  r  r  r   re   r2  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  r[   r  z?!?)r  r   r   rC   r.  r  r*   r*   r+   test_cache_clearI  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   skipTestr   r.  r0   r   r3   rC   )r)   cachesr0  r*   r*   r+   test_cache_clear_public_apisR  s    


z,TestWrapNumbers.test_cache_clear_public_apisN)rj   rk   rl   r   r   r  r	  r  r  r  r  r,  r1  r4  r6  r7  r8  unittestskipIfr   r<  r*   r*   r*   r+   r   m  s"    
-9	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o9e  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i |	 }W n t
yF } zdt|v rAt|W  Y d }~S  d }~ww |sMJ ||S )Nenvz%sr;   )
setdefaultr   r9   r   r   r   r   r   r   stripRuntimeErrorr1   )exer   r   cmdargr+  errr*   r*   r+   assert_stdouts  s   zTestScripts.assert_stdoutc                 C   s\   t jt| } trt| ddnt| }| }W d    n1 s"w   Y  t| d S )Nutf8)encoding)	r9   r   r   r   r   r   readastparse)rD  r   srcr*   r*   r+   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)	rv   r9   listdirr   endswithr   splitextr~   r   )r)   Zmethsr-   r*   r*   r+   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)
r9   walkr   rQ  r   r   statS_IXUSRST_MODEr~   )r)   rootdirsfilesfiler   r*   r*   r+   test_executable  s   
zTestScripts.test_executablec                 C      |  d d S )Nzdisk_usage.pyrH  r(   r*   r*   r+   test_disk_usage     zTestScripts.test_disk_usagec                 C   r]  )Nzfree.pyr^  r(   r*   r*   r+   	test_free  r`  zTestScripts.test_freec                 C   r]  )Nz
meminfo.pyr^  r(   r*   r*   r+   test_meminfo  r`  zTestScripts.test_meminfoc                 C      |  dtt  d S )Nzprocinfo.pyrH  r1   r9   r:   r(   r*   r*   r+   test_procinfo  rG   zTestScripts.test_procinfozno usersc                 C   r]  )Nzwho.pyr^  r(   r*   r*   r+   test_who  r   zTestScripts.test_whoc                 C   r]  )Nzps.pyr^  r(   r*   r*   r+   test_ps  r`  zTestScripts.test_psc                 C   r]  )Nz	pstree.pyr^  r(   r*   r*   r+   test_pstree  r`  zTestScripts.test_pstreec                 C   r]  )Nz
netstat.pyr^  r(   r*   r*   r+   test_netstat  r`  zTestScripts.test_netstatc                 C   r]  )Nzifconfig.pyr^  r(   r*   r*   r+   test_ifconfig  r`  zTestScripts.test_ifconfigr9  c                 C   rc  )Nzpmap.pyrd  r(   r*   r*   r+   	test_pmap  s   zTestScripts.test_pmapc                 C   s*   dt   jvr| d| d d S )NZussr9  zprocsmem.py)r%   r'   Zmemory_full_info_fieldsr:  rH  r(   r*   r*   r+   test_procsmem  s   
zTestScripts.test_procsmemc                 C   r]  )Nz
killall.pyrO  r(   r*   r*   r+   test_killall  r`  zTestScripts.test_killallc                 C   r]  )Nz	nettop.pyrn  r(   r*   r*   r+   test_nettop  r`  zTestScripts.test_nettopc                 C   r]  )Nztop.pyrn  r(   r*   r*   r+   test_top  r`  zTestScripts.test_topc                 C   r]  )Nziotop.pyrn  r(   r*   r*   r+   
test_iotop  r`  zTestScripts.test_iotopc                 C   s,   |  dt  }| tt | d S )Nzpidof.py)rH  r%   r'   r-   r0   r1   r9   r:   )r)   outputr*   r*   r+   
test_pidof  s   zTestScripts.test_pidofzWINDOWS onlyc                 C   r]  )Nzwinservices.pyr^  r(   r*   r*   r+   test_winservices  r   zTestScripts.test_winservicesc                 C   r]  )Nzcpu_distribution.pyrn  r(   r*   r*   r+   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:  rH  r(   r*   r*   r+   test_temperatures     
zTestScripts.test_temperaturesc                 C   rw  )Nzno fanszfans.py)r%   Zsensors_fansr:  rH  r(   r*   r*   r+   	test_fans  ry  zTestScripts.test_fansz
no batteryc                 C   r]  )Nz
battery.pyr^  r(   r*   r*   r+   test_battery     zTestScripts.test_batteryc                 C   r]  )Nz
sensors.pyr^  r(   r*   r*   r+   test_sensors  r|  zTestScripts.test_sensorsN)+rj   rk   rl   r|   r   rH  rO  rS  r=  r>  r   r\  r_  ra  rb  re  r   r%   r   rf  rg  rh  ri  rj  r   rk  rm  ro  rp  rq  rr  rt  r   ru  rv  r   rx  r   rz  r   r   r{  r}  r*   r*   r*   r+   r?  m  sP    







r?  __main__)run_from_name);r|   rL  collectionsr   r   r9   r   r   rU  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    rn   r   r   
namedtupler  r   r>  r   r   r?  rj   Zpsutil.tests.runnerr  r   r*   r*   r*   r+   <module>   s|    p 
    
