a zeD@sddlZddlZddlZddlZddlZddlmZddlmZmZm Z m Z m Z m Z m Z mZddlZddlmZmZmZmZmZmZmZmZmZmZmZddlZGdddejZGdddejZed kre dS) N)copy) import_moduleTESTFNunlinkcheck_warningscaptured_stdoutskip_unless_symlink change_cwd PythonSymlink) get_paths get_platformget_config_varsget_pathget_path_names_INSTALL_SCHEMES_get_default_scheme _expand_varsget_scheme_namesget_config_var_maincsteZdZfddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZeddZddZddZeejdkd d!d"Zeejd#kd$d%d&Zd'd(Zd)d*Zeed+d,ud-d.d/Zeed+d,ud-d0d1Zeed+d,ud-d2d3Z eejd4koDe!ej"d5d6d7d8Z#eejd#kd9d:d;Z$Z%S)< TestSysConfigcstt|tjdd|_ttdr1s(         zTestSysConfig.tearDowncCst||_dSN)r! uname_resultr")r3rr7r7r8r#IszTestSysConfig._set_unamecCs|jSr@)r"r3r7r7r8r$LszTestSysConfig._get_unamecCs6t}tj|rt|ntj|r2t|dSr@)rr!risfileremoveisdirshutilrmtree)r3rr7r7r8r:Os    zTestSysConfig._cleanup_testfncCs|ttjdSr@) assertEqualrr,Z _SCHEME_KEYSrBr7r7r8test_get_path_namesVsz!TestSysConfig.test_get_path_namescCs>t}t}t|d}t|}t|}|||dSr@)r rrsorteditemsrH)r3schemeZdefault_schemewantedr7r7r8test_get_pathsYs    zTestSysConfig.test_get_pathscCs&tD]}t|D]}t||}qqdSr@)rr)r3rLr%resr7r7r8 test_get_pathas zTestSysConfig.test_get_pathcCs t}||t||dSr@)r ZassertIsInstancedict assertTrue)r3Zcvarsr7r7r8test_get_config_varsgs z"TestSysConfig.test_get_config_varscCsNdt_dt_dt_|tddt_dt_dt_|tddt_dt_dt_|d t t d t d <d t d <tj }z2dt_ |tddt_ |tdW|t_ n|t_ 0|dt t d t d <d t d <tj }z2dt_ |tddt_ |tdW|t_ n|t_ 0t t dt d <dt d <|tdt t dt d <|tdt t dt d <|tdt t dt d <|tdt t dt d <|tdd D]2}t t d!|t d <|td"|qdt_d#t_d$t_|d%|td&dS)'Nntz>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-amd64posixzU2.5 (r25:51918, Sep 19 2006, 08:49:13) [GCC 4.0.1 (Apple Computer, Inc. build 5341)]darwin)Darwinmacziade8.11.1]Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386ZPowerPCz10.3rzF-fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypesZCFLAGSizmacosx-10.3-ppclzmacosx-10.3-ppc64)rXrYrZr[i386zmacosx-10.3-i386zmacosx-10.3-x86_64z10.4zy-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fatz|-arch x86_64 -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-intelz-arch x86_64 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-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 -O3zmacosx-10.4-universalz}-arch x86_64 -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fat64)Zppcr\Zx86_64Zppc64zm-arch %s -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-%szV2.3.5 (#1, Jul 4 2007, 17:28:59) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]Zlinux2)ZLinuxZaglaez2.6.21.1dedibox-r7z #1 Mon Apr 30 17:25:38 CEST 2007Zi686z linux-i686) r!r%rr'r&rHr r# _osx_supportZ_remove_original_valuesr maxsize)r3ZmaxintZarchr7r7r8test_get_platformlsx                      zTestSysConfig.test_get_platformcCs t}|tj||dSr@)r,Zget_config_h_filenamerRr!rrC)r3Zconfig_hr7r7r8test_get_config_h_filenamesz(TestSysConfig.test_get_config_h_filenamecCsd}|t|dS)N)rTZnt_userZosx_framework_userZ posix_home posix_prefix posix_user)rHr)r3rMr7r7r8test_get_scheme_namessz#TestSysConfig.test_get_scheme_namescCsFt,}d}||j||j|Wdn1s80YdS)N)-c1import sysconfig; print(sysconfig.get_platform()))r rHZ call_realZ call_link)r3pycmdr7r7r8 test_symlinkszTestSysConfig.test_symlinkc Cstd}td}tjtjk}dD]}t|d}|rT|tjtj}|tjtj}n,tjtjkr|tjtj}|tjtj}t|d}|||||dq dS)Nbaseuserbase)ZstdlibZ platstdlibZpurelibZplatlibrarbr9) rr base_prefixbase_exec_prefixrreplace exec_prefixprefixrH)r3riuserZadaptr%Z global_pathZ user_pathr7r7r8test_user_similars    zTestSysConfig.test_user_similarcCsLt}tWdn1s"0Y|t|ddkdS)N r)rrrRlengetvaluesplit)r3outputr7r7r8 test_mains$zTestSysConfig.test_mainrUzDoes not apply to WindowscCs$td}td}|||dS)NZLDFLAGSZLDSHARED)r,rZassertIn)r3ZldflagsZldsharedr7r7r8test_ldshared_value s  z!TestSysConfig.test_ldshared_valuerWztest only relevant on MacOSXcCst}tj}d|vr |d=tjtjddgtj tj |d}| d }| d}|}||d|||tj}d|d<tjtjddgtj tj |d}| d }| d}|}||d|||dS)Nrrdre)stdoutstderrenvrzutf-8z10.1)r,r r!r1r subprocessPopenr executablePIPEDEVNULL communicatestripdecodewaitrH)r3Z my_platformr{pZ test_platformstatusr7r7r8test_platform_in_subprocesss@       z)TestSysConfig.test_platform_in_subprocesscCstd}|tj|||tj||tjrntj|dd}|tj |||t |n2tj dkrtj t }tj|}|||dS)NsrcdirZIncludezPython.hrV)r,rrRr!rr*rEZ _PYTHON_BUILDr)existsZ_is_python_source_dirr%dirnameget_makefile_filenamerealpathrH)r3rZPython_hZ makefile_dirr7r7r8 test_srcdir?s   zTestSysConfig.test_srcdircCsNtd}ttjtd}Wdn1s40Y|||dS)Nr)r,rr r!pardirrH)r3rZsrcdir2r7r7r8test_srcdir_independent_of_cwdRs  (z,TestSysConfig.test_srcdir_independent_of_cwd EXT_SUFFIXNz!EXT_SUFFIX required for this testcCs|ttjddS)NSO)Z assertWarnsDeprecationWarningr,rrBr7r7r8test_SO_deprecationZsz!TestSysConfig.test_SO_deprecationcCsHtdtf(|tdtdWdn1s:0YdS)Nrrr)rrrHr,rrBr7r7r8 test_SO_value`s zTestSysConfig.test_SO_valuecCsNddl}t}||d||d|d||d|ddS)Nrrr)_impr,r ZassertIsNotNonerHextension_suffixes)r3rvarsr7r7r8test_EXT_SUFFIX_in_varsgs z%TestSysConfig.test_EXT_SUFFIX_in_varslinux _multiarchzmultiarch-specific testcCstd}ddl}ddl}|}td}|d|rF|d|v||d|r|| dkr|| dpz| d |n|| d |dS) Nctypesrrz)(aarch64|arm|mips|ppc|powerpc|s390|sparc)rz(i[3-6]86|x86_64)$zi386-linux-gnu.sozx86_64-linux-gnux32.sozx86_64-linux-gnu.so) rr&remachiner,rmatchrRZsizeofZc_char_pendswith)r3rr&rrsuffixr7r7r8test_triplet_in_ext_suffixps   z(TestSysConfig.test_triplet_in_ext_suffixzOS X-specific testcCs td}||d|dS)Nrz -darwin.so)r,rrRr)r3rr7r7r8test_osx_ext_suffixs z!TestSysConfig.test_osx_ext_suffix)&__name__ __module__ __qualname__rr>r#r$r:rIrNrPrSr_r`rcrrhrqrwunittestskipIfrr&rxZ skipUnlessrrrr,rrrrr implementationrr __classcell__r7r7r5r8rsR  v   *     rc@s0eZdZeejddddZddZ dS) MakefileTestswinzTest is not Windows compatiblecCs t}|tj||dSr@)r,rrRr!rrC)r3makefiler7r7r8test_get_makefile_filenamesz(MakefileTests.test_get_makefile_filenamec Cs|ttttdX}td|dtd|dtd|dtd|dtd|dtd|dWdn1st0Ytt}||d d d d d dddS)Nwz var1=a$(VAR2))filez VAR2=b$(var3)zvar3=42zvar4=$/invalidzvar5=dollar$$5zAvar6=${var3}/lib/python3.5/config-$(VAR2)$(var5)-x86_64-linux-gnuZab42Zb42*z $/invalidzdollar$5z442/lib/python3.5/config-b42dollar$5-x86_64-linux-gnu)Zvar1ZVAR2Zvar3Zvar4Zvar5Zvar6)Z addCleanuprropenprintr,Z_parse_makefilerH)r3rrr7r7r8test_parse_makefiles&       $ z!MakefileTests.test_parse_makefileN) rrrrrrr& startswithrrr7r7r7r8rs  r__main__)!rrr!r|rFrZ test.supportrrrrrrr r r,r r r rrrrrrrrr]ZTestCaserrrmainr7r7r7r8s (4v