U
    {±Ëh„  ã                   @   sX   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ dd„ Z	G dd„ deƒZ
dS )é    N)Ú
CythonTestc                  O   s(   t j ¡  d t jj_t jjj| |Ž d S ©N)ÚCythonZUtilsZclear_function_cachesÚBuildÚDependenciesZ	_dep_treeZ	cythonize)ÚargsÚkwargs© r	   úF/tmp/pip-unpacked-wheel-fhl22ezh/Cython/Build/Tests/TestRecythonize.pyÚfresh_cythonize   s    

r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestRecythonizec                 C   s.   t  | ¡ tjdtj d¡r dnd d| _d S )Nzrecythonize-testZTEST_TMP©ÚprefixÚdir)r   ÚsetUpÚtempfileÚmkdtempÚosÚpathÚisdirÚtemp_dir©Úselfr	   r	   r
   r      s    
þÿzTestRecythonize.setUpc                 C   s   t  | ¡ t | j¡ d S r   )r   ÚtearDownÚshutilÚrmtreer   r   r	   r	   r
   r      s    
zTestRecythonize.tearDownc           	   	   C   sJ  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d¡ W 5 Q R X t
|dƒ}| d¡ W 5 Q R X |  ||h| |¡¡ t|ƒ t d	¡ t
|ƒ}| ¡ }W 5 Q R X t
|dƒ}| d
¡ W 5 Q R X t|ƒ t
|ƒ}| ¡ }W 5 Q R X |  d|k¡ |  d|k¡ |  d|k¡ |  d|k¡ d S )NÚsrcr   úa.pxdúa.pyxúa.cÚwúcdef int value
ú
value = 1
é   úcdef double value
ú__pyx_v_1a_value = 1;ú__pyx_v_1a_value = 1.0;©r   r   r   r   r   Újoinr   r   r   Zcreate_dependency_treeÚopenÚwriteÚassertEqualZall_dependenciesr   ÚtimeÚsleepÚreadÚ
assertTrueZassertFalse)	r   Úsrc_dirÚa_pxdÚa_pyxÚa_cÚdep_treeÚfÚa_c_contents1Úa_c_contents2r	   r	   r
   Ú"test_recythonize_pyx_on_pxd_change   s.    


z2TestRecythonize.test_recythonize_pyx_on_pxd_changec           	   	   C   sJ  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d¡ W 5 Q R X t
|dƒ}| d¡ W 5 Q R X |  ||h| |¡¡ t|ƒ t d	¡ t
|ƒ}| ¡ }W 5 Q R X t
|dƒ}| d
¡ W 5 Q R X t|ƒ t
|ƒ}| ¡ }W 5 Q R X |  d|k¡ |  d|k¡ |  d|k¡ |  d|k¡ d S )Nr   r   r   za.pyr   r    r!   r"   r#   r$   r%   r&   r'   )	r   r0   r1   Za_pyr3   r4   r5   r6   r7   r	   r	   r
   Ú!test_recythonize_py_on_pxd_changeI   s.    


z1TestRecythonize.test_recythonize_py_on_pxd_changec           
   	   C   s€  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d¡ W 5 Q R X t
|dƒ}| d	¡ W 5 Q R X t
|dƒ}| d
¡ W 5 Q R X |  ||h| |¡¡ t||gƒ t d¡ t
|ƒ}| ¡ }W 5 Q R X t
|dƒ}| d¡ W 5 Q R X t||gƒ t
|ƒ}| ¡ }	W 5 Q R X |  d|k¡ |  d|	k¡ |  d|	k¡ |  d|k¡ d S )Nr   r   r   r   zb.pyxúb.cr    r!   r"   zcimport a
a.value = 2
r#   r$   ú__pyx_v_1a_value = 2;ú__pyx_v_1a_value = 2.0;r'   )
r   r0   r1   r2   Zb_pyxÚb_cr4   r5   Úb_c_contents1Úb_c_contents2r	   r	   r
   Ú&test_recythonize_pyx_on_dep_pxd_changes   s4    


z6TestRecythonize.test_recythonize_pyx_on_dep_pxd_changec              	   C   s°  t jd| jd}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tj |d¡}tjj 	¡ }t
|dƒ}| d	¡ W 5 Q R X t
|dƒ}| d
¡ W 5 Q R X t
|dƒ}| d¡ W 5 Q R X t
|dƒ}| d¡ W 5 Q R X |  |||h| |¡¡ t||gƒ t d¡ t
|ƒ}| ¡ }	W 5 Q R X t
|dƒ}| d¡ W 5 Q R X t||gƒ t
|ƒ}| ¡ }
W 5 Q R X |  d|	k¡ |  d|
k¡ |  d|
k¡ |  d|	k¡ d S )Nr   r   r   r   zb.pxdzb.pyr:   r    r!   r"   z
cimport a
za.value = 2
r#   r$   r;   r<   r'   )r   r0   r1   r2   Zb_pxdZb_pyr=   r4   r5   r>   r?   r	   r	   r
   Ú%test_recythonize_py_on_dep_pxd_change¤   s:    


z5TestRecythonize.test_recythonize_py_on_dep_pxd_changeN)	Ú__name__Ú
__module__Ú__qualname__r   r   r8   r9   r@   rA   r	   r	   r	   r
   r      s   	**1r   )r   r   r   r,   ZCython.Build.Dependenciesr   ZCython.UtilsZCython.TestUtilsr   r   r   r	   r	   r	   r
   Ú<module>   s   