Your IP : 216.73.216.85


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_dbm_dumb.cpython-38.pyc

U

i�ft*�@s�dZddlZddlZddlZddlZddlZddlZddlmZ	ddl
mZddlm
Z
ejZdd�ZGdd�dej�Zed	kr�e��dS)
zATest script for the dumbdbm module
   Original by Roger E. Masse
�N)�support)�partialc	Cs6dD],}zt�t|�Wqtk
r.YqXqdS)N��.dir�.dat�.bak)�os�unlink�_fname�OSError)Zext�r�7/opt/alt/python38/lib64/python3.8/test/test_dbm_dumb.py�
_delete_filess
rc@s&eZdZddddddddd	d
ddd
dd�d�diZdd�Ze�ee	d�d�dd��Z
dd�Zdd�Zdd�Z
dd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Zd>d?�Zd@dA�Ze�e j!dB�dCdD��Z"dEdF�Z#dGdH�Z$dIS)J�DumbDBMTestCase�0��asPython:�bsProgramming�csthe�dsway�fsGuido�gsintended�ü�utf-8�!c	CsZt�t�td���>}|�t|���g�|jD]}|j|||<q.|�	|�W5QRXdS)N�c)
�
contextlib�closing�dumbdbm�openr
�assertEqual�list�keys�_dict�read_helper)�self�f�keyrrr
�test_dumbdbm_creation#s

z%DumbDBMTestCase.test_dumbdbm_creation�umaskztest needs os.umask()c	Cs�z$t�d�}t�tdd�}|��W5t�|�Xd}tjdkrDd}ddl}t�td�}|�|�	|j
�|�t�td	�}|�|�	|j
�|�dS)
N�ri�i��posixi�rrr)rr)rrr
�close�name�statr �S_IMODE�st_mode)r%Z	old_umaskr&Z
expected_moder.�strrr
�test_dumbdbm_creation_mode*s

z*DumbDBMTestCase.test_dumbdbm_creation_modecCs6t�t�}d|d<|�|dd�|��|��dS)Nrr)rrr
r r,�r%r&rrr
�test_close_twice?s

z DumbDBMTestCase.test_close_twicec	Csj|��t�t�td���F}d|jd<|d<|�|�|�|�	dd�d�|�|dd�W5QRXdS)N�wsindentedr�xxx�foo)
�init_dbrrrrr
r#r$r �
setdefaultr3rrr
�test_dumbdbm_modificationFs
z)DumbDBMTestCase.test_dumbdbm_modificationc
Cs�|��t�t�td����}|�|�|�tjd��d|d<W5QRX|�tjd��|d=W5QRX|�	|�
d�|jd�|�	|�
dd�d�|�|�
d��|�
t��|dW5QRXW5QRXdS)N�rz'The database is opened for reading only�xrrr6r7)r8rrrrr
r$�assertRaisesRegex�errorr �getr#ZassertIsNone�assertRaises�KeyErrorr3rrr
�test_dumbdbm_readOs 
��z!DumbDBMTestCase.test_dumbdbm_readc	Cs2|��t�t�t���}|�|�}W5QRXdS�N)r8rrrrr
�keys_helper)r%r&r"rrr
�test_dumbdbm_keys`sz!DumbDBMTestCase.test_dumbdbm_keysc	Cs4t�t�t���}d|d<|�d|�W5QRXdS)N�hello�1)rrrrr
�assertInr3rrr
�test_write_containsesz#DumbDBMTestCase.test_write_containsc	Cs\t�t�t���}d|d<d|d<W5QRXt�t�t���}|�|dd�W5QRXdS)NrFrG�hello2)rrrrr
r r3rrr
�test_write_write_readjs
z%DumbDBMTestCase.test_write_write_readc	CsF|��t�t�td���"}|�|d|jd�d��W5QRXdS)Nr;rr)	r8rrrrr
r r#�encoder3rrr
�
test_str_readrszDumbDBMTestCase.test_str_readc	Cs�|��t�t�t���}d|d<d|d<W5QRXt�t�td���D}|�d|�|�|d�d�|j	d�d��|�|dd�W5QRXdS)	Nrr�a�1r;rrGr)
r8rrrrr
rHr rLr#r3rrr
�test_str_write_containsws�z'DumbDBMTestCase.test_str_write_containsc	Cs�t�t�t���}d|d<d|d<W5QRXt�tdd��}|��}W5QRXtjdkrh|�	dd	�}n|�	d	d�}t�tdd
��}|�
|�W5QRXt�t�}|�|dd�|�|dd�dS)NrFrGrJ�2r�rb�
�
s
�wb)rrrrr
�io�readr�linesep�replace�writer )r%r&�file�datarrr
�test_line_endings�s

z!DumbDBMTestCase.test_line_endingscCs0|�|�}|jD]}|�|j|||�qdSrC)rDr#r )r%r&r"r'rrr
r$�s

zDumbDBMTestCase.read_helperc	Cs<t�t�td��� }|jD]}|j|||<qW5QRXdS�N�n)rrrrr
r#�r%r&�krrr
r8�s
zDumbDBMTestCase.init_dbcCs*t|���}t|j���}|�||�|SrC)�sortedr"r#r )r%r&r"Zdkeysrrr
rD�szDumbDBMTestCase.keys_helperc	
Cs�ddl}i}td�D]�}t�t�t���t}td�D]d}|�d�}|��dkrb||kr�||=||=q2|�d�|�d�}|||<|||<|�	|||�q2W5QRXt�t�t���4}t
dd	�|��D��}t
|���}|�	||�W5QRXqdS)
Nr��dZ
abcdefghijklmg�������?)rrri'css |]\}}|�d�|fVqdS)zlatin-1N)rL)�.0ra�vrrr
�	<genexpr>�sz.DumbDBMTestCase.test_random.<locals>.<genexpr>)�random�rangerrrrr
ZchoiceZ	randranger rb�items)	r%rh�dZdummyr&rarfZexpectedZgotrrr
�test_random�s$
zDumbDBMTestCase.test_randomc	Csrt�td��}d|d<W5QRXt�td��}|�t|���dg�W5QRX|�tj��|��W5QRXdS)Nrzcontext managerzdumbdbm context managerr;sdumbdbm context manager)rrr
r r!r"r@r>)r%�dbrrr
�test_context_manager�s z$DumbDBMTestCase.test_context_managerc
Cs�t�td�}|��ttj|�ttj|d�ttj|�ttj	|�fD]6}|�
tj��}|d�W5QRX|�t
|j�d�qBt�d�t�d�t�d�tfD]6}|�
tj��}||�W5QRX|�t
|j�d�q�dS)Nr�b�testz"DBM object has already been closedr"Ziterkeysrj)rrr
r,r�operator�delitem�setitem�getitem�containsr@r>r �strZ	exception�methodcaller�len)r%r&Zmeth�cmrrr
�test_check_closed�s,


����z!DumbDBMTestCase.test_check_closedc	Cs^t�td�� }|jD]}|j|||<qW5QRXt�td��}|�|��g�W5QRXdSr^)rrr
r#r r"r`rrr
�test_create_new�s

zDumbDBMTestCase.test_create_newcCsxttdd��}|�d�W5QRXt���B}|�t��t�t��}W5QRXW5QRX|�|�	�d�W5QRXdS)Nrr5zstr(print('Hacked!')), 0
�)
rr
rZrZcaptured_stdoutr@�
ValueErrorrr �getvalue)r%�stream�stdoutr&rrr
�	test_eval�s
zDumbDBMTestCase.test_evalc
CsbdD]X}t�|�t��t�t|�W5QRX|�tj�	td��|�tj�	td��qdS)N�r;r5rr)
rr@�FileNotFoundErrorrrr
�assertFalser�path�exists)r%�valuerrr
�test_missing_data�sz!DumbDBMTestCase.test_missing_datac
Cs�t�td��}W5QRXt�td�dD]R}|�t��t�t|�W5QRX|�tj�	td��|�tj�	td��q*dS)Nr_rr�r)
rrr
rr	r@r�r�r�r�)r%r&r�rrr
�test_missing_index�s
z"DumbDBMTestCase.test_missing_indexc
Cs2dD](}|�td��t�t|�W5QRXqdS)N)�xZrfNz)Flag must be one of 'r', 'w', 'c', or 'n')r=r}rrr
)r%�flagrrr
�test_invalid_flags
�z!DumbDBMTestCase.test_invalid_flagc
Cs�t����}tj�|d�}t�|d��4}|�t|�	��g�|j
D]}|j
|||<q@W5QRXt�|dtj
�t�|dtj
�t�|tj
tjB�t�|d��(}|�t|�	��t|j
��|��W5QRXW5QRXdS)Nrmr_rrr;)rZtemp_dirrr��joinrrr r!r"r#�chmodr.�S_IRUSR�S_IXUSRrbr,)r%�dirZfnamer&r'rrr
�test_readonly_files
s

z#DumbDBMTestCase.test_readonly_filesz*requires OS support of non-ASCII encodingsc	Cs�tj}dD]}|�tj||�q
t�|d��}d|d<W5QRX|�tj�	|d��|�tj�	|d��t�|d��:}|�
t|���dg�|�d|k�|�
|dd�W5QRXdS)Nrrsvalueskeyrrr;)
r�TESTFN_NONASCIIZ
addCleanupr	rrZ
assertTruerr�r�r r!r")r%�filename�suffixrmrrr
�test_nonascii_filenamesz&DumbDBMTestCase.test_nonascii_filenamecCs
t�dSrC�r�r%rrr
�tearDown'szDumbDBMTestCase.tearDowncCs
t�dSrCr�r�rrr
�setUp*szDumbDBMTestCase.setUpN)%�__name__�
__module__�__qualname__rLr#r(�unittestZ
skipUnless�hasattrrr2r4r:rBrErIrKrMrPr]r$r8rDrlrnrzr{r�r�r�r�r�rr�r�r�r�rrrr
rs\�

	
	
�

r�__main__)�__doc__rrVrqrr.r�Zdbm.dumbZdumbrrpr�	functoolsrZTESTFNr
rZTestCaserr��mainrrrr
�<module>s