HEX
Server: LiteSpeed
System: Linux atali.colombiahosting.com.co 5.14.0-570.12.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 06:11:55 EDT 2025 x86_64
User: coopserp (1713)
PHP: 8.2.29
Disabled: dl,exec,passthru,proc_open,proc_close,shell_exec,memory_limit,system,popen,curl_multi_exec,show_source,symlink,link,leak,listen,diskfreespace,tmpfile,ignore_user_abord,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setid,posix_times,posix_ttyname,posix_uname,proc_get_status,proc_nice,proc_terminate
Upload Files
File: //usr/local/lib64/python3.9/site-packages/psutil/tests/__pycache__/test_misc.cpython-39.pyc
a

��?h���@sfdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZ
ddl
mZddl
m
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*dd lm+Z+dd!lm,Z,dd"lm-Z-Gd#d$�d$e'�Z.Gd%d&�d&e'�Z/Gd'd(�d(e'�Z0Gd)d*�d*e'�Z1e�2d+d,�Z3Gd-d.�d.e'�Z4e*j5j6ej7�8e&�d/d0�Gd1d2�d2e'��Z9dS)3zMiscellaneous tests.�N)�POSIX)�WINDOWS)�bcat)�cat)�debug)�
isfile_strict)�memoize)�memoize_when_activated��parse_environ_block)�
supports_ipv6��wrap_numbers)�PY3)�FileNotFoundError)�redirect_stderr)�
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)�	QEMU_USER)�SCRIPTS_DIR)�PsutilTestCase)�mock)�process_namespace)�pytest)�
reload_module)�sh)�system_namespacec@s�eZdZdd�Zefdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS) �TestSpecialMethodscCszt�t��"tjj�dd�Wd�n1s20Yt�tj��t�dd�Wd�n1sl0YdS)N��)	r �raises�
OverflowError�psutilZ_psplatformZcextZcheck_pid_range�
NoSuchProcess�Process��self�r.�B/usr/local/lib64/python3.9/site-packages/psutil/tests/test_misc.py�test_check_pid_range>s0z'TestSpecialMethods.test_check_pid_rangecCst�|��j�}||�}d|vs$J�d|j|vs6J�dt|���|�dd�vsVJ�d|vsbJ�d|vsnJ�|��|��||�}d|vs�J�d|vs�J�t	j
jtjd	t�t
���d
��Jt��}||�}d|j|vs�J�d|vs�J�d|vs�J�Wd�n1�s0Yt	j
jtjd	t�t
���d
��Pt��}||�}d|j|v�s\J�d
|v�sjJ�d|v�sxJ�Wd�n1�s�0Yt	j
jtjd	t�t
���d
��Bt��}||�}d|j|v�s�J�d|v�s�J�Wd�n1�s0YdS)Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'�name�Zside_effectzstatus='zombie'zname=Z
terminated)r)r+Zspawn_testproc�pid�strr1�replace�	terminate�waitr�patch�object�
ZombieProcess�os�getpidr*�AccessDenied)r-�func�p�rr.r.r/�test_process__repr__DsR �,�.�z'TestSpecialMethods.test_process__repr__cCs|jtd�dS)N)r>)rAr4r,r.r.r/�test_process__str__psz&TestSpecialMethods.test_process__str__cCstt���dksJ�dS)Nzpsutil.Error())�reprr)�Errorr,r.r.r/�test_error__repr__ssz%TestSpecialMethods.test_error__repr__cCstt���dksJ�dS)N�)r4r)rDr,r.r.r/�test_error__str__vsz$TestSpecialMethods.test_error__str__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)N�Az=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r1�msg�r1rIz5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rCr)r*r,r.r.r/�test_no_such_process__repr__ys����z/TestSpecialMethods.test_no_such_process__repr__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)NrHz"process no longer exists (pid=321)r1rIrJ�msg (pid=321, name='name'))r4r)r*r,r.r.r/�test_no_such_process__str__�s����z.TestSpecialMethods.test_no_such_process__str__cCs8tt�d��dksJ�ttjddddd��dks4J�dS)NrHzGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r1�@�foo�r1�ppidrIz?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rCr)r:r,r.r.r/�test_zombie_process__repr__�s����z.TestSpecialMethods.test_zombie_process__repr__cCs8tt�d��dksJ�ttjddddd��dks4J�dS)NrHz,PID still exists but it's a zombie (pid=321)r1rNrOrPz$foo (pid=321, ppid=320, name='name'))r4r)r:r,r.r.r/�test_zombie_process__str__�s����z-TestSpecialMethods.test_zombie_process__str__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)NrHzpsutil.AccessDenied(pid=321)r1rIrJz4psutil.AccessDenied(pid=321, name='name', msg='msg'))rCr)r=r,r.r.r/�test_access_denied__repr__�s
��z-TestSpecialMethods.test_access_denied__repr__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)NrHz	(pid=321)r1rIrJrL)r4r)r=r,r.r.r/�test_access_denied__str__�s
��z,TestSpecialMethods.test_access_denied__str__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)N�z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rHr1�r3r1zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rCr)�TimeoutExpiredr,r.r.r/�test_timeout_expired__repr__�s����z/TestSpecialMethods.test_timeout_expired__repr__cCs6tt�d��dksJ�ttjdddd��dks2J�dS)NrVztimeout after 5 secondsrHr1rWz.timeout after 5 seconds (pid=321, name='name'))r4r)rXr,r.r.r/�test_timeout_expired__str__�s
��z.TestSpecialMethods.test_timeout_expired__str__cCs>t��}t��}||ksJ�d|_||ks.J�|dks:J�dS)N)rrrO)r)r+�_ident)r-�p1�p2r.r.r/�test_process__eq__�sz%TestSpecialMethods.test_process__eq__cCs(tt��t��g�}t|�dks$J�dS)N�)�setr)r+�len)r-�sr.r.r/�test_process__hash__�sz'TestSpecialMethods.test_process__hash__N)�__name__�
__module__�__qualname__r0rCrArBrErGrKrMrRrSrTrUrYrZr^rcr.r.r.r/r$=s,


r$c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestMiscc	Cs�tt�}|D]~}|dvrq|�d�szt|�Wqty�|tjvr�tt|�}|dur^Yq|jdur�d|j��vr�|�	d|��Yq0qtjD]}||vs�J�q�dS)N)r�long�tests�test�PermissionError�ProcessLookupError�_�
deprecatedz%r not in psutil.__all__)
�dirr)�
startswith�
__import__�ImportError�__all__�getattr�__doc__�lower�fail)r-Z
dir_psutilr1�funr.r.r/�test__all__�s&


��
zTestMisc.test__all__cCs$d�dd�tjD��tjks J�dS)N�.cSsg|]}t|��qSr.)r4)�.0�xr.r.r/�
<listcomp>��z)TestMisc.test_version.<locals>.<listcomp>)�joinr)�version_info�__version__r,r.r.r/�test_version�s��zTestMisc.test_versioncCs"t��}d|_d|��vsJ�dS)N�1rO)r)r+rO�as_dict)r-r?r.r.r/�!test_process_as_dict_no_new_names�sz*TestMisc.test_process_as_dict_no_new_namesc
Cs�dd�}t��}|t�����t|�}|j|jdd�D]^\}}|j||d��8z
|�}WntjynYn
0||�Wd�q81s�0Yq8t�}|�|j�D]v\}}|dvr�q�t	r�|dkr�q�|j|d��8z
|�}Wntj
y�Yn
0||�Wd�q�1�s0Yq�t�t�
tjd	d
dd���}t|tj��sPJ�|jd	k�s`J�|jd
k�spJ�|jdk�s�J�t�t�
tjd	d
d
dd���}t|tj��s�J�|jd	k�s�J�|jd
k�s�J�|jd
k�s�J�|jdk�s�J�t�t�
tj
dd
dd���}t|tj
��sJ�|jdk�s.J�|jd
k�s>J�|jdk�sNJ�t�t�
tjdd	d
d���}t|tj��s|J�|jdk�s�J�|jd	k�s�J�|jd
k�s�J�dS)NcSs4t�t�|��t�|�}t�|�}||ks0J�dS�N)�json�loads�dumps�pickle)�ret�a�br.r.r/�checks

z*TestMisc.test_serialization.<locals>.checkT)�clear_cache)�procr1>Zwin_service_iterZwin_service_getZnet_if_stats)r1i�r1rI)r3r1rI�*)r3r1rQrI�{�!)�secondsr3r1)r)r+r�r�iterZgettersZsubTestrDr#rr=r�r�r�r*�
isinstancer3r1rIr:rQrXr�)r-r�r��nsrxr1r�r�r.r.r/�test_serializationst	
(
*�������zTestMisc.test_serializationc	Cs�tjjtjdtjd��"}t��|js*J�Wd�n1s>0Ytjjtjdt�d�d��"}t��|jsvJ�Wd�n1s�0Ytjjtjdtd��L}t	�
t��t��Wd�n1s�0Y|js�J�Wd�n1s�0Ytjjtjdt�d�d��R}|�tj��t��Wd�n1�sL0Y|j�sbJ�Wd�n1�sx0YdS)NZ
_get_identr2r_)
rr8r9r)r+r=�calledr:�
ValueErrorr r'r*�assertRaises)r-�methr.r.r/�test_ad_on_process_creationas4
�(�(�&(�(z$TestMisc.test_ad_on_process_creationc	Csztjddd��Xt�t��}tt�Wd�n1s80Ydt|j��	�vsXJ�Wd�n1sl0YdS)Nzpsutil._psplatform.cext.versionz0.0.0�Zreturn_valuezversion conflict)
rr8r r'rrr!r)r4�valuerv)r-�cmr.r.r/�test_sanity_version_check~s�&z"TestMisc.test_sanity_version_checkN)	rdrerfryr�r�r�r�r�r.r.r.r/rg�s!]rgc@sReZdZdd�ZeZddd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�TestMemoizeDecoratorcCs
g|_dSr���callsr,r.r.r/�setUp�szTestMemoizeDecorator.setUpNcCs2td�D]2}|�}|jdifgks&J�|dur||ksJ�qtd�D]:}|d�}|jdifdifgksjJ�|durD||ksDJ�qDtd�D]H}|ddd�}|jdifdifdddifgks�J�|dur�||ks�J�q�t|j�dks�J�|��|�}|du�r
||k�s
J�t|j�dk�sJ�|jd	k�s.J�dS)
Nr%r.r_�r_��barr����
My docstring.)�ranger�ra�cache_clearru)r-�obj�expected_retvalrmr�r.r.r/�run_against�s,$
z TestMemoizeDecorator.run_againstcs&t�fdd��}|�|j|dd�dS)Ncs�j�||f�dS�r���r��append��args�kwargs�Z	baseclassr.r/rO�sz/TestMemoizeDecorator.test_function.<locals>.foor��r�)rr�)r-rOr.r�r/�
test_function�sz"TestMemoizeDecorator.test_functioncs>tG�fdd�d��}|�|j|dd�|���dks:J�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z,TestMemoizeDecorator.test_class.<locals>.Foor�cs�j�||f�dSr�r��r-r�r�r�r.r/�__init__�sz5TestMemoizeDecorator.test_class.<locals>.Foo.__init__cSsdS)Nr�r.r,r.r.r/r��sz0TestMemoizeDecorator.test_class.<locals>.Foo.barN)rdrerfrur�r�r.r�r.r/�Foo�sr�r�r�)rr�r��r-r�r.r�r/�
test_class�s
	zTestMemoizeDecorator.test_classcCs�tGdd�d��}|�|�us"J�t|��t|��ks:J�t|d��t|d��ksVJ�t|ddd��t|ddd��kszJ�t|d��t|d��ks�J�dS)Nc@seZdZdd�ZdS)z6TestMemoizeDecorator.test_class_singleton.<locals>.Barc_sdSr�r.r�r.r.r/r��sz?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)rdrerfr�r.r.r.r/�Bar�sr�r_r�)rOr%)r�id)r-r�r.r.r/�test_class_singleton�s$z)TestMemoizeDecorator.test_class_singletoncs,G�fdd�d�}|�|j|�jdd�dS)Ncs eZdZee�fdd���ZdS)z3TestMemoizeDecorator.test_staticmethod.<locals>.Foocs�j�||f�dSr�r�r�r�r.r/r��sz7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)rdrerf�staticmethodrr�r.r�r.r/r��sr�r�r��r�r�r�r.r�r/�test_staticmethod�sz&TestMemoizeDecorator.test_staticmethodcs,G�fdd�d�}|�|j|�jdd�dS)Ncs eZdZee�fdd���ZdS)z2TestMemoizeDecorator.test_classmethod.<locals>.Foocs�j�||f�dSr�r�)�clsr�r�r�r.r/r��sz6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)rdrerf�classmethodrr�r.r�r.r/r��sr�r�r�r�r�r.r�r/�test_classmethod�sz%TestMemoizeDecorator.test_classmethodcst�fdd��}g�td�D].}|�}dif}||ks:J�t��dksJ�qtd�D]0}|d�}dif}||kstJ�t��dksTJ�qTtd�D]8}|ddd�}dddif}||ks�J�t��d	ks�J�q�|��|�}dif}||ks�J�t��d
ks�J�|jdk�s
J�dS)Ncs��d�||fS)�Foo docstring.N�r�r�r�r.r/rO�s
z/TestMemoizeDecorator.test_original.<locals>.foor%r.r_r�r�r�r�r�r�)rr�rar�ru)r-rOrmr��expectedr.r�r/�
test_original�s0z"TestMemoizeDecorator.test_original)N)rdrerfr��tearDownr�r�r�r�r�r�r�r.r.r.r/r��s


r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestCommonModulecs�G�fdd�d�}|�}g�|��|��t��dks<J�g�|j�|�|��|��t��dkslJ�g�|j�|�|��|��t��dks�J�dS)NcseZdZe�fdd��ZdS)z9TestCommonModule.test_memoize_when_activated.<locals>.Foocs��d�dSr�r�r,r�r.r/rOsz=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)rdrerfr	rOr.r�r.r/r�sr�r%r_)rOraZcache_activateZcache_deactivate)r-r��fr.r�r/�test_memoize_when_activateds z,TestCommonModule.test_memoize_when_activatedcCs�dd�}td�|d�diks J�td�|d�d|d�diks@J�td	�|d�d|d�d
iks`J�td�|d�d|d�diks�J�td�|d�diks�J�td
�|d�diks�J�td�|d�diks�J�dS)NcSstr|��S|Sr�)r�upper)rbr.r.r/�k0sz4TestCommonModule.test_parse_environ_block.<locals>.kza=1r�r�z	a=1b=2r��2za=1b=rFz
a=1b=2c=3zxxxa=1z	a=1=b=2za=1b=2r
)r-r�r.r.r/�test_parse_environ_block/s�
 �
z)TestCommonModule.test_parse_environ_blockc	Cs�|�tj�t��rRt�d��(}d|_t��t�r8J�Wd�n1sL0Yt��tjdtjd��$}t�rzJ�|js�J�Wd�n1s�0Yt��tjdtj	d��,}t�r�J�t��|js�J�Wd�n1s�0Yt��tjdtj	d��0}t��rJ�t��|j�s0J�Wd�n1�sF0Yn`t
�tj��Bt�tjtj
�}z|�d�W|��n
|��0Wd�n1�s�0YdS)Nzpsutil._common.socketFzpsutil._common.socket.socketr2z!psutil._common.socket.socket.bind)z::1r)Z
addCleanuprr�rr8�has_ipv6�socket�errorr��gaierrorr r'�AF_INET6�SOCK_STREAM�bind�close)r-rb�sockr.r.r/�test_supports_ipv6DsF(�
(�
(�.z#TestCommonModule.test_supports_ipv6c	Cs�tj�t�}t|�sJ�ttj�|��r,J�tjdtt	j
d�d��Bt�t��t|�Wd�n1sl0YWd�n1s�0Ytjdtt	j
d�d��Bt�t��t|�Wd�n1s�0YWd�n1s�0Ytjdtt	jd�d��t|��r"J�Wd�n1�s80Ytjddd��t|��r`J�Wd�n1�sv0YdS)Nzpsutil._common.os.statrOr2zpsutil._common.stat.S_ISREGFr�)r;�path�abspath�__file__r�dirnamerr8�OSError�errno�EPERMr r'�EACCES�ENOENT)r-Z	this_filer.r.r/�test_isfile_strictks&�D�D�.z#TestCommonModule.test_isfile_strictc	Cs�trddlm}nddlm}tj�tjdd��Lt|���"}t	d�t
j��Wd�n1sd0YWd�n1s�0Y|�
�}|�d�s�J|��d|vs�J�t�dd�|vs�J�tj�tjdd��Ht|���}t	td	��Wd�n1�s0YWd�n1�s(0Y|�
�}d
|v�sHJ�d|v�sVJ�tj�tjdd��Tt|���(}tdd
�}d|_t	|�Wd�n1�s�0YWd�n1�s�0Y|�
�}d
|v�s�J�d|v�s�J�dS)Nr)�StringIOZPSUTIL_DEBUGTZhellozpsutil-debugz.pyc�.pyzthis is an errorzignoring ValueErrorz'this is an error'r%zno such filez/foo)r�ior�rr8r9r)�_commonrr�sys�stderr�flush�getvaluerpr�r5r�r��filename)r-r�r�rI�excr.r.r/�
test_debug�s2FL
HzTestCommonModule.test_debugcCs�|��}t|d��}|�d�Wd�n1s20Yt|�dksLJ�t|�dks\J�t�t��t|d�Wd�n1s�0Yt�t��t|d�Wd�n1s�0Yt|ddd�dks�J�t|ddd�dks�J�dS)N�wrOsfooz-invalidr�)�fallback)Z
get_testfn�open�writerrr r'r)r-Ztestfnr�r.r.r/�
test_cat_bcat�s(**zTestCommonModule.test_cat_bcatN)	rdrerfr�r�r�r�r�r�r.r.r.r/r�s'!r�rOza b cc@s�eZdZdd�ZeZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejjedd�dd��ZdS) �TestWrapNumberscCst��dSr�)rr�r,r.r.r/r��szTestWrapNumbers.setUpcCs&dtddd�i}t|d�|ks"J�dS�N�disk1rV�disk_io��ntr�r-�inputr.r.r/�test_first_call�szTestWrapNumbers.test_first_callcCs8dtddd�i}t|d�|ks"J�t|d�|ks4J�dSr�r�r�r.r.r/�test_input_hasnt_changed�sz(TestWrapNumbers.test_input_hasnt_changedcCs�dtddd�i}t|d�|ks"J�dtddd�i}t|d�|ksDJ�dtddd�i}t|d�|ksfJ�dtddd�i}t|d�|ks�J�dS)	Nr�rVr��
����r�r�r.r.r/�test_increase_but_no_wrap�sz)TestWrapNumbers.test_increase_but_no_wrapcCs�dtddd�i}t|d�|ks"J�dtddd�i}t|d�dtddd�iksPJ�dtddd�i}t|d�dtddd�iks~J�dtddd�i}t|d�dtddd�iks�J�dtddd�i}t|d�dtddd	�iks�J�dtddd�i}t|d�dtddd	�ik�s
J�dtd
dd�i}t|d�dtddd	�ik�s:J�dtddd�i}t|d�dtddd	�ik�sjJ�dtddd�i}t|d�dtddd	�ik�s�J�dS)
Nr��dr�r�n�Z�r���2��(r�r�r.r.r/�	test_wrap�s$   zTestWrapNumbers.test_wrapcCstdtddd�i}t|d�|ks"J�tddd�tddd�d�}t|d�|ksNJ�dtddd�i}t|d�|kspJ�dS)Nr�rVr���r�Zdisk2�r�r�r.r.r/�test_changing_keys�sz"TestWrapNumbers.test_changing_keyscCs0tddd�tddd�d�}t|d�|ks,J�tddd�tddd�d�}t|d�tddd�tddd�d�ksnJ�dtddd�i}t|d�|ks�J�tddd�tddd�d�}t|d�|ks�J�tddd�tddd�d�}t|d�|ks�J�tddd�tddd�d�}t|d�tddd�tddd�d�k�s,J�dS)Nrr	rr�rr
r�r�r�r.r.r/�test_changing_keys_w_wrap�s$

�

�z)TestWrapNumbers.test_changing_keys_w_wrapcCsbddddd�}t|d�|ks J�t|d�|ks2J�ddddd�}t|d�}|dd	d
ks^J�dS)N)	i,���#�R������ȷ)	i�r%itUiirrrr)	�6ri�$i�Nr��ri��)	iU	i�i"ri�i4i�i�i\)�nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r�)	r	rrrrrrrrr"ri�r
)r-�d�outr.r.r/�test_real_datas��
zTestWrapNumbers.test_real_datacCsbdtddd�i}t|d�t��}|dd|iks6J�|ddiiksJJ�|ddiiks^J�dS)Nr�rVr�rr_r%�r�r�
cache_info�r-r�cacher.r.r/�test_cache_first_call(s
z%TestWrapNumbers.test_cache_first_callcCs�dtddd�i}t|d�dtddd�i}t|d�t��}|dd|iksPJ�|dddddd�ikslJ�|ddiiks�J�dS)	Nr�rVr�rrr_�)r�r)r�r_�r�r%r%r&r(r.r.r/�test_cache_call_twice0s

�
z%TestWrapNumbers.test_cache_call_twicecCs�dtddd�i}t|d�dtddd�i}t|d�t��}|dd|iksPJ�|dddddd�ikslJ�|dddtd	g�iiks�J�d
d�}dtddd�i}t|d�t��}|dd|iks�J�|�dtddd�i}t|d�t��}|dd|ik�sJ�|�dtddd
�i}t|d�t��}|dd|ik�sDJ�|dddddd�ik�sbJ�|dddtd	g�iik�s�J�dS)Nr�r	r�rrr_r+r%r,cSsFt��}|dddddd�iks$J�|dddtdg�iiksBJ�dS)	Nr_r�rr	r+r%r�r,)rr'r`)r)r.r.r/�check_cache_infoKs��
z9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_inforrr)r�rr'r`)r-rr)r.r.r.r/�test_cache_wrap<s:

�



�zTestWrapNumbers.test_cache_wrapcCs�dtddd�i}t|d�tddd�tddd�d�}t|d�t��}|dd|iksZJ�|dddddd�iksvJ�|d	diiks�J�dS)
Nr�rVr�rrrr_r+r%r&r(r.r.r/�test_cache_changing_keysns

�
z(TestWrapNumbers.test_cache_changing_keyscCs\dtddd�i}t|d�t|d�t�d�t��iiifksDJ�t�d�t�d�dS)Nr�rVr�z?!?)r�rr�r'r�r.r.r/�test_cache_clearzs



z TestWrapNumbers.test_cache_clear�
not supported��reasoncCs�t��rt��st�d��t��t��t��}|D]}d|vsFJ�d|vs6J�q6tj��t��}|D]}d|vszJ�d|vsjJ�qjtj��t��}|iiifks�J�dS)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)r)Zdisk_io_countersZnet_io_countersr �skiprr'r�)r-�cachesr)r.r.r/�test_cache_clear_public_apis�s 


z,TestWrapNumbers.test_cache_clear_public_apisN)rdrerfr�r�rrrrrrr%r*r-r/r0r1r �mark�skipifrr7r.r.r.r/r��s 
2	r�zcan't locate scripts directoryr3c@s�eZdZdZedd��Zedd��Zdd�Zej	j
edd	�d
d��Zdd
�Z
dd�Zdd�Zdd�Zej	j
eoxe��dd	�dd��Zdd�Zdd�Zdd�Zej	j
edd	�dd��Zej	j
ed d	�d!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z d-d.�Z!ej	j
e"d/d	�d0d1��Z#d2d3�Z$ej	j
e%d d	�d4d5��Z&ej	j
e'd d	�d6d7��Z(ej	j
e)d d	�ej	j
e*d8d	�d9d:���Z+ej	j
e)d d	�ej	j
e*d8d	�d;d<���Z,d=S)>�TestScriptsz-Tests for scripts in the "scripts" directory.c
Os�|�dt�dtj�t|�}t|g}|D]}|�|�q*zt|fi|���	�}WnFt
y�}z.dt|�vr�t|�WYd}~S�WYd}~n
d}~00|s�J|��|S)N�envz%sr=)�
setdefaultrr;r�rrrr�r"�strip�RuntimeErrorr4)�exer�r��cmd�argr$�errr.r.r/�
assert_stdout�szTestScripts.assert_stdoutcCs\tj�t|�}trt|dd�nt|��}|��}Wd�n1sD0Yt�|�dS)N�utf8)�encoding)	r;r�rrrr��read�ast�parse)r?r��srcr.r.r/�
assert_syntax�s&zTestScripts.assert_syntaxcCsVt|�}t�t�D]>}|�d�rdtj�|�d|vr|�dtj�t|���qdS)Nr�Ztest_rzno test defined for %r script)	ror;�listdirr�endswithr��splitextrwr)r-Zmethsr1r.r.r/�
test_coverage�s
��zTestScripts.test_coveragez
POSIX onlyr3cCs`t�t�D]P\}}}|D]@}|�d�rtj�||�}tjt�|�tj@s|�	d|��qq
dS)Nr�z%r is not executable)
r;�walkrrLr�r�stat�S_IXUSR�ST_MODErw)r-�root�dirs�files�filer�r.r.r/�test_executable�s
zTestScripts.test_executablecCs|�d�dS)Nz
disk_usage.py�rCr,r.r.r/�test_disk_usage�szTestScripts.test_disk_usagecCs|�d�dS)Nzfree.pyrXr,r.r.r/�	test_free�szTestScripts.test_freecCs|�d�dS)Nz
meminfo.pyrXr,r.r.r/�test_meminfo�szTestScripts.test_meminfocCs|�dtt����dS)Nzprocinfo.py�rCr4r;r<r,r.r.r/�
test_procinfo�szTestScripts.test_procinfozno userscCs|�d�dS)Nzwho.pyrXr,r.r.r/�test_who�szTestScripts.test_whocCs|�d�dS)Nzps.pyrXr,r.r.r/�test_ps�szTestScripts.test_pscCs|�d�dS)Nz	pstree.pyrXr,r.r.r/�test_pstree�szTestScripts.test_pstreecCs|�d�dS)Nz
netstat.pyrXr,r.r.r/�test_netstat�szTestScripts.test_netstatzQEMU user not supportedcCs|�d�dS)Nzifconfig.pyrXr,r.r.r/�
test_ifconfig�szTestScripts.test_ifconfigr2cCs|�dtt����dS)Nzpmap.pyr\r,r.r.r/�	test_pmap�szTestScripts.test_pmapcCs*dt����jvrt�d��|�d�dS)NZussr2zprocsmem.py)r)r+Zmemory_full_info�_fieldsr r5rCr,r.r.r/�
test_procsmem�s
zTestScripts.test_procsmemcCs|�d�dS)Nz
killall.py�rJr,r.r.r/�test_killall�szTestScripts.test_killallcCs|�d�dS)Nz	nettop.pyrfr,r.r.r/�test_nettop�szTestScripts.test_nettopcCs|�d�dS)Nztop.pyrfr,r.r.r/�test_top�szTestScripts.test_topcCs|�d�dS)Nziotop.pyrfr,r.r.r/�
test_iotopszTestScripts.test_iotopcCs,|�dt�����}tt���|vs(J�dS)Nzpidof.py)rCr)r+r1r4r;r<)r-�outputr.r.r/�
test_pidofszTestScripts.test_pidofzWINDOWS onlycCs|�d�dS)Nzwinservices.pyrXr,r.r.r/�test_winservicesszTestScripts.test_winservicescCs|�d�dS)Nzcpu_distribution.pyrfr,r.r.r/�test_cpu_distributionsz!TestScripts.test_cpu_distributioncCs t��st�d��|�d�dS)Nzno temperaturesztemperatures.py)r)Zsensors_temperaturesr r5rCr,r.r.r/�test_temperaturess
zTestScripts.test_temperaturescCs t��st�d��|�d�dS)Nzno fanszfans.py)r)Zsensors_fansr r5rCr,r.r.r/�	test_fanss
zTestScripts.test_fansz
no batterycCs|�d�dS)Nz
battery.pyrXr,r.r.r/�test_batteryszTestScripts.test_batterycCs|�d�dS)Nz
sensors.pyrXr,r.r.r/�test_sensorsszTestScripts.test_sensorsN)-rdrerfrur�rCrJrNr r8r9rrWrYrZr[r]rr)Zusersr^r_r`rarrbrrcrergrhrirjrlrrmrnrrorrprrrqrrr.r.r.r/r:�sP








r:):rurG�collectionsr�r�r;r�r�rPr�r)Zpsutil.testsrrZpsutil._commonrrrrrr	rrrZpsutil._compatrrrrrrrrrrrrrrrrrr r!r"r#r$rgr�r��
namedtupler�r�r8r9r��existsr:r.r.r.r/�<module>st8!h�