o
    HXîh©K  ã                   @   sþ   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mZ d dl	m
Z
 d dlmZmZmZmZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlZej Z!G dd	„ d	e j"ƒZ#G d
d„ de j"ƒZ$e%dkr}e  &¡  dS dS )é    N)Úcopy)Úcaptured_stdoutÚPythonSymlink)Úimport_module)ÚTESTFNÚunlinkÚskip_unless_symlinkÚ
change_cwd)Úcheck_warnings)Ú	get_pathsÚget_platformÚget_config_varsÚget_pathÚget_path_namesÚ_INSTALL_SCHEMESÚget_default_schemeÚget_scheme_namesÚget_config_varÚ_expand_varsÚ_get_preferred_schemesÚ_mainc                       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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zed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d+d,„ Zd-d.„ Ze e d/¡d0u d1¡d2d3„ ƒZ e e d/¡d0u d1¡d4d5„ ƒZ!e e d/¡d0u d1¡d6d7„ ƒZ"e ejd8ko©e#ej$d9ƒd:¡d;d<„ ƒZ%e ejd'kd=¡d>d?„ ƒZ&‡  Z'S )@ÚTestSysConfigc                    sì   t t| ƒ ¡  tjd d … | _ttdƒrtj| _t ¡ | _	nd | _|  
d¡ | jt_tj| _tj| _tj| _tj| _tjj| _tjj| _tjj| _tjttjƒf| _g | _g | _dD ]}|tjv rm| j |tj| f¡ qZ| j |¡ qZd S )NÚuname)Ú r   r   r   r   )ÚMACOSX_DEPLOYMENT_TARGETÚPATH)Úsuperr   ÚsetUpÚsysÚpathÚsys_pathÚhasattrÚosr   Ú_unameÚ
_set_unameÚ
_get_unameÚnameÚplatformÚversionÚsepÚjoinÚisabsÚ
splitdriveÚ	sysconfigÚ_CONFIG_VARSr   Ú_config_varsÚ_added_envvarsÚ_changed_envvarsÚenvironÚappend)ÚselfÚvar©Ú	__class__© ú=/opt/python-3.10.19/usr/lib/python3.10/test/test_sysconfig.pyr      s.   





üzTestSysConfig.setUpc                    sÜ   | j tjd d …< |  ¡  | jd ur| jt_nt`| jt_| jt_| jt_| j	t_	| j
tj_
| jtj_| jtj_| jd t_tj ¡  tj | jd ¡ | jD ]	\}}|tj|< qN| jD ]	}tj |d ¡ q[tt| ƒ ¡  d S )Nr   é   )r    r   r   Ú_cleanup_testfnr   r"   r&   r'   r(   r)   r*   r+   r,   r/   r-   r.   ÚclearÚupdater1   r2   r0   Úpopr   r   ÚtearDown)r4   r5   Úvaluer6   r8   r9   r?   7   s(   






zTestSysConfig.tearDownc                 C   s   t  |¡| _d S ©N)r"   Úuname_resultr#   )r4   r   r8   r8   r9   r$   O   s   zTestSysConfig._set_unamec                 C   s   | j S rA   )r#   ©r4   r8   r8   r9   r%   R   s   zTestSysConfig._get_unamec                 C   s<   t }tj |¡rt |¡ d S tj |¡rt |¡ d S d S rA   )r   r"   r   ÚisfileÚremoveÚisdirÚshutilÚrmtree)r4   r   r8   r8   r9   r;   U   s   ÿzTestSysConfig._cleanup_testfnc                 C   s   |   tƒ tj¡ d S rA   )ÚassertEqualr   r-   Z_SCHEME_KEYSrC   r8   r8   r9   Útest_get_path_names\   s   z!TestSysConfig.test_get_path_namesc                 C   s>   t ƒ }tƒ }t|d ƒ}t| ¡ ƒ}t| ¡ ƒ}|  ||¡ d S rA   )r   r   r   ÚsortedÚitemsrI   )r4   ÚschemeZdefault_schemeÚwantedr8   r8   r9   Útest_get_paths_   s   
zTestSysConfig.test_get_pathsc              	   C   s\   t ƒ }tD ]&}t| D ]}t| | jdi |¤Ž}|  tj t||ƒ¡tj |¡¡ qqd S )Nr8   )r   r   ÚformatrI   r"   r   Únormpathr   )r4   Zconfig_varsrM   r&   Úexpectedr8   r8   r9   Útest_get_pathg   s   
þþÿzTestSysConfig.test_get_pathc                 C   s   |   tƒ t¡ d S rA   )ÚassertInr   r   rC   r8   r8   r9   Útest_get_default_schemeq   s   z%TestSysConfig.test_get_default_schemec                 C   sŠ   h d£}dt _tƒ }|  |t¡ |  t|ƒ|¡ dt _tƒ }|  |t¡ |  t|ƒ|¡ dt _dt_dt_	|  |t¡ |  t|ƒ|¡ d S )N>   ÚuserÚhomeÚprefixÚntÚposixÚdarwinT)
r"   r&   r   ÚassertIsInstanceÚdictrI   Úsetr   r'   Ú
_framework)r4   Zexpected_schemesZschemesr8   r8   r9   Útest_get_preferred_schemest   s   z(TestSysConfig.test_get_preferred_schemesc                 C   s    t ƒ }|  |t¡ |  |¡ d S rA   )r   r\   r]   Ú
assertTrue)r4   Zcvarsr8   r8   r9   Útest_get_config_varsŠ   s   z"TestSysConfig.test_get_config_varsc                 C   sL  dt _dt_dt_|  tƒ d¡ dt _dt_dt_|  tƒ d¡ dt _dt_dt_|  d	¡ t 	t
ƒ ¡ d
t
ƒ d< dt
ƒ d< tj}zdt_|  tƒ d¡ dt_|  tƒ d¡ W |t_n|t_w |  d¡ t 	t
ƒ ¡ d
t
ƒ d< dt
ƒ d< tj}zdt_|  tƒ d¡ dt_|  tƒ d¡ W |t_n|t_w t 	t
ƒ ¡ dt
ƒ d< dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ d D ]}t 	t
ƒ ¡ d!| t
ƒ d< |  tƒ d"| ¡ qödt _d#t_d$t_|  d%¡ |  tƒ d&¡ d S )'NrY   z>2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)]Úwin32z>2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Amd64)]z	win-amd64rZ   zU2.5 (r25:51918, Sep 19 2006, 08:49:13) 
[GCC 4.0.1 (Apple Computer, Inc. build 5341)]r[   )ÚDarwinÚmacziadeú8.11.1ú]Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386ZPowerPCz10.3r   zF-fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypesZCFLAGSiÿÿÿzmacosx-10.3-ppcl   ÿÿÿÿ zmacosx-10.3-ppc64)rd   re   rf   rg   Úi386zmacosx-10.3-i386zmacosx-10.3-x86_64z10.4zy-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fatz|-arch x86_64 -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-intelz†-arch x86_64 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fat3z’-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-universalz}-arch x86_64 -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fat64)Zppcrh   Zx86_64Zppc64zm-arch %s -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-%szV2.3.5 (#1, Jul  4 2007, 17:28:59) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]Zlinux2)ZLinuxZaglaez2.6.21.1dedibox-r7z #1 Mon Apr 30 17:25:38 CEST 2007Zi686z
linux-i686)r"   r&   r   r(   r'   rI   r   r$   Ú_osx_supportZ_remove_original_valuesr   Úmaxsize)r4   ZmaxintZarchr8   r8   r9   Útest_get_platform   sx   












ý
zTestSysConfig.test_get_platformc                 C   ó    t  ¡ }|  tj |¡|¡ d S rA   )r-   Zget_config_h_filenamera   r"   r   rD   )r4   Zconfig_hr8   r8   r9   Útest_get_config_h_filename  s   z(TestSysConfig.test_get_config_h_filenamec                 C   s4   g d¢}t r| g d¢¡ |  tƒ tt|ƒƒ¡ d S )N)rY   Z
posix_homeÚposix_prefix)Znt_userZosx_framework_userÚ
posix_user)ÚHAS_USER_BASEÚextendrI   r   ÚtuplerK   )r4   rN   r8   r8   r9   Útest_get_scheme_names	  s   z#TestSysConfig.test_get_scheme_namesc                 C   sH   t ƒ }d}|  |j|Ž |j|Ž ¡ W d   ƒ d S 1 sw   Y  d S )N)ú-cú1import sysconfig; print(sysconfig.get_platform()))r   rI   Z	call_realZ	call_link)r4   ÚpyÚcmdr8   r8   r9   Útest_symlink  s   "þzTestSysConfig.test_symlinkc           
      C   sö   t dƒ}tr
t dƒ}tjtjk}dD ]f}t|dƒ}|r,| tjtj¡}| tjtj¡}ntjtjkrB| tjtj¡}| tjtj¡}trxt|dƒ}t	j
 | ||d¡¡}|dkrrt ¡ }d|› d	}	| d
tj› d
|	› d|	› ¡}|  ||¡ qd S )NÚbaseÚuserbase)ZstdlibZ
platstdlibZpurelibÚplatlibrn   ro   r:   r{   Zpythonz/site-packagesú/z/lib/)r   rp   r   Úbase_prefixÚbase_exec_prefixr   ÚreplaceÚexec_prefixrX   r"   r   rQ   r-   Zget_python_versionÚ
platlibdirrI   )
r4   ry   rV   Zadaptr&   Zglobal_pathZ	user_pathrR   Zpy_version_shortÚsuffixr8   r8   r9   Útest_user_similar  s0   

ÿ€êzTestSysConfig.test_user_similarc                 C   sL   t ƒ }tƒ  W d   ƒ n1 sw   Y  |  t| ¡  d¡ƒdk¡ d S )NÚ
r   )r   r   ra   ÚlenÚgetvalueÚsplit)r4   Úoutputr8   r8   r9   Ú	test_main7  s   ÿ zTestSysConfig.test_mainrc   zDoes not apply to Windowsc                 C   s$   t  d¡}t  d¡}|  ||¡ d S )NZLDFLAGSZLDSHARED)r-   r   rT   )r4   ZldflagsZldsharedr8   r8   r9   Útest_ldshared_value=  s   

z!TestSysConfig.test_ldshared_valuer[   ztest only relevant on MacOSXc                 C   sæ   t  ¡ }tj ¡ }d|v r|d= tjtjddgtj	tj
|d}| ¡ d  ¡ }| d¡}| ¡ }|  |d¡ |  ||¡ tj ¡ }d|d< tjtjddgtj	tj
|d}| ¡ d  ¡ }| d¡}| ¡ }|  |d¡ |  ||¡ d S )Nr   rt   ru   )ÚstdoutÚstderrÚenvr   zutf-8z10.1)r-   r   r"   r2   r   Ú
subprocessÚPopenr   Ú
executableÚPIPEÚDEVNULLÚcommunicateÚstripÚdecodeÚwaitrI   )r4   Zmy_platformr   ÚpZtest_platformÚstatusr8   r8   r9   Útest_platform_in_subprocessD  s@   
þú

þú
z)TestSysConfig.test_platform_in_subprocessc                 C   sª   t  d¡}|  tj |¡|¡ |  tj |¡|¡ t jr8tj |dd¡}|  tj 	|¡|¡ |  t  
|¡¡ d S tjdkrStj t  ¡ ¡}tj |¡}|  ||¡ d S d S )NÚsrcdirZIncludezPython.hrZ   )r-   r   ra   r"   r   r+   rF   Z_PYTHON_BUILDr*   ÚexistsZ_is_python_source_dirr&   ÚdirnameÚget_makefile_filenameÚrealpathrI   )r4   rš   ZPython_hZmakefile_dirr8   r8   r9   Útest_srcdiro  s   

üzTestSysConfig.test_srcdirc                 C   sN   t  d¡}ttjƒ t  d¡}W d   ƒ n1 sw   Y  |  ||¡ d S )Nrš   )r-   r   r	   r"   ÚpardirrI   )r4   rš   Zsrcdir2r8   r8   r9   Útest_srcdir_independent_of_cwd‚  s
   
ÿz,TestSysConfig.test_srcdir_independent_of_cwdÚ
EXT_SUFFIXNz!EXT_SUFFIX required for this testc                 C   s   |   ttjd¡ d S )NÚSO)ZassertWarnsÚDeprecationWarningr-   r   rC   r8   r8   r9   Útest_SO_deprecationŠ  s   ÿz!TestSysConfig.test_SO_deprecationc                 C   sJ   t dtfƒ |  t d¡t d¡¡ W d   ƒ d S 1 sw   Y  d S )Nr   r£   r¢   )r
   r¤   rI   r-   r   rC   r8   r8   r9   Útest_SO_value  s
   ÿ"ÿzTestSysConfig.test_SO_valuec                 C   sN   dd l }t ¡ }|  |d ¡ |  |d |d ¡ |  |d | ¡ d ¡ d S )Nr   r£   r¢   )Ú_impr-   r   ZassertIsNotNonerI   Úextension_suffixes)r4   r§   Úvarsr8   r8   r9   Útest_EXT_SUFFIX_in_vars—  s
   z%TestSysConfig.test_EXT_SUFFIX_in_varsÚlinuxÚ
_multiarchzmultiarch-specific testc                 C   sž   t dƒ}dd l}dd l}| ¡ }t d¡}| d|¡r#|  d|v |¡ | d|¡rM| | 	¡ ¡dkrB|  | 
d¡p=| 
d	¡|¡ d S |  | 
d
¡|¡ d S d S )NÚctypesr   r¢   z)(aarch64|arm|mips|ppc|powerpc|s390|sparc)r«   z(i[3-6]86|x86_64)$é   zi386-linux-gnu.sozx86_64-linux-gnux32.sozx86_64-linux-gnu.so)r   r'   ÚreÚmachiner-   r   Úmatchra   ZsizeofZc_char_pÚendswith)r4   r­   r'   r¯   r°   r‚   r8   r8   r9   Útest_triplet_in_ext_suffix   s   
þúz(TestSysConfig.test_triplet_in_ext_suffixzOS X-specific testc                 C   s    t  d¡}|  | d¡|¡ d S )Nr¢   z
-darwin.so)r-   r   ra   r²   )r4   r‚   r8   r8   r9   Útest_osx_ext_suffix²  s   
z!TestSysConfig.test_osx_ext_suffix)(Ú__name__Ú
__module__Ú__qualname__r   r?   r$   r%   r;   rJ   rO   rS   rU   r`   rb   rk   rm   rs   r   rx   rƒ   r‰   ÚunittestÚskipIfr   r'   rŠ   Z
skipUnlessr™   rŸ   r¡   r-   r   r¥   r¦   rª   r!   Úimplementationr³   r´   Ú__classcell__r8   r8   r6   r9   r      sX    
v
"

*ÿ
ÿ
ÿ

þ
r   c                   @   s0   e Zd Ze ej d¡d¡dd„ ƒZdd„ Z	dS )ÚMakefileTestsÚwinzTest is not Windows compatiblec                 C   rl   rA   )r-   r   ra   r"   r   rD   )r4   Úmakefiler8   r8   r9   Útest_get_makefile_filename¹  s   z(MakefileTests.test_get_makefile_filenamec              
   C   s¦   |   tt¡ ttdƒ,}td|d td|d td|d td|d td|d td|d W d   ƒ n1 s:w   Y  t t¡}|  |d	d
dddddœ¡ d S )NÚwzvar1=a$(VAR2))ÚfilezVAR2=b$(var3)zvar3=42zvar4=$/invalidzvar5=dollar$$5zAvar6=${var3}/lib/python3.5/config-$(VAR2)$(var5)-x86_64-linux-gnuZab42Zb42é*   z	$/invalidzdollar$5z442/lib/python3.5/config-b42dollar$5-x86_64-linux-gnu)Zvar1ZVAR2Zvar3Zvar4Zvar5Zvar6)Z
addCleanupr   r   ÚopenÚprintr-   Z_parse_makefilerI   )r4   r¾   r©   r8   r8   r9   Útest_parse_makefile¿  s(   ÿú
úz!MakefileTests.test_parse_makefileN)
rµ   r¶   r·   r¸   r¹   r   r'   Ú
startswithr¿   rÅ   r8   r8   r8   r9   r¼   ·  s    ÿ
r¼   Ú__main__)'r¸   r   r"   rŽ   rG   r   Ztest.supportr   r   Ztest.support.import_helperr   Ztest.support.os_helperr   r   r   r	   Ztest.support.warnings_helperr
   r-   r   r   r   r   r   r   r   r   r   r   r   r   ri   Z_HAS_USER_BASErp   ZTestCaser   r¼   rµ   Úmainr8   r8   r8   r9   Ú<module>   s,    8   !ÿ