o
    h0                     @   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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 ejedZejedZejjeoeje ddG dd deZejjeoeje ddG dd deZ ejjeoeje ddG dd deZ!dS )zTest various scripts.    N)POSIX)WINDOWS)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)
PYTHON_EXE)PYTHON_EXE_ENV)ROOT_DIR)SCRIPTS_DIR)PsutilTestCase)import_module_by_path)psutil)shinternalzsetup.pyzcan't find scripts/ directoryreasonc                   @   s  e Zd Zedd Zedd Zdd Zejj	e
 ddd	d
 Zdd Zdd Zdd Zdd Zejj	eo:e  dddd Zdd Zdd Zdd Zdd Zejj	e dddd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejj	e  d-dd.d/ Z!d0d1 Z"ejj	e# ddd2d3 Z$ejj	e% ddd4d5 Z&ejj	e' ddejj	e( d6dd7d8 Z)ejj	e' ddejj	e( d6dd9d: Z*d;S )<TestExampleScriptsc              
   O   s   | dt tjt| } t| g}|D ]}|| qzt|fi |	 }W n t
yD } zdt|v r?t|W  Y d }~S  d }~ww |sKJ ||S )NenvAccessDenied)
setdefaultr   ospathjoinr   r
   appendr   stripRuntimeErrorstr)exeargskwargscmdargouterr r'   O/var/www/html/ai/venv/lib/python3.10/site-packages/psutil/tests/test_scripts.pyassert_stdout0   s   z TestExampleScripts.assert_stdoutc                 C   sP   t jt| } t| dd}| }W d    n1 sw   Y  t| d S Nutf8)encoding)r   r   r   r   openreadastparse)r    fsrcr'   r'   r(   assert_syntaxA   s
   
z TestExampleScripts.assert_syntaxc                 C   sZ   t | }ttD ]!}|dr*dtj|d  |vr*tdtj	t|dq	d S )N.pytest_r   zno test defined for z script)
dirr   listdirr   endswithr   splitextpytestfailr   )selfmethsnamer'   r'   r(   test_coverageH   s   
z TestExampleScripts.test_coveragez
POSIX onlyr   c                 C   sb   t tD ])\}}}|D ]!}|dr-t j||}tjt |tj @ s-t	
|dqqd S )Nr4   z is not executable)r   walkr   r8   r   r   statS_IXUSRST_MODEr:   r;   )r<   rootdirsfilesfiler   r'   r'   r(   test_executableT   s   
z"TestExampleScripts.test_executablec                 C      |  d d S )Nzdisk_usage.pyr)   r<   r'   r'   r(   test_disk_usage]      z"TestExampleScripts.test_disk_usagec                 C   rI   )Nzfree.pyrJ   rK   r'   r'   r(   	test_free`   rM   zTestExampleScripts.test_freec                 C   rI   )Nz
meminfo.pyrJ   rK   r'   r'   r(   test_meminfoc   rM   zTestExampleScripts.test_meminfoc                 C      |  dtt  d S )Nzprocinfo.pyr)   r   r   getpidrK   r'   r'   r(   test_procinfof   s   z TestExampleScripts.test_procinfozno usersc                 C   rI   )Nzwho.pyrJ   rK   r'   r'   r(   test_whoi      zTestExampleScripts.test_whoc                 C   rI   )Nzps.pyrJ   rK   r'   r'   r(   test_psm   rM   zTestExampleScripts.test_psc                 C   rI   )Nz	pstree.pyrJ   rK   r'   r'   r(   test_pstreep   rM   zTestExampleScripts.test_pstreec                 C   rI   )Nz
netstat.pyrJ   rK   r'   r'   r(   test_netstats   rM   zTestExampleScripts.test_netstatc                 C   rI   )Nzifconfig.pyrJ   rK   r'   r'   r(   test_ifconfigv   rM   z TestExampleScripts.test_ifconfignot supportedc                 C   rP   )Nzpmap.pyrQ   rK   r'   r'   r(   	test_pmapy   s   zTestExampleScripts.test_pmapc                 C   s*   dt   jvrtd| d d S )NussrZ   zprocsmem.py)r   Processmemory_full_info_fieldsr:   skipr)   rK   r'   r'   r(   test_procsmem}   s   
z TestExampleScripts.test_procsmemc                 C   rI   )Nz
killall.pyr3   rK   r'   r'   r(   test_killall   rM   zTestExampleScripts.test_killallc                 C   rI   )Nz	nettop.pyrb   rK   r'   r'   r(   test_nettop   rM   zTestExampleScripts.test_nettopc                 C   rI   )Nztop.pyrb   rK   r'   r'   r(   test_top   rM   zTestExampleScripts.test_topc                 C   rI   )Nziotop.pyrb   rK   r'   r'   r(   
test_iotop   rM   zTestExampleScripts.test_iotopc                 C   s,   |  dt  }tt |v sJ d S )Nzpidof.py)r)   r   r]   r>   r   r   rR   )r<   outputr'   r'   r(   
test_pidof   s   zTestExampleScripts.test_pidofzWINDOWS onlyc                 C   rI   )Nzwinservices.pyrJ   rK   r'   r'   r(   test_winservices   rU   z#TestExampleScripts.test_winservicesc                 C   rI   )Nzcpu_distribution.pyrb   rK   r'   r'   r(   test_cpu_distribution   rM   z(TestExampleScripts.test_cpu_distributionc                 C       t  s	td| d d S )Nzno temperaturesztemperatures.py)r   sensors_temperaturesr:   r`   r)   rK   r'   r'   r(   test_temperatures      
z$TestExampleScripts.test_temperaturesc                 C   rk   )Nzno fanszfans.py)r   sensors_fansr:   r`   r)   rK   r'   r'   r(   	test_fans   rn   zTestExampleScripts.test_fansz
no batteryc                 C   rI   )Nz
battery.pyrJ   rK   r'   r'   r(   test_battery      zTestExampleScripts.test_batteryc                 C   rI   )Nz
sensors.pyrJ   rK   r'   r'   r(   test_sensors   rr   zTestExampleScripts.test_sensorsN)+__name__
__module____qualname__staticmethodr)   r3   r?   r:   markskipifr   rH   rL   rN   rO   rS   r   r   usersrT   rV   rW   rX   rY   r   r[   ra   rc   rd   re   rf   rh   r   ri   rj   r	   rm   r   rp   r   r   rq   rs   r'   r'   r'   r(   r   +   sN    







r   z&can't find scripts/internal/ directoryc                   @   s8   e Zd Zedd Zdd Zejje	dddd Z
d	S )
TestInternalScriptsc                  c   s0    t tD ]} | drt jt| V  qd S )Nr4   )r   r7   INTERNAL_SCRIPTS_DIRr8   r   r   )r>   r'   r'   r(   ls   s   
zTestInternalScripts.lsc              	   C   sP   |   D ]!}t|dd}| }W d    n1 sw   Y  t| qd S r*   )r}   r-   r.   r/   r0   )r<   r   r1   datar'   r'   r(   test_syntax_all   s   
z#TestInternalScripts.test_syntax_allz	not on CIr   c              	   C   s0   |   D ]}zt| W q ty   Y qw d S N)r}   r   
SystemExit)r<   r   r'   r'   r(   test_import_all   s   z#TestInternalScripts.test_import_allN)rt   ru   rv   rw   r}   r   r:   rx   ry   r   r   r'   r'   r'   r(   r{      s    
r{   zcan't find setup.pyc                   @   s4   e Zd Zdd Zejjed dddd Z	dS )	TestSetupScriptc                 C   sP   t t}tt |  W d    n1 sw   Y  | tjks&J d S r   )	r   SETUP_PYr:   raisesr   setupget_versionr   __version__)r<   moduler'   r'   r(   test_invocation   s
   
zTestSetupScript.test_invocation	python2.7zpython2.7 not installedr   c                 C   s`   t jtdtgt jt jdd}| \}}| dksJ |r"J d|v s(J d|v s.J d S )Nr   T)stdoutstderruniversal_newlines   z$psutil no longer supports Python 2.7z'Latest version supporting Python 2.7 is)
subprocessPopenshutilwhichr   PIPEcommunicatewait)r<   pr   r   r'   r'   r(   test_python2   s   zTestSetupScript.test_python2N)
rt   ru   rv   r   r:   rx   ry   r   r   r   r'   r'   r'   r(   r      s    r   )"__doc__r/   r   r   rA   r   r:   r   r   r   psutil.testsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r|   r   rx   ry   existsr   r{   r   r'   r'   r'   r(   <module>   sP    