Your IP : 216.73.216.52


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



���]��@s�ddlZddlZddlZddlZddlZddljZddlm	Z	ddl
mZe	jZ
dd�ZGdd�dej�Zedkr�ej�dS)	�N)�support)�partialcCsHxAdddgD]0}ytjt|�Wqtk
r?YqXqWdS)Nz.dirz.datz.bak)�os�unlink�_fname�OSError)�ext�r	�2/opt/alt/python35/lib64/python3.5/test_dbm_dumb.py�
_delete_filess

rc@s�eZdZddddddddd	d
ddd
ddjd�diZdd�Zejee	d�d�ejee	d�d�dd���Z
dd�Zdd�Zdd�Z
d d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zejee	d�d�d<d=��Zd>d?�Zd@dA�ZdBS)C�DumbDBMTestCase�0��asPython:�bsProgramming�csthe�dsway�fsGuido�gsintended�üzutf-8�!cCsntjtd�}|jt|j��g�x"|jD]}|j|||<q8W|j|�|j�dS)N�c)	�dumbdbm�openr�assertEqual�list�keys�_dict�read_helper�close)�self�f�keyr	r	r
�test_dumbdbm_creation"s
z%DumbDBMTestCase.test_dumbdbm_creation�umaskztest needs os.umask()�chmodztest needs os.chmod()cCs�z2tjd�}tjtdd�}|j�Wdtj|�Xd}tjdkr^d}ddl}tjtd�}|j|j	|j
�|�tjtd	�}|j|j	|j
�|�dS)
N�ri�i��posixi�rz.datz.dir)rr$rrrr�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_modecCsEtjt�}d|d<|j|dd�|j�|j�dS)Nrr)rrrrr)r r!r	r	r
�test_close_twice@s


z DumbDBMTestCase.test_close_twicecCsL|j�tjtd�}d|jd<|d<|j|�|j�dS)N�wsindentedr)�init_dbrrrrrr)r r!r	r	r
�test_dumbdbm_modificationGs


z)DumbDBMTestCase.test_dumbdbm_modificationcCs7|j�tjtd�}|j|�|j�dS)N�r)r0rrrrr)r r!r	r	r
�test_dumbdbm_readNs

z!DumbDBMTestCase.test_dumbdbm_readcCs6|j�tjt�}|j|�}|j�dS)N)r0rrr�keys_helperr)r r!rr	r	r
�test_dumbdbm_keysTs
z!DumbDBMTestCase.test_dumbdbm_keyscCs7tjt�}d|d<|jd|�|j�dS)Nshello�1)rrr�assertInr)r r!r	r	r
�test_write_containsZs
z#DumbDBMTestCase.test_write_containscCs^tjt�}d|d<d|d<|j�tjt�}|j|dd�|j�dS)Nshellor6shello2)rrrrr)r r!r	r	r
�test_write_write_read`s


z%DumbDBMTestCase.test_write_write_readcCsD|j�tjtd�}|j|d|jdjd��dS)Nr2rzutf-8)r0rrrrr�encode)r r!r	r	r
�
test_str_readjs
zDumbDBMTestCase.test_str_readcCs�|j�tjt�}d|d<d|d<|j�tjtd�}|jd|�|j|djd�|jdjd��|j|dd�dS)	Nrr�a�1r2zutf-8r6r)	r0rrrrr7rr:r)r r!r	r	r
�test_str_write_containsos



z'DumbDBMTestCase.test_str_write_containscCs�tjt�}d|d<d|d<|j�tjtdd��}|j�}WdQRXtjdkr}|jdd	�}n|jd	d�}tjtdd
��}|j	|�WdQRXtjt�}|j
|dd�|j
|dd�dS)Nshellor6shello2�2z.dir�rb�
s
s
�wb)rrrr�io�readr�linesep�replace�writer)r r!�file�datar	r	r
�test_line_endings{s


z!DumbDBMTestCase.test_line_endingscCsB|j|�}x,|jD]!}|j|j|||�qWdS)N)r4rr)r r!rr"r	r	r
r�szDumbDBMTestCase.read_helpercCsEtjtd�}x"|jD]}|j|||<qW|j�dS)Nr/)rrrrr)r r!�kr	r	r
r0�szDumbDBMTestCase.init_dbcCs;t|j��}t|jj��}|j||�|S)N)�sortedrrr)r r!rZdkeysr	r	r
r4�szDumbDBMTestCase.keys_helperc	Cs9ddl}i}x td�D]}tjt�}x�td�D]�}|jd�}|j�dkr�||kr�||=||=qA|jd�|jd	�}|||<|||<|j|||�qAW|j�tjt�}t	d
d�|j
�D��}t	|j
��}|j||�|j�qWdS)
Nr��dZ
abcdefghijklmg�������?rrri'css*|] \}}|jd�|fVqdS)zlatin-1N)r:)�.0rK�vr	r	r
�	<genexpr>�sz.DumbDBMTestCase.test_random.<locals>.<genexpr>)rrr)�random�rangerrr�choice�	randrangerrrL�items)	r rR�d�dummyr!rKrPZexpectedZgotr	r	r
�test_random�s(



zDumbDBMTestCase.test_randomcCs�tjtd��}d|d<WdQRXtjtd��&}|jt|j��dg�WdQRX|jtj��|j�WdQRXdS)Nrzcontext managerzdumbdbm context managerr2sdumbdbm context manager)rrrrrr�assertRaises�error)r �dbr	r	r
�test_context_manager�s&z$DumbDBMTestCase.test_context_managercCs&tjtd�}|j�x�ttj|�ttj|d�ttj|�ttj	|�fD]E}|j
tj��}|d�WdQRX|jt
|j�d�qbWxttjd�tjd�tjd�tfD]E}|j
tj��}||�WdQRX|jt
|j�d�q�WdS)Nr�b�testz"DBM object has already been closedrZiterkeysrV)rrrrr�operator�delitem�setitem�getitem�containsrZr[r�str�	exception�methodcaller�len)r r!�meth�cmr	r	r
�test_check_closed�s$

z!DumbDBMTestCase.test_check_closedcCswtjtd��,}x"|jD]}|j|||<qWWdQRXtjtd��}|j|j�g�WdQRXdS)N�n)rrrrrr)r r!rKr	r	r
�test_create_new�s
zDumbDBMTestCase.test_create_newcCs�ttdd��}|jd�WdQRXtj��M}|jt��tjt��}WdQRXWdQRX|j|j	�d�WdQRXdS)Nz.dirr/zstr(print('Hacked!')), 0
�)
rrrGrZcaptured_stdoutrZ�
ValueErrorrr�getvalue)r �stream�stdoutr!r	r	r
�	test_eval�szDumbDBMTestCase.test_evalcCstj��}tjj|d�}tj|d��H}|jt|j	��g�x"|j
D]}|j
|||<q_WWdQRXtj|dtj
�tj|dtj
�tj|tj
tjB�tj|d��6}|jt|j	��t|j
��|j�WdQRXWdQRXdS)Nr\rlz.dirz.datr2)rZtemp_dirr�path�joinrrrrrrr%r)�S_IRUSR�S_IXUSRrLr)r �dirZfnamer!r"r	r	r
�test_readonly_files�s%z#DumbDBMTestCase.test_readonly_filescCst�dS)N)r)r r	r	r
�tearDown�szDumbDBMTestCase.tearDowncCst�dS)N)r)r r	r	r
�setUpszDumbDBMTestCase.setUpN)�__name__�
__module__�__qualname__r:rr#�unittestZ
skipUnless�hasattrrr-r.r1r3r5r8r9r;r>rJrr0r4rYr]rkrmrsryrzr{r	r	r	r
rs>*

	'r�__main__)rCr`rr)rZdbm.dumbZdumbrr_r�	functoolsrZTESTFNrrZTestCaserr|�mainr	r	r	r
�<module>s	�