U
    Ê¼µb‘
  ã                   @   s\   d dl Z d dlZd dlZd dlZddlT dd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )é    Né   )Ú*c                	   C   s"   t  t¡� tdƒ W 5 Q R X d S )Nzabstract base class)ÚpytestÚraisesÚ	TypeErrorÚProtocolError© r   r   ú7/tmp/pip-unpacked-wheel-rko__zic/h11/tests/test_util.pyÚtest_ProtocolError	   s    r
   c               
   C   s~  zt dƒ‚W n@ t k
rL }  z"t| ƒdks.t‚| jdks<t‚W 5 d } ~ X Y nX zt ddd�‚W n@ t k
rž }  z"t| ƒdks€t‚| jdksŽt‚W 5 d } ~ X Y nX dd„ }zRz
|ƒ  W nB t k
rö } z$d t t ¡ d ¡¡}| 	¡  W 5 d }~X Y nX W n~ t
k
�rx } z^t|ƒt
k�s t‚|jd	k�s0t‚|jd
k�s@t‚d t t ¡ d ¡¡}| |¡�sht‚W 5 d }~X Y nX d S )NZfooi�  i¢  ©Úerror_status_hintc                   S   s   t ddd�‚d S )NÚaé¤  r   )ÚLocalProtocolErrorr   r   r   r	   Úthunk   s    z&test_LocalProtocolError.<locals>.thunkÚ r   )r   r   )r   ÚstrÚAssertionErrorr   ÚjoinÚ	tracebackÚ	format_tbÚsysÚexc_infoZ!_reraise_as_remote_protocol_errorZRemoteProtocolErrorÚtypeÚargsÚendswith)Úer   Zexc1Zorig_tracebackZexc2Znew_tracebackr   r   r	   Útest_LocalProtocolError   s.      
r   c               	   C   sŠ   t  d¡} t t¡� t| dƒ W 5 Q R X t| dƒ}|dddœksFt‚t t¡� t| dƒ W 5 Q R X t t¡� t| dƒ W 5 Q R X d S )	Ns&   (?P<group1>[0-9]+)\.(?P<group2>[0-9]+)s   0.s   0.1ó   0ó   1)Zgroup1Zgroup2s   0.1xxs   0.1
)ÚreÚcompiler   r   r   Úvalidater   )Úmy_reÚgroupsr   r   r	   Útest_validate*   s    

r%   c               	   C   s¬   t  d¡} t t¡�}t| ddƒ W 5 Q R X dt|jƒks>t‚t t¡�}t| ddƒ W 5 Q R X dt|jƒksrt‚t t¡�}t| dddƒ W 5 Q R X dt|jƒks¨t‚d S )Ns   fooó    Zoopszoops {}z
oops {} xxé
   z
oops 10 xx)	r    r!   r   r   r   r"   r   Úvaluer   )r#   Úexcinfor   r   r	   Útest_validate_formatting8   s    
r*   c                  C   sž   t dƒ} t| ƒdkst‚| | ks$t‚t| ƒjdks6t‚| | hksDt‚t| ƒ| ksTt‚t dƒ}t|ƒdkslt‚| |ksxt‚| |hks†t‚t| ƒt|ƒk	sšt‚d S )NÚSÚS2)Zmake_sentinelÚreprr   r   Ú__name__)r+   r,   r   r   r	   Útest_make_sentinelG   s    r/   c                	   C   st   t dƒdkst‚t tdƒƒdks$t‚t dƒdks4t‚t t¡� t dƒ W 5 Q R X t t¡� t dƒ W 5 Q R X d S )Ns   123Z123u   áˆ´r'   )Zbytesifyr   Ú	bytearrayr   r   ÚUnicodeEncodeErrorr   r   r   r   r	   Útest_bytesifyT   s    r2   )r    r   r   r   Z_utilr
   r   r%   r*   r/   r2   r   r   r   r	   Ú<module>   s   