B
    18™\Þ
  ã               @   sŒ   d Z ddlZddlZddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ G dd„ dejejejƒZd	d
„ Zedkrˆeeƒ ƒ dS )z#Tests for distutils.command.config.é    N)Úrun_unittestÚmissing_compiler_executable)Ú	dump_fileÚconfig)Úsupport)Úlogc                   sb   e Zd Zdd„ Z‡ fdd„Z‡ fdd„Zdd„ Ze e	j
d	kd
¡dd„ ƒZdd„ Zdd„ Z‡  ZS )ÚConfigTestCasec             G   s"   x|  ¡ D ]}| j |¡ q
W d S )N)Ú
splitlinesÚ_logsÚappend)ÚselfÚmsgÚargsÚline© r   úc/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_config_cmd.pyÚ_info   s    zConfigTestCase._infoc                s(   t t| ƒ ¡  g | _tj| _| jt_d S )N)Úsuperr   ÚsetUpr
   r   ÚinfoÚold_logr   )r   )Ú	__class__r   r   r      s    zConfigTestCase.setUpc                s   | j t_tt| ƒ ¡  d S )N)r   r   r   r   r   ÚtearDown)r   )r   r   r   r      s    zConfigTestCase.tearDownc             C   s\   t j t¡d d }t|ƒ}zt| ¡ ƒ}W d | ¡  X t|dƒ |  	t| j
ƒ|d ¡ d S )Nr   z.pyzI am the headeré   )ÚosÚpathÚsplitextÚ__file__ÚopenÚlenÚ	readlinesÚcloser   ÚassertEqualr
   )r   Z	this_fileÚfÚnumlinesr   r   r   Útest_dump_file   s    

zConfigTestCase.test_dump_fileÚwin32zcan't test on Windowsc             C   sl   t dgƒ}|d k	r |  d| ¡ |  ¡ \}}t|ƒ}|jddd}|  |d¡ |jddd}|  |d¡ d S )	NÚpreprocessorzThe %r command is not foundÚxxxz	/* xxx */)ÚpatternÚbodyr   Z_configtestr   )r   ÚskipTestÚcreate_distr   Z
search_cppr"   )r   ÚcmdÚpkg_dirÚdistÚmatchr   r   r   Útest_search_cpp(   s    
zConfigTestCase.test_search_cppc             C   sr   |   ¡ \}}t|ƒ}dtj |_d|_dtj |_| ¡  |  |jddg¡ |  |jdg¡ |  |jddg¡ d S )Nzone%stwoÚonezthree%sfourÚtwoÚthreeÚfour)	r,   r   r   ÚpathsepÚinclude_dirsÚ	librariesÚlibrary_dirsÚensure_finalizedr"   )r   r.   r/   r-   r   r   r   Útest_finalize_options7   s    z$ConfigTestCase.test_finalize_optionsc             C   s¨   |   ¡ }tj |d¡}tj |d¡}|  |d¡ |  |d¡ x"||fD ]}|  tj |¡¡ qFW |  ¡ \}}t|ƒ}| 	||¡ x"||fD ]}|  
tj |¡¡ qŠW d S )Nr2   r3   r(   )Úmkdtempr   r   ÚjoinÚ
write_fileÚ
assertTrueÚexistsr,   r   Z_cleanÚassertFalse)r   Útmp_dirÚf1Úf2r#   r.   r/   r-   r   r   r   Ú
test_cleanE   s    zConfigTestCase.test_clean)Ú__name__Ú
__module__Ú__qualname__r   r   r   r%   ÚunittestÚskipIfÚsysÚplatformr1   r;   rE   Ú__classcell__r   r   )r   r   r      s   r   c               C   s
   t  t¡S )N)rI   Ú	makeSuiter   r   r   r   r   Ú
test_suiteX   s    rO   Ú__main__)Ú__doc__rI   r   rK   Ztest.supportr   r   Zdistutils.command.configr   r   Údistutils.testsr   Ú	distutilsr   ÚLoggingSilencerÚTempdirManagerÚTestCaser   rO   rF   r   r   r   r   Ú<module>   s   K