add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^N:�@sxddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
Gdd�d�ZGdd�dej�Z
d	d
�ZdS)�N)�
HTTPException)�support)�BytesIOc@s�eZdZdZdZdZdZdZdZdZ	dZ
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdS),�TestBase�N�ru���cCsX|jdkrt�|j�|_|jj|_|jj|_|jj|_|jj|_	|jj
|_
|jj|_dS)N)�codec�codecs�lookup�encoding�encode�decode�streamreader�reader�streamwriter�writer�incrementalencoder�incrementaldecoder)�self�r�3/usr/lib64/python3.7/test/multibytecodec_support.py�setUps





zTestBase.setUpcCs�g}x8|jD].}|�d�}|��}dd�|D�}|�|�qWxPt|�D]D\}}|�|�d}|�||�d��|jrH|�||�|�d�qHWdS)N�
cSsg|]}|d�qS)rr)�.0�linerrr�
<listcomp>*sz-TestBase.test_chunkcoding.<locals>.<listcomp>rzutf-8)	�tstring�split�pop�append�zipr
�assertEqual�
roundtriptestr)rZ
tstring_lines�b�linesZlastZnative�utf8�urrr�test_chunkcoding$s
zTestBase.test_chunkcodingcCs�x�|jD]�\}}}t|t�r$|j}n|j}|r�|||�d}||jkr~|�t|�tkt|��|�||d||j	|||f�q�|�t|�tkt|��|�||d||j	|||f�q|�
t|||�qWdS)Nrz%a.decode(%r, %r)=%a != %az%a.encode(%r, %r)=%a != %a)�
codectests�
isinstance�bytesr
r�
assertTrue�type�strr!r�assertRaises�UnicodeError)r�source�scheme�expected�func�resultrrr�test_errorhandle2s$



zTestBase.test_errorhandlecCs0|jr|�d�d}|�|�|d�dd�dS)Nz$encoding contains full ISO 10646 mapuଓଣୠ nd eggs�xmlcharrefreplacers&#2835;&#2851;&#2912; nd eggs)�has_iso10646�skipTestr!r)r�srrr�test_xmlcharrefreplaceIs
zTestBase.test_xmlcharrefreplacecsj|jr|�d�ddlm��fdd�}t�d|�|jrF|j\}}nd}d}|�|�|d�d|�dS)	Nz$encoding contains full ISO 10646 mapr)�codepoint2namecs|t|t�std|��g}xP|j|j|j�D]:}t|��krV|�d�t|��q.|�dt|��q.Wd�|�|jfS)Nzdon't know how to handle %rz&%s;z&#%d;r)	r)�UnicodeEncodeError�	TypeError�object�start�end�ordr�join)�exc�l�c)r;rr�xmlcharnamereplaceYs
z>TestBase.test_customreplace_encode.<locals>.xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ〉s*&laquo;&real;&raquo; = &lang;&#4660;&rang;)	r7r8Z
html.entitiesr;r	�register_error�xmlcharnametestr!r)rrFZsinZsoutr)r;r�test_customreplace_encodeSs

z"TestBase.test_customreplace_encodecCs>dd�}t�d|�|�d|jdd�d}|�|d�dS)NcSs
d|jfS)Ns1234)r@)rCrrr�	myreplaceosz7TestBase.test_callback_returns_bytes.<locals>.myreplaceztest.cjktest�abc�defrs
abc1234def)r	rGr�unmappedunicoder!)rrJ�encrrr�test_callback_returns_bytesnsz$TestBase.test_callback_returns_bytescsN�fdd�}t�d|�x0dddggdt�fD]�|�t|j|jd�q.WdS)Ncs
�|jfS)N)r@)rC)�retrrrJvsz7TestBase.test_callback_wrong_objects.<locals>.myreplaceztest.cjktestr��)r	rGr>r.r=rrM)rrJr)rPr�test_callback_wrong_objectsus
z$TestBase.test_callback_wrong_objectscCs^dd�}t�d|�|�|�d|jdd�d�dd�}t�d|�|�t|j|jd�dS)NcSsdt|j�fS)N�x)�intr@)rCrrrrJsz4TestBase.test_callback_long_index.<locals>.myreplaceztest.cjktest�abcd�efgh)s	abcdxefgh�	cSsdtjdfS)NrTr)�sys�maxsize)rCrrrrJ�s)r	rGr!rrMr.�
IndexError)rrJrrr�test_callback_long_index~s
z!TestBase.test_callback_long_indexcCs,dd�}t�d|�|�t|j|jd�dS)NcSsdS)N)rTNr)rCrrrrJ�sz4TestBase.test_callback_None_index.<locals>.myreplaceztest.cjktest)r	rGr.r=rrM)rrJrrr�test_callback_None_index�sz!TestBase.test_callback_None_indexcs@�fdd��d�_t�d��|�|�d|jdd�d�dS)Ncs*�jdkr�jd8_dSd|jfSdS)Nrr)�REPLACEDrZTERMINAL)�limitr@)rC)rJrrrJ�s
z8TestBase.test_callback_backward_index.<locals>.myreplacerRztest.cjktestrVrW)s4abcdREPLACEDabcdREPLACEDabcdREPLACEDabcdTERMINALefghrX)r_r	rGr!rrM)rr)rJr�test_callback_backward_index�sz%TestBase.test_callback_backward_indexcCs6dd�}t�d|�|�|�d|jdd�d�dS)NcSsd|jdfS)Nr^rQ)r@)rCrrrrJ�sz7TestBase.test_callback_forward_index.<locals>.myreplaceztest.cjktestrVrW)sabcdREPLACEDghrX)r	rGr!rrM)rrJrrr�test_callback_forward_index�sz$TestBase.test_callback_forward_indexcCs,dd�}t�d|�|�t|j|jd�dS)NcSsdS)N)ZTERM�dr)rCrrrrJ�sz:TestBase.test_callback_index_outofbound.<locals>.myreplaceztest.cjktest)r	rGr.r[rrM)rrJrrr�test_callback_index_outofbound�sz'TestBase.test_callback_index_outofboundcCs�t�d�}x�dgttdd��dddddgD]v}|t|jd��}t�}|��}x:|dk	rh|�|�}n|��}|svP|�|�}|�	|�qTW|�
|��|jd	�q.WdS)
Nzutf-8r�!�@��iir)r	�	getreader�list�rangerrr�readr�writer!�getvalue)r�
UTF8Reader�sizehint�istream�ostream�encoder�data�errr�test_incrementalencoder�s

z TestBase.test_incrementalencodercCs�t�d�}x�ddgttdd��ddddd	gD]f}t|jd
�}|t��}|��}x*|�|�}|shPqV|�|�}|�	|�qVW|�
|��|jd�q0WdS)Nzutf-8�����rrdrerfrgiir)r	�	getwriterrirjrrrrkr
rlr!rm)r�
UTF8Writerrorprq�decoderrsr&rrr�test_incrementaldecoder�s



z TestBase.test_incrementaldecodercCs�|j}|��}|�t|j|d�d|_|�|�|d�d�|��dd�}t�	d|�d|_|�|�|d�d�d|_|�|�|d�d�dS)NT�ignore�cSs
d|jfS)NZcalled)r@)rCrrr�tempreplace�szDTestBase.test_incrementalencoder_error_callback.<locals>.tempreplaceztest.incremental_error_callbackscalled)
rMrr.r<r�errorsr!�resetr	rG)r�invrtr}rrr�&test_incrementalencoder_error_callback�sz/TestBase.test_incrementalencoder_error_callbackcCs�t�d�}x�dD]�}x�ddgttdd��dddd	d
gD]t}|�t|jd��}|t��}t||�}x0||�}|svP|dkr�|�|�qh|�	|�qhW|�
|��|jd�q:WqWdS)
Nzutf-8)rk�readline�	readlinesrvrrdrerfrgiirr�)r	rwrirjrrr�getattr�
writelinesrlr!rm)rrx�namerorprqr3rsrrr�test_streamreader�s



zTestBase.test_streamreaderc	Cs�d}t�d�}x�|D]�}x�dgttdd��ddddd	gD]�}|t|jd��}|�t��}t||�}x@|dk	r|||�}n|�}|s�P|d
kr�|�|�qj|�	|�qjW|�
|��|jd�q<WqWdS)N)rkr�r�zutf-8rrdrerfrgiir�r)r	rhrirjrrrr�r�rlr!rm)	rZ	readfuncsrnr�rorprqr3rsrrr�test_streamwriter�s$



zTestBase.test_streamwritercCst�}|�|�}|��dS)N)rrr)r�streamrrrr�"test_streamwriter_reset_no_pendings
z+TestBase.test_streamwriter_reset_no_pendingc	Cs&|��}|�t��
|`WdQRXdS)N)rr.�AttributeErrorr~)rrtrrr�$test_incrementalencoder_del_segfaultsz-TestBase.test_incrementalencoder_del_segfault)�__name__�
__module__�__qualname__rrrr(r"r7rHrMrr'r5r:rIrOrSr\r]r`rarcrurzr�r�r�r�r�rrrrrs6

	

rc@s\eZdZgZgZgZgZdd�Zdd�Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�ZdS)�TestBase_Mappingc	Cs>y|����Wn(ttfk
r8|�d|j�YnXdS)NzCould not retrieve )�open_mapping_file�close�OSErrorrr8�
mapfileurl)rrrrr$szTestBase_Mapping.setUpcCst�|j�S)N)rZopen_urlresourcer�)rrrrr�*sz"TestBase_Mapping.open_mapping_filecCs"|j�d�r|��n|��dS)Nz.xml)r��endswith�_test_mapping_file_ucm�_test_mapping_file_plain)rrrr�test_mapping_file-s
z"TestBase_Mapping.test_mapping_filec		Cs8dd�}i}|����}�x|D�]}|s,P|�d�d����}t|�dkrPq t|d�}|dkrtt|d@g�}nz|dkr�t|d	?|d
?d@|d?d@|d@g�}nH|dkr�t|d
?|d?d@|d@g�}n |d
kr t|d?|d@g�}nq ||d�}t|�dks ||k�rq |||<|�||�q WWdQRXdS)Nc	Ssd�tttt|�d����S)Nr�+)rB�map�chr�evalr)r9rrr�<lambda>4r|z;TestBase_Mapping._test_mapping_file_plain.<locals>.<lambda>�#rrQ���i���irgri��)r�r�strip�lenr�r*rA�
_testpoint)	rZunichrsZurt_wa�frrsZcsetval�csetch�unichrrrr�3s4z)TestBase_Mapping._test_mapping_file_plainc	Csb|���}|��}WdQRXt�d|�}x4|D],\}}tt|d��}t�|�}|�||�q.WdS)Nz'<a u="([A-F0-9]{4})" b="([0-9A-F ]+)"/>r�)	r�rk�re�findallr�rUr*�fromhexr�)rr�ZucmdataZucZuniZcodedr�Zcodechrrrr�Ts

z'TestBase_Mapping._test_mapping_file_ucmcCsx|jD]}|j|�qWdS)N)�supmapsr�)r�mappingrrr�test_mapping_supplemental]sz*TestBase_Mapping.test_mapping_supplementalcCsH||f|jkr"|�|�|j�|�||f|jkrD|�t||j�|�dS)N)�pass_enctestr!rr�pass_dectestr-)rr�r�rrrr�aszTestBase_Mapping._testpointcCs�x�|jD]�\}}}t|t�r$|j}n|j}|r�t|t�r|||j|�}|�t|�tkt|��|�	||d||j|||f�q�||j|�}|�t|�tkt|��|�	||d||j|||f�q|�
t||j|�qWdS)Nz%a.decode(%r, %r)=%a != %az%a.encode(%r, %r)=%a != %a)r(r)r*r
rrr+r,r-r!r.r/)rr0r1r2r3r4rrrr5gs&



z!TestBase_Mapping.test_errorhandleN)r�r�r�r�r�r�r(rr�r�r�r�r�r�r5rrrrr�s!	r�c	Csvtj�tj�t�d�}ttj�||d�d��}|��}WdQRXttj�||d�d��}|��}WdQRX||fS)NZcjkencodingsz.txt�rbz	-utf8.txt)�os�pathrB�dirname�__file__�openrk)r��dirr�Zencodedr%rrr�load_teststringsr�)r	r�r�rYZunittestZhttp.clientrZtestr�iorrZTestCaser�r�rrrr�<module>sa