B
    Ûö›\Þ
  ã               @   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   ú0lib/python3.7/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ÚfZ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 )	NZpreprocessorzThe %r command is not foundÚxxxz	/* xxx */)ÚpatternZbodyr   Z_configtestr   )r   Z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ÚtwoZthreeZfour)	r(   r   r   ÚpathsepZinclude_dirsZ	librariesZlibrary_dirsZ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 )Nr.   r/   r&   )Zmkdtempr   r   ÚjoinZ
write_fileZ
assertTrueÚexistsr(   r   Z_cleanZassertFalse)r   Ztmp_dirÚf1Úf2r#   r*   r+   r)   r   r   r   Ú
test_cleanE   s    zConfigTestCase.test_clean)Ú__name__Ú
__module__Ú__qualname__r   r   r   r$   ÚunittestZskipIfÚsysÚplatformr-   r1   r6   Ú__classcell__r   r   )r   r   r      s   r   c               C   s
   t  t¡S )N)r:   Z	makeSuiter   r   r   r   r   Ú
test_suiteX   s    r>   Ú__main__)Ú__doc__r:   r   r;   Ztest.supportr   r   Zdistutils.command.configr   r   Zdistutils.testsr   Z	distutilsr   ZLoggingSilencerZTempdirManagerZTestCaser   r>   r7   r   r   r   r   Ú<module>   s   K