Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_winreg.cpython-35.opt-1.pyc



��YfR�@s`ddlZddlZddlZddlZddlmZejd�Zddlm	Z	ejdddg�ddl
Ty!ejejjd	�d
Z
Wneefk
r�dZ
YnXej�dd�Ze	�dkr�d
ndZed6krd
ndZdej�fZdeZdeZddefddefddefdddddgefddefd d!d8efd#d$d9efd%d&efgZGd'd(�d(ej�ZGd)d*�d*e�Z ej!e
d+�Gd,d-�d-e��Z"ej!ed.�Gd/d0�d0e��Z#d1d2�Z$e%d3kr\e
sUe&d4d5�e$�dS):�N)�support�	threading)�machine�winregZrequired_on�win)�*z--remote��ZAMD64TF�z Python Test Key [%d] - Delete Mez	SOFTWARE\zSOFTWARE\Classes\z	Int Value�-z
String ValzA string valueZStringExpandzThe path is %path%zMulti-stringZLotsZof�string�valueszRaw Datasbinarydataz
Big String�x�z
Big Binary�xuJapanese 日本u	日本語c@sveZdZdd�Zdd�Zdedd�Zdedd	�Zdd
d�Z	ddd
�Z
dd�ZdS)�BaseWinregTestscCs|jtt�dS)N)�delete_tree�HKEY_CURRENT_USER�
test_key_name)�self�r�5/opt/alt/python35/lib64/python3.5/test/test_winreg.py�setUp4szBaseWinregTests.setUpcCs�yt||t�}Wntk
r.dSYnXx=yt|d�}Wntk
rZPYnX|j||�q2Wt|�t||�dS)Nr)�OpenKey�KEY_ALL_ACCESS�OSError�EnumKeyr�CloseKey�	DeleteKey)r�rootZsubkey�hkeyZ	subsubkeyrrrr9s
	

zBaseWinregTests.delete_tree�sub_keycCs�t|ttd�||t�}|j|jdk�|||�}x-tD]%\}}}t||d||�qNWt|�\}	}
}|j|	dd�|j|
dd�t|�\}	}
}|j|	dd�|j|
t	t�d�t
|�}t|�yt|�|jd�Wnt
k
r8YnXt
|�}
|j�yt|
�|jd�Wnt
k
r~YnXdS)Nz
Default valuerrz"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)�SetValuer�REG_SZ�
assertTrue�handle�	test_data�
SetValueEx�QueryInfoKey�assertEqual�len�intr�failr�Close)r�root_key�	subkeystr�	CreateKey�keyr!�
value_name�
value_data�
value_type�nkeys�nvalues�	since_modZint_sub_keyZint_keyrrr�_write_test_dataIs6





z BaseWinregTests._write_test_datacCs~t|t�}|j|dd�||t�}|||���}d}xPyt||�}Wntk
rtPYnX|j|tkdd�|d}qLW|j|tt�d�xRtD]J\}	}
}t||	�\}}
|j||
d�|j|
|d�q�WWdQRX|j�t	|d�}|j||d	�yt	|d�|j
d
�Wntk
roYnX|j�dS)Nz
Default valuez+Registry didn't give back the correct valuerTz&Didn't read back the correct test datarz'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!)�
QueryValuerr)�	EnumValuerr&r*�QueryValueExr-rr,)rr.r/r�valr1r!�index�datar2r3r4Zread_valZread_typrrr�_read_test_datass>



zBaseWinregTests._read_test_datacCs&t|tdt�}t||dt�}x$tD]\}}}t||�q1Wt|�\}}	}
|j|dd�|j|	dd�|j�t||�yt||�|j	d�Wnt
k
r�YnX|j�t|t�y t|t�}|j	d�Wnt
k
r!YnXdS)Nrzsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)rrrr&ZDeleteValuer(r)r-rr,r)rr.r/r1r!r2r3r4r5r6r7rrr�_delete_test_data�s*






z!BaseWinregTests._delete_test_datacCs4|j||�|j||�|j||�dS)N)r8r?r@)rr.r/rrr�	_test_all�szBaseWinregTests._test_allcCs�td|d|dddt��}|j|jdk�WdQRXtd|d|dddt��}|j|jdk�WdQRXdS)Nr1r!�reservedr�access)�CreateKeyExrr$r%�	OpenKeyEx)rr1r!ZckeyZokeyrrr�_test_named_args�sz BaseWinregTests._test_named_argsN)�__name__�
__module__�__qualname__rrr0r8rr?r@rArFrrrrr2s)(rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
jed!kd�dd��Zdd�Zdd�Zdd�Zd S)"�LocalWinregTestscCs!|jt�|jtd�dS)Nu
日本-subkey)rAr)rrrr�test_registry_works�s
z$LocalWinregTests.test_registry_workscCsOdd�}|jtd|�dd�}|jtd|�|jt�dS)NcSst||dt�S)Nr)rDr)r1r!rrr�<lambda>�szILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>r0cSst||dt�S)Nr)rE�KEY_READ)r1r!rrrrL�sr)r8rr?r@)rZckeZokerrr�&test_registry_works_extended_functions�s
z7LocalWinregTests.test_registry_works_extended_functionscCs!|jtt�ttt�dS)N)rFrrr)rrrr�test_named_arguments�sz%LocalWinregTests.test_named_argumentscCsCtdt�}|j|jd�|j�|j|jd�dS)Nr)�ConnectRegistry�HKEY_LOCAL_MACHINE�assertNotEqualr%r-r))r�hrrr�,test_connect_registry_to_local_machine_works�s
z=LocalWinregTests.test_connect_registry_to_local_machine_workscCs dd�}|jt|�dS)NcSs
tdt�S)NZabcdefghijkl)rPrrrrrrL�szBLocalWinregTests.test_inexistant_remote_registry.<locals>.<lambda>)�assertRaisesr)rZconnectrrr�test_inexistant_remote_registry�sz0LocalWinregTests.test_inexistant_remote_registrycCsAtd�}|jt|�t�|j|tjdd�dS)Nz
%windir%\testZwindirz\test)ZExpandEnvironmentStringsr)�type�str�os�environ)r�rrrr�testExpandEnvironmentStrings�sz-LocalWinregTests.testExpandEnvironmentStringscCsby6tdt�� }|j|jd�t�WdQRXWn%tk
r]|j|jd�YnXdS)Nr)rPrQrRr%rr))rrSrrr�test_context_manager�s
z%LocalWinregTests.test_context_managerc
s�d�G�fdd�dtj�}|�}|j�z�tttd��j}x`td�D]R}t|�\}}}x4t|�D]&}t||�}	t	||	d�q�Wq^WWdQRXWdd�|j
�tttd�ttt�XdS)NFcs"eZdZ�fdd�ZdS)z>LocalWinregTests.test_changing_value.<locals>.VeryActiveThreadcsfttt��P}d}dd}x6�sZ|r7dn|}|}t|dt|�q%WWdQRXdS)NTri�Zchanging_value)r0rrr"r#)rr1Z	use_shortZlong_string�s)�donerr�runs
	zBLocalWinregTests.test_changing_value.<locals>.VeryActiveThread.runN)rGrHrIr`r)r_rr�VeryActiveThread�sraz\changing_valuei�rT)rZThread�startr0rr�ranger(r:r9�joinr)
rraZthreadr1�_�num_subkeys�
num_values�t�i�namer)r_r�test_changing_value�s 
	
$
z$LocalWinregTests.test_changing_valuecCs�dd}zRttt��<}t||td�t|�\}}}t|d�WdQRXWdttdjt|f��ttt�XdS)Nr�r�\)	r0rrr"r#r(rrrd)rrjr1rfrgrhrrr�
test_long_keys
zLocalWinregTests.test_long_keycCsuyttd�WnPtk
rc}z0|jtjtjfkrN|jd��WYdd}~XnXttd�dS)NrzMaccess denied to registry key (are you running in a non-interactive session?)�)r:ZHKEY_PERFORMANCE_DATAr�errnoZEPERMZEACCESZskipTestr;)r�errr�test_dynamic_key's
z!LocalWinregTests.test_dynamic_key�r	zRequires Windows XPc-Cs�z�ttt��}|j|jd�WdQRXttt�}|j|jd�|jt��t|�WdQRX|jt��t	|�WdQRX|jt��t
|�WdQRX|jt��ttt�WdQRXWdttt�XdS)Nr)
r0rrrRr%rrU�NotImplementedError�DisableReflectionKey�EnableReflectionKey�QueryReflectionKey�DeleteKeyExr)r�ckr1rrr�test_reflection_unsupported5sz,LocalWinregTests.test_reflection_unsupportedcCs[zFttt��0}|j|jd�t|ddtd�WdQRXWdttt�XdS)Nr�	test_namel)r0rrrRr%r'�	REG_DWORDr)rryrrr�test_setvalueex_value_rangeIs
!z,LocalWinregTests.test_setvalueex_value_rangecCs�z�ttt��k}|j|jd�d}t|ddt|�t|d�\}}|j|t�|j||�WdQRXWdt	tt�XdS)Nrlr{)
r0rrrRr%r'r|r;r)r)rry�test_val�ret_val�ret_typerrr�test_queryvalueex_return_valueUsz/LocalWinregTests.test_queryvalueex_return_valuecCs�z�ttt��k}|j|jd�d}t|ddt|�t|d�\}}|j|t�|j||�WdQRXWdt	tt�XdS)Nrr{)
r0rrrRr%r'�
REG_BINARYr;r)r)rryr~rr�rrr�#test_setvalueex_crash_with_none_argesz4LocalWinregTests.test_setvalueex_crash_with_none_argN)rsr	)rGrHrIrKrNrOrTrVr\r]rkrnrr�unittest�
skipUnless�WIN_VERrzr}r�r�rrrrrJ�s	 $rJzSkipping remote registry testsc@seZdZdd�ZdS)�RemoteWinregTestscCs ttt�}|j|�dS)N)rP�REMOTE_NAMErrA)rZ
remote_keyrrr�test_remote_registry_workswsz,RemoteWinregTests.test_remote_registry_worksN)rGrHrIr�rrrrr�tsr�zx64 specific registry testsc@speZdZdd�Zdd�Zejed�dd��Zejed�dd	��Z	d
d�Z
dS)
�Win64WinregTestsc	Cs3|jtt�tdtdtdtdd�dS)Nr1r!rCrBr)rFrrrxr)rrrrrOsz%Win64WinregTests.test_named_argumentsc
Csittd��S}|jt|��|jt|��|jt|��|jt|��WdQRXdS)NZSoftware)rrQr$rwZassertIsNonervru)rr1rrr�test_reflection_functions�s
z*Win64WinregTests.test_reflection_functionszOS doesn't support reflectionc(Cs^zCtttdttB���}|j|jd�tttdttB��}|j|jd�WdQRXt|ddt	d�dd�}|j
t|�WdQRXtttdttB��I}|j|jd�|j
dt|d��t|ddt	d�WdQRXtttdttB�� }|j
dt|d��WdQRXWdttttd�XdS)NrroZ32KEYcSstttdttB�S)Nr)rr�test_reflect_key_namerM�KEY_WOW64_64KEYrrrrrL�sz2Win64WinregTests.test_reflection.<locals>.<lambda>Z64KEY)rDrr�r�KEY_WOW64_32KEYrRr%rr'r#rUrr�r)r9rMrx)r�created_keyr1�	open_failrrr�test_reflection�s($	z Win64WinregTests.test_reflectioncCs�z�tttdttB��S}t|�}|jt|�t�|j	|�t
|�|jt|��WdQRXdd�}|jt
|�tttdttB��}|j|jd�WdQRXWdttttd�XdS)NrcSstttdttB�S)Nr)rErr�rMr�rrrrrL�sz:Win64WinregTests.test_disable_reflection.<locals>.<lambda>)rDrr�rr�rwr)rW�boolZassertFalserur$rUrrErMrRr%rx)rr�Zdisabledr�r1rrr�test_disable_reflection�s

	z(Win64WinregTests.test_disable_reflectionc
Cs*|jt��}ttd�WdQRXdS)NZsome_value_that_does_not_exist)rU�FileNotFoundErrorr9ZHKEY_CLASSES_ROOT)rZctxrrr�test_exception_numbers�sz'Win64WinregTests.test_exception_numbersN)rGrHrIrOr�r�r��HAS_REFLECTIONr�r�r�rrrrr�|s

,r�cCstjttt�dS)N)rZrun_unittestrJr�r�rrrr�	test_main�sr��__main__z)Remote registry calls can be tested usingz('test_winreg.py --remote \\machine_name')r
ri@i�?i@)'rY�sysrpr�Ztestr�
import_moduler�platformrr�argvr=r��
IndexError�
ValueErrorZgetwindowsversionr�Z
WIN64_MACHINEr��getpidZ
test_key_baserr�r|r#Z
REG_EXPAND_SZZREG_MULTI_SZr�r&ZTestCaserrJr�r�r�r�rG�printrrrr�<module>sH$
!

��`