B
    18™\  ã               @   s    d Z 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l	m
Z
 ddlmZ ddlmZmZmZ G dd„ dejejƒZd	d
„ Zedkrœeeƒ ƒ dS )zTests for distutils.sysconfig.é    N)Ú	sysconfig)Úget_default_compiler)Úsupport)ÚTESTFNÚrun_unittestÚcheck_warningsc                   s  e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
e eƒ dkd¡dd„ ƒZdd„ Zdd„ Zdd„ Ze e d¡d¡dd„ ƒZe e d¡d kd!¡d"d#„ ƒZe e d¡d kd!¡d$d%„ ƒZe e d¡d kd!¡d&d'„ ƒZd(d)„ Z‡  ZS )*ÚSysconfigTestCasec                s   t t| ƒ ¡  d | _d S )N)Úsuperr   ÚsetUpÚmakefile)Úself)Ú	__class__© úb/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_sysconfig.pyr
      s    zSysconfigTestCase.setUpc                s0   | j d k	rt | j ¡ |  ¡  tt| ƒ ¡  d S )N)r   ÚosÚunlinkÚcleanup_testfnr	   r   ÚtearDown)r   )r   r   r   r      s    
zSysconfigTestCase.tearDownc             C   s2   t j t¡rt  t¡ nt j t¡r.t t¡ d S )N)r   ÚpathÚisfiler   ÚremoveÚisdirÚshutilÚrmtree)r   r   r   r   r      s    z SysconfigTestCase.cleanup_testfnc             C   s    t  ¡ }|  tj |¡|¡ d S )N)r   Úget_config_h_filenameÚ
assertTruer   r   r   )r   Úconfig_hr   r   r   Útest_get_config_h_filename   s    z,SysconfigTestCase.test_get_config_h_filenamec             C   s   |   t ¡ tjtd¡ d S )N)Úprefix)ÚassertNotEqualr   Zget_python_libr   )r   r   r   r   Útest_get_python_lib#   s    
z%SysconfigTestCase.test_get_python_libc             C   s"   t  ¡ }|  |t¡ |  |¡ d S )N)r   Úget_config_varsÚassertIsInstanceÚdictr   )r   Zcvarsr   r   r   Útest_get_config_vars*   s    z&SysconfigTestCase.test_get_config_varsc             C   s”   t  d¡}|  tj |¡|¡ |  tj |¡|¡ t jrntj |dd¡}|  tj 	|¡|¡ |  t  
|¡¡ n"tjdkr|  tj t  ¡ ¡|¡ d S )NÚsrcdirZIncludezPython.hÚposix)r   Úget_config_varr   r   r   Úisabsr   Úpython_buildÚjoinÚexistsÚ_is_python_source_dirÚnameÚassertEqualÚdirnameÚget_makefile_filename)r   r%   ZPython_hr   r   r   Útest_srcdir/   s    

zSysconfigTestCase.test_srcdirc          	   C   sH   t  d¡}t ¡ }zt d¡ t  d¡}W d t |¡ X |  ||¡ d S )Nr%   z..)r   r'   r   ÚgetcwdÚchdirr.   )r   r%   ÚcwdZsrcdir2r   r   r   Útest_srcdir_independent_of_cwdA   s    

z0SysconfigTestCase.test_srcdir_independent_of_cwdÚunixz+not testing if default compiler is not unixc             C   sH   dt jd< dt jd< G dd„ dƒ}|ƒ }t |¡ |  |jd d¡ d S )	NZmy_arÚARz-arflagsÚARFLAGSc               @   s   e Zd ZdZdd„ ZdS )z;SysconfigTestCase.test_customize_compiler.<locals>.compilerr6   c             [   s
   || _ d S )N)Úexes)r   Úkwr   r   r   Úset_executablesW   s    zKSysconfigTestCase.test_customize_compiler.<locals>.compiler.set_executablesN)Ú__name__Ú
__module__Ú__qualname__Zcompiler_typer;   r   r   r   r   ÚcompilerT   s   r?   Zarchiverzmy_ar -arflags)r   Úenvironr   Úcustomize_compilerr.   r9   )r   r?   Úcompr   r   r   Útest_customize_compilerM   s    


z)SysconfigTestCase.test_customize_compilerc             C   sX   t | _t| jdƒ}z| d¡ | d¡ W d | ¡  X t | j¡}|  |dddœ¡ d S )NÚwz)CONFIG_ARGS=  '--arg1=optarg1' 'ENV=LIB'
zVAR=$OTHER
OTHER=fooz'--arg1=optarg1' 'ENV=LIB'Úfoo)ÚCONFIG_ARGSÚOTHER)r   r   ÚopenÚwriteÚcloser   Úparse_makefiler.   )r   ÚfdÚdr   r   r   Útest_parse_makefile_base^   s    

z*SysconfigTestCase.test_parse_makefile_basec             C   sX   t | _t| jdƒ}z| d¡ | d¡ W d | ¡  X t | j¡}|  |dddœ¡ d S )NrD   z,CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'
zVAR=$OTHER
OTHER=fooz'--arg1=optarg1' 'ENV=\$LIB'rE   )rF   rG   )r   r   rH   rI   rJ   r   rK   r.   )r   rL   rM   r   r   r   Ú"test_parse_makefile_literal_dollarj   s    

z4SysconfigTestCase.test_parse_makefile_literal_dollarc             C   s<   dd l }|  | d¡t  d¡¡ |  | d¡t  d¡¡ d S )Nr   ÚCFLAGSÚLDFLAGS)r   r.   r'   )r   Úglobal_sysconfigr   r   r   Útest_sysconfig_modulew   s
    z'SysconfigTestCase.test_sysconfig_moduleÚCUSTOMIZED_OSX_COMPILERzcompiler flags customizedc             C   sP   dd l }t  d¡r|  d¡ |  | d¡t  d¡¡ |  | d¡t  d¡¡ d S )Nr   rT   zcompiler flags customizedÚLDSHAREDÚCC)r   r'   ÚskipTestr.   )r   rR   r   r   r   Útest_sysconfig_compiler_vars~   s    

z.SysconfigTestCase.test_sysconfig_compiler_varsÚ
EXT_SUFFIXNz!EXT_SUFFIX required for this testc             C   s   |   ttjd¡ d S )NÚSO)ÚassertWarnsÚDeprecationWarningr   r'   )r   r   r   r   Útest_SO_deprecation—   s    z%SysconfigTestCase.test_SO_deprecationc          	   C   s4   t dtfƒ |  t d¡t d¡¡ W d Q R X d S )NÚ rZ   rY   )r   r\   r.   r   r'   )r   r   r   r   Útest_SO_value   s    zSysconfigTestCase.test_SO_valuec             C   s.   t  ¡ }|  |d ¡ |  |d |d ¡ d S )NrZ   rY   )r   r!   ÚassertIsNotNoner.   )r   Úvarsr   r   r   Útest_SO_in_vars¤   s    z!SysconfigTestCase.test_SO_in_varsc          	   C   sj   t tdƒ}| t d¡¡ W d Q R X tjttj	ƒtgtj
tjdd}| ¡ \}}|  d|jd| ¡ d S )NrD   aB                  from distutils.core import Distribution
                config = Distribution().get_command_obj('config')
                # try_compile may pass or it may fail if no compiler
                # is found but it should not raise an exception.
                rc = config.try_compile('int x;')
                T)ÚstdoutÚstderrÚuniversal_newlinesr   zSubprocess failed: )rH   r   Ú
writelinesÚtextwrapÚdedentÚ
subprocessÚPopenÚstrÚsysÚ
executableÚPIPEÚSTDOUTÚcommunicater.   Ú
returncode)r   ÚfÚpZoutsZerrsr   r   r   Ú.test_customize_compiler_before_get_config_vars«   s    z@SysconfigTestCase.test_customize_compiler_before_get_config_vars)r<   r=   r>   r
   r   r   r   r    r$   r1   r5   ÚunittestÚ
skipUnlessr   rC   rN   rO   rS   ÚskipIfr   r'   rX   r]   r_   rb   rt   Ú__classcell__r   r   )r   r   r      s,   r   c              C   s   t  ¡ } |  t  t¡¡ | S )N)ru   Ú	TestSuiteÚaddTestÚ	makeSuiter   )Úsuiter   r   r   Ú
test_suite¿   s    r}   Ú__main__)Ú__doc__r   r   ri   rl   rg   ru   Ú	distutilsr   Zdistutils.ccompilerr   Údistutils.testsr   Ztest.supportr   r   r   ZEnvironGuardÚTestCaser   r}   r<   r   r   r   r   Ú<module>   s    2