
    e;)                         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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 ddlmZ ddlmZ  G d	 d
ej        ej                  Zedk    r ej                     dS dS )zTests for distutils.sysconfig.    N)	sysconfig)get_default_compiler)support)	swap_itemrequires_subprocessis_wasi)TESTFN)check_warningsc                       e Zd Z fdZ fdZd Z ej        ed          d             Z	d Z
d Z ej        ed          d             Zd	 Zd
 Z ej         e            dk    d          d             Zd Zd Zd Z ej         ej        d          d          d             Z e            d             Z xZS )SysconfigTestCasec                 d    t          t          |                                            d | _        d S N)superr   setUpmakefileself	__class__s    0  /home/conda/feedstock_root/build_artifacts/python-split_1708115622739/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/distutils/tests/test_sysconfig.pyr   zSysconfigTestCase.setUp   s+    &&,,...    c                     | j         t          j        | j                    |                                  t	          t
          |                                            d S r   )r   osunlinkcleanup_testfnr   r   tearDownr   s    r   r   zSysconfigTestCase.tearDown   sR    =$Idm$$$&&//11111r   c                    t           j                            t                    rt          j        t                     d S t           j                            t                    rt          j        t                     d S d S r   )r   pathisfiler	   removeisdirshutilrmtreer   s    r   r   z SysconfigTestCase.cleanup_testfn   sd    7>>&!! 	"IfW]]6"" 	"M&!!!!!	" 	"r   z,Incompatible with WASI mapdir and OOT buildsc                     t          j                    }|                     t          j                            |          |           d S r   )r   get_config_h_filename
assertTruer   r   r   )r   config_hs     r   test_get_config_h_filenamez,SysconfigTestCase.test_get_config_h_filename#   s8    244x00(;;;;;r   c                     |                      t          j                    t          j        t                               d S )N)prefix)assertNotEqualr   get_python_libr	   r#   s    r   test_get_python_libz%SysconfigTestCase.test_get_python_lib(   sG     	I466%4FCCC	E 	E 	E 	E 	Er   c                     t          j                    }|                     |t                     |                     |           d S r   )r   get_config_varsassertIsInstancedictr&   )r   cvarss     r   test_get_config_varsz&SysconfigTestCase.test_get_config_vars/   s>    )++eT***r   c                    t          j        d          }|                     t          j                            |          |           |                     t          j                            |          |           t           j        rt          j                            |dd          }|                     t          j        	                    |          |           t          j                            |dd          }|                     t          j        	                    |          |           t          j                            |d          }|                     t          j        	                    |          |           d S t          j
        dk    rF|                     t          j                            t          j                              |           d S d S )NsrcdirIncludezPython.hPCz
pyconfig.hzpyconfig.h.inposix)r   get_config_varr&   r   r   isabsr    python_buildjoinexistsnameassertEqualdirnameget_makefile_filename)r   r5   Python_h
pyconfig_hpyconfig_h_ins        r   test_srcdirzSysconfigTestCase.test_srcdir4   sh    )(33f--v666f--v666! 	 w||FIzBBHOOBGNN844h???fdLAAJOOBGNN:66
CCCGLLAAMOOBGNN=99=IIIIIW	 ? A ABB      r   c                 .   t          j        d          }t          j                    }	 t          j        d           t          j        d          }t          j        |           n# t          j        |           w xY w|                     ||           d S )Nr5   z..)r   r9   r   getcwdchdirr?   )r   r5   cwdsrcdir2s       r   test_srcdir_independent_of_cwdz0SysconfigTestCase.test_srcdir_independent_of_cwdK   s~     )(33ikk	HTNNN.x88GHSMMMMBHSMMMM)))))s   (A& &A<c           
      Z    G d d          }ddddddd	d
dd	} |            }t          j                    5 }|                                D ]3\  }}|                    t	          t
          j        ||                     4t          j        |           d d d            n# 1 swxY w Y   |S )Nc                       e Zd ZdZd ZdS )6SysconfigTestCase.customize_compiler.<locals>.compilerunixc                     || _         d S r   )exes)r   kws     r   set_executableszFSysconfigTestCase.customize_compiler.<locals>.compiler.set_executables\   s    			r   N)__name__
__module____qualname__compiler_typerS    r   r   compilerrN   Y   s(        "M    r   rY   sc_arsc_ccsc_cxxz--sc-arflagsz--sc-cflagsz--sc-ccsharedsc_ldsharedsc_shutil_suffixTrue)	ARCCCXXARFLAGSCFLAGSCCSHAREDLDSHAREDSHLIB_SUFFIXCUSTOMIZED_OSX_COMPILER)
contextlib	ExitStackitemsenter_contextr   r   _config_varscustomize_compiler)r   rY   sysconfig_varscompcmkeyvalues          r   rn   z$SysconfigTestCase.customize_compilerW   s"   	 	 	 	 	 	 	 	 %#'%. (.
 
 xzz!## 	/r,2244 P P
U  9+A3!N!NOOOO(...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
 s   AB  B$'B$rO   z+not testing if default compiler is not unixc                 |   t          j                     dt          j        d<   dt          j        d<   dt          j        d<   dt          j        d<   d	t          j        d
<   dt          j        d<   dt          j        d<   dt          j        d<   dt          j        d<   |                                 }|                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d           t          j        d= t          j        d= t          j        d= t          j        d= t          j        d
= t          j        d= t          j        d= t          j        d= t          j        d= |                                 }|                     |j        d         d            |                     |j        d         d!           |                     |j        d         d"           |                     |j        d         d#           |                     |j        d         d$           |                     |j        d         d%           |                     |j        d         d&           |                     |j        d           d S )'Nenv_arr`   env_ccra   env_cppCPPzenv_cxx --env-cxx-flagsrb   env_ldsharedrf   z--env-ldflagsLDFLAGSz--env-arflagsrc   z--env-cflagsrd   z--env-cppflagsCPPFLAGSarchiverzenv_ar --env-arflagspreprocessorzenv_cpp --env-cppflagsrY   z.env_cc --sc-cflags --env-cflags --env-cppflagscompiler_soz<env_cc --sc-cflags --env-cflags --env-cppflags --sc-ccsharedcompiler_cxx
linker_exe	linker_soz6env_ldshared --env-ldflags --env-cflags --env-cppflagsr^   zsc_ar --sc-arflagszsc_cc -Ezsc_cc --sc-cflagszsc_cc --sc-cflags --sc-ccsharedr\   r[   r]   )r   r/   r   environrn   r?   rQ   shared_lib_extension)r   rp   s     r   test_customize_compilerz)SysconfigTestCase.test_customize_compileru   s<    	!####
4#
4%
55
5!/
: /
9 /
9-
8!1
:&&((:./	1 	1 	1>21	3 	3 	3:.I	K 	K 	K=1H	J 	J 	J 	>22	4 	4 	4<0!	# 	# 	#;/,	. 	. 	. 	24FGGGJtJtJuJuJz"Jy!Jy!Jx Jz"&&((:.-	/ 	/ 	/>2#	% 	% 	%:.,	. 	. 	.=1:	< 	< 	<>2!	# 	# 	#<0 	" 	" 	";/&	( 	( 	(24FGGGGGr   c                 ^   t           | _        t          | j        d          }	 |                    d           |                    d           |                                 n# |                                 w xY wt          j        | j                  }|                     |ddd           d S )Nwz)CONFIG_ARGS=  '--arg1=optarg1' 'ENV=LIB'
VAR=$OTHER
OTHER=fooz'--arg1=optarg1' 'ENV=LIB'fooCONFIG_ARGSOTHERr	   r   openwritecloser   parse_makefiler?   r   fdds      r   test_parse_makefile_basez*SysconfigTestCase.test_parse_makefile_base   s    $-%%	HHEFFFHH,---HHJJJJBHHJJJJ$T]33,H&+- - 	. 	. 	. 	. 	.   *A" "A8c                 ^   t           | _        t          | j        d          }	 |                    d           |                    d           |                                 n# |                                 w xY wt          j        | j                  }|                     |ddd           d S )Nr   z,CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'
r   z'--arg1=optarg1' 'ENV=\$LIB'r   r   r   r   s      r   "test_parse_makefile_literal_dollarz4SysconfigTestCase.test_parse_makefile_literal_dollar   s    $-%%	HHHIIIHH,---HHJJJJBHHJJJJ$T]33,K&+- - 	. 	. 	. 	. 	.r   c                     dd l }|                     |                    d          t          j        d                     |                     |                    d          t          j        d                     d S )Nr   rd   rz   )r   r?   r9   r   global_sysconfigs     r   test_sysconfig_modulez'SysconfigTestCase.test_sysconfig_module   s    ,,,,)88BB"1(;;	= 	= 	=)88CC"1)<<	> 	> 	> 	> 	>r   rh   compiler flags customizedc                 L   dd l }t          j        d          r|                     d           |                     |                    d          t          j        d                     |                     |                    d          t          j        d                     d S )Nr   rh   r   rf   ra   )r   r9   skipTestr?   r   s     r   test_sysconfig_compiler_varsz.SysconfigTestCase.test_sysconfig_compiler_vars   s    " 	-,,,#$=>> 	7MM5666)88DD"1*==	? 	? 	?)88>>"1$77	9 	9 	9 	9 	9r   c                    t          t          d          5 }|                    t          j        d                     d d d            n# 1 swxY w Y   t          j        t          t          j	                  t          gt
          j
        t
          j        d          }|                                \  }}|                     d|j        d|z              d S )Nr   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: )r   r	   
writelinestextwrapdedent
subprocessPopenstrsys
executablePIPESTDOUTcommunicater?   
returncode)r   fpoutserrss        r   .test_customize_compiler_before_get_config_varsz@SysconfigTestCase.test_customize_compiler_before_get_config_vars   s    
 &# 	!LL *     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 c#.116:!!(#') ) ) ]]__
dAL*?$*FGGGGGs   (A

AA)rT   rU   rV   r   r   r   unittestskipIfr   r(   r-   r3   rE   rK   rn   
skipUnlessr   r   r   r   r   r   r9   r   r   r   __classcell__)r   s   @r   r   r      s           2 2 2 2 2" " " X_WLMM< < NM<E E E  
 X_WLMM  NM,
* 
* 
*  < X--//69FH H:H :HH H:Hx
. 
. 
.
. 
. 
.> > > X_-Y-.GHH02 29 92 29. H H H H H H Hr   r   __main__)__doc__ri   r   r!   r   r   r   r   	distutilsr   distutils.ccompilerr   distutils.testsr   test.supportr   r   r   test.support.os_helperr	   test.support.warnings_helperr
   EnvironGuardTestCaser   rT   mainrX   r   r   <module>r      s1   $ $     				      



         4 4 4 4 4 4 # # # # # # @ @ @ @ @ @ @ @ @ @ ) ) ) ) ) ) 7 7 7 7 7 7lH lH lH lH lH,h.? lH lH lH^ zHMOOOOO r   