o
    JAfÝ  ã                   @   sx   d 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
 G dd„ dejƒZd	d
„ Zedkr:eeƒ ƒ dS dS )z"Tests for distutils.unixccompiler.é    N)Úrun_unittest)ÚEnvironmentVarGuard)Ú	sysconfig)ÚUnixCCompilerc                   @   sj   e Zd Zdd„ Zdd„ Ze ejdkd¡dd„ ƒZ	e 
ejd	kd
¡dd„ ƒZe 
ejd	kd
¡dd„ ƒZdS )ÚUnixCCompilerTestCasec                 C   s8   t j| _tj| _ttjƒ| _G dd„ dt	ƒ}|ƒ | _
d S )Nc                   @   s   e Zd Zdd„ ZdS )z4UnixCCompilerTestCase.setUp.<locals>.CompilerWrapperc                 S   s
   |   d¡S )Nz/foo)Zruntime_library_dir_option©Úself© r	   ú9/usr/lib/python3.10/distutils/tests/test_unixccompiler.pyÚ	rpath_foo   ó   
z>UnixCCompilerTestCase.setUp.<locals>.CompilerWrapper.rpath_fooN)Ú__name__Ú
__module__Ú__qualname__r   r	   r	   r	   r
   ÚCompilerWrapper   s    r   )ÚsysÚplatformÚ_backup_platformr   Úget_config_varÚ_backup_get_config_varÚdictÚ_config_varsÚ_backup_config_varsr   Úcc)r   r   r	   r	   r
   ÚsetUp   s
   zUnixCCompilerTestCase.setUpc                 C   s,   | j t_| jt_tj ¡  tj | j	¡ d S ©N)
r   r   r   r   r   r   r   ÚclearÚupdater   r   r	   r	   r
   ÚtearDown   s   
zUnixCCompilerTestCase.tearDownÚwin32zcan't test on Windowsc                 C   sX  dt _|  | j ¡ d¡ dt _tj}dd„ }|t_|  | j ¡ ddg¡ dd„ }|t_|  | j ¡ ddg¡ d	d„ }|t_|  | j ¡ ddg¡ |t_d
t _dd„ }|t_|  | j ¡ d¡ d
t _dd„ }|t_|  | j ¡ d¡ d
t _dd„ }|t_|  | j ¡ d¡ d
t _dd„ }|t_|  | j ¡ d¡ d
t _dd„ }|t_|  | j ¡ d¡ d S )NÚdarwinz-L/foozhp-uxc                 S   ó   dS )NZxxxr	   ©Úvr	   r	   r
   Úgcv)   ó   z=UnixCCompilerTestCase.test_runtime_libdir_option.<locals>.gcvz+sc                 S   r!   )NÚgccr	   r"   r	   r	   r
   r$   .   r%   z-Wl,+sc                 S   r!   )Nzg++r	   r"   r	   r	   r
   r$   3   r%   Zbarc                 S   ó   | dkrdS | dkrdS d S )NÚCCr&   ÚGNULDÚyesr	   r"   r	   r	   r
   r$   <   ó
   ÿz-Wl,--enable-new-dtags,-R/fooc                 S   r'   )Nr(   r&   r)   Únor	   r"   r	   r	   r
   r$   F   r+   z
-Wl,-R/fooc                 S   r'   )Nr(   zx86_64-pc-linux-gnu-gcc-4.4.2r)   r*   r	   r"   r	   r	   r
   r$   Q   r+   c                 S   r'   )Nr(   r   r)   r*   r	   r"   r	   r	   r
   r$   [   r+   z-R/fooc                 S   r'   )Nr(   r   r)   r,   r	   r"   r	   r	   r
   r$   e   r+   )r   r   ÚassertEqualr   r   r   r   )r   Zold_gcvr$   r	   r	   r
   Útest_runtime_libdir_option   sD   z0UnixCCompilerTestCase.test_runtime_libdir_optionr    ztest only relevant for OS Xc                 C   sf   dd„ }|t _tƒ }d|d< |d= t  | j¡ W d   ƒ n1 s"w   Y  |  | jjd d¡ d S )Nc                 S   ó   | dkrdS dS ©NÚLDSHAREDz*gcc-4.2 -bundle -undefined dynamic_lookup zgcc-4.2r	   r"   r	   r	   r
   r$   q   ó   zAUnixCCompilerTestCase.test_osx_cc_overrides_ldshared.<locals>.gcvÚmy_ccr(   r1   r   ©r   r   r   Zcustomize_compilerr   r-   Z	linker_so©r   r$   Úenvr	   r	   r
   Útest_osx_cc_overrides_ldsharedm   s   ýz4UnixCCompilerTestCase.test_osx_cc_overrides_ldsharedc                 C   sh   dd„ }|t _tƒ }d|d< d|d< t  | j¡ W d   ƒ n1 s#w   Y  |  | jjd d¡ d S )	Nc                 S   r/   r0   r	   r"   r	   r	   r
   r$      r2   z=UnixCCompilerTestCase.test_osx_explicit_ldshared.<locals>.gcvr3   r(   zmy_ld -bundle -dynamicr1   r   Zmy_ldr4   r5   r	   r	   r
   Útest_osx_explicit_ldshared|   s   ýz0UnixCCompilerTestCase.test_osx_explicit_ldsharedN)r   r   r   r   r   ÚunittestZskipIfr   r   r.   Z
skipUnlessr7   r8   r	   r	   r	   r
   r   
   s    	
Q
r   c                   C   s
   t  t¡S r   )r9   Z	makeSuiter   r	   r	   r	   r
   Ú
test_suite   r   r:   Ú__main__)Ú__doc__r   r9   Ztest.supportr   Ztest.support.os_helperr   Z	distutilsr   Zdistutils.unixccompilerr   ZTestCaser   r:   r   r	   r	   r	   r
   Ú<module>   s     ÿ