a 5êdgDã@sØddlZddlZddlZddlZddlZddlmZddlmZmZm Z m Z m Z m Z m Z mZddlZddlmZmZmZmZmZmZmZmZmZmZmZddlZGdd„dejƒZGdd„dejƒZed krÔe  ¡dS) éN)Úcopy)Ú import_moduleÚTESTFNÚunlinkÚcheck_warningsÚcaptured_stdoutÚskip_unless_symlinkÚ change_cwdÚ PythonSymlink) Ú get_pathsÚ get_platformÚget_config_varsÚget_pathÚget_path_namesÚ_INSTALL_SCHEMESÚ_get_default_schemeÚ _expand_varsÚget_scheme_namesÚget_config_varÚ_maincsteZdZ‡fdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zedd„ƒZdd„Zdd„Ze ejdkd ¡d!d"„ƒZe ejd#kd$¡d%d&„ƒZd'd(„Zd)d*„Ze e d+¡d,ud-¡d.d/„ƒZe e d+¡d,ud-¡d0d1„ƒZe e d+¡d,ud-¡d2d3„ƒZ e ejd4koDe!ej"d5ƒd6¡d7d8„ƒZ#e ejd#kd9¡d:d;„ƒZ$‡Z%S)<Ú TestSysConfigcsìtt|ƒ ¡tjdd…|_ttdƒr1s(         zTestSysConfig.tearDowncCst |¡|_dS©N)r!Ú uname_resultr")r3rr7r7r8r#IszTestSysConfig._set_unamecCs|jSr@)r"©r3r7r7r8r$LszTestSysConfig._get_unamecCs6t}tj |¡rt |¡ntj |¡r2t |¡dSr@)rr!rÚisfileÚremoveÚisdirÚshutilÚrmtree)r3rr7r7r8r:Os    zTestSysConfig._cleanup_testfncCs| tƒtj¡dSr@)Ú assertEqualrr,Z _SCHEME_KEYSrBr7r7r8Útest_get_path_namesVsz!TestSysConfig.test_get_path_namescCs>tƒ}tƒ}t|dƒ}t| ¡ƒ}t| ¡ƒ}| ||¡dSr@)r rrÚsortedÚitemsrH)r3ÚschemeZdefault_schemeÚwantedr7r7r8Útest_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 ZassertIsInstanceÚdictÚ assertTrue)r3Zcvarsr7r7r8Útest_get_config_varsgs z"TestSysConfig.test_get_config_varscCsNdt_dt_dt_| tƒd¡dt_dt_dt_| tƒd¡dt_dt_dt_| d ¡t  t ƒ¡d t ƒd <d t ƒd <tj }z2dt_ | tƒd¡dt_ | tƒd¡W|t_ n|t_ 0| d¡t  t ƒ¡d t ƒd <d t ƒd <tj }z2dt_ | tƒd¡dt_ | tƒd¡W|t_ n|t_ 0t  t ƒ¡dt ƒd <dt ƒd <| tƒd¡t  t ƒ¡dt ƒd <| tƒd¡t  t ƒ¡dt ƒd <| tƒd¡t  t ƒ¡dt ƒd <| tƒd¡t  t ƒ¡dt ƒd <| tƒd¡d D]2}t  t ƒ¡d!|t ƒd <| tƒd"|¡qìdt_d#t_d$t_| d%¡| tƒd&¡dS)'NÚntz>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-amd64ÚposixzU2.5 (r25:51918, Sep 19 2006, 08:49:13) [GCC 4.0.1 (Apple Computer, Inc. build 5341)]Údarwin)Ú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_I386ZPowerPCz10.3rzF-fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypesZCFLAGSiÿÿÿzmacosx-10.3-ppclÿÿÿÿzmacosx-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)r3ZmaxintZarchr7r7r8Útest_get_platformlsx                    ý  zTestSysConfig.test_get_platformcCs t ¡}| tj |¡|¡dSr@)r,Zget_config_h_filenamerRr!rrC)r3Zconfig_hr7r7r8Útest_get_config_h_filenameâsz(TestSysConfig.test_get_config_h_filenamecCsd}| tƒ|¡dS)N)rTZnt_userZosx_framework_userZ posix_homeÚ posix_prefixÚ posix_user)rHr)r3rMr7r7r8Útest_get_scheme_namesæsz#TestSysConfig.test_get_scheme_namescCsFtƒ,}d}| |j|Ž|j|Ž¡Wdƒn1s80YdS)N)ú-cú1import sysconfig; print(sysconfig.get_platform()))r rHZ call_realZ call_link)r3ÚpyÚcmdr7r7r8Ú test_symlinkëszTestSysConfig.test_symlinkc Cs¦tdƒ}tdƒ}tjtjk}dD]€}t|dƒ}|rT| tjtj¡}| tjtj¡}n,tjtjkr€| tjtj¡}| tjtj¡}t|dƒ}| || ||d¡¡q dS)NÚbaseÚuserbase)ZstdlibZ platstdlibZpurelibZplatlibrarbr9) rrÚ base_prefixÚbase_exec_prefixrÚreplaceÚ exec_prefixÚprefixrH)r3riÚuserZadaptr%Z global_pathZ user_pathr7r7r8Útest_user_similarñs    zTestSysConfig.test_user_similarcCsLtƒ}tƒWdƒn1s"0Y| t| ¡ d¡ƒdk¡dS)NÚ r)rrrRÚlenÚgetvalueÚsplit)r3Úoutputr7r7r8Ú test_mains$zTestSysConfig.test_mainrUzDoes not apply to WindowscCs$t d¡}t d¡}| ||¡dS)NZLDFLAGSZLDSHARED)r,rZassertIn)r3ZldflagsZldsharedr7r7r8Útest_ldshared_value s  z!TestSysConfig.test_ldshared_valuerWztest only relevant on MacOSXcCsæt ¡}tj ¡}d|vr |d=tjtjddgtj tj |d}|  ¡d  ¡}|  d¡}| ¡}| |d¡| ||¡tj ¡}d|d<tjtjddgtj tj |d}|  ¡d  ¡}|  d¡}| ¡}| |d¡| ||¡dS)Nrrdre)ÚstdoutÚstderrÚenvrzutf-8z10.1)r,r r!r1rÚ subprocessÚPopenrÚ executableÚPIPEÚDEVNULLÚ communicateÚstripÚdecodeÚwaitrH)r3Z my_platformr{ÚpZ test_platformÚstatusr7r7r8Útest_platform_in_subprocesss@ þú    þú  z)TestSysConfig.test_platform_in_subprocesscCs¤t d¡}| tj |¡|¡| tj |¡|¡tjrntj |dd¡}| tj  |¡|¡| t  |¡¡n2tj dkr tj  t  ¡¡}tj |¡}| ||¡dS)NÚsrcdirZIncludezPython.hrV)r,rrRr!rr*rEZ _PYTHON_BUILDr)ÚexistsZ_is_python_source_dirr%ÚdirnameÚget_makefile_filenameÚrealpathrH)r3rˆZPython_hZ makefile_dirr7r7r8Ú test_srcdir?s   zTestSysConfig.test_srcdircCsNt d¡}ttjƒt d¡}Wdƒn1s40Y| ||¡dS)Nrˆ)r,rr r!ÚpardirrH)r3rˆZsrcdir2r7r7r8Útest_srcdir_independent_of_cwdRs  (z,TestSysConfig.test_srcdir_independent_of_cwdÚ EXT_SUFFIXNz!EXT_SUFFIX required for this testcCs| ttjd¡dS)NÚSO)Z assertWarnsÚDeprecationWarningr,rrBr7r7r8Útest_SO_deprecationZsÿz!TestSysConfig.test_SO_deprecationcCsHtdtfƒ(| t d¡t d¡¡Wdƒn1s:0YdS)Nrr‘r)rr’rHr,rrBr7r7r8Ú test_SO_value`s ÿzTestSysConfig.test_SO_valuecCsNddl}t ¡}| |d¡| |d|d¡| |d| ¡d¡dS)Nrr‘r)Ú_impr,r ZassertIsNotNonerHÚextension_suffixes)r3r•Úvarsr7r7r8Útest_EXT_SUFFIX_in_varsgs z%TestSysConfig.test_EXT_SUFFIX_in_varsÚlinuxÚ _multiarchzmultiarch-specific testcCs˜tdƒ}ddl}ddl}| ¡}t d¡}| d|¡rF| d|v|¡| d|¡r”| |  ¡¡dkr‚| |  d¡pz|  d ¡|¡n| |  d ¡|¡dS) NÚctypesrrz)(aarch64|arm|mips|ppc|powerpc|s390|sparc)r™z(i[3-6]86|x86_64)$ézi386-linux-gnu.sozx86_64-linux-gnux32.sozx86_64-linux-gnu.so) rr&ÚreÚmachiner,rÚmatchrRZsizeofZc_char_pÚendswith)r3r›r&rržÚsuffixr7r7r8Útest_triplet_in_ext_suffixps   þz(TestSysConfig.test_triplet_in_ext_suffixzOS X-specific testcCs t d¡}| | d¡|¡dS)Nrz -darwin.so)r,rrRr )r3r¡r7r7r8Útest_osx_ext_suffix‚s z!TestSysConfig.test_osx_ext_suffix)&Ú__name__Ú __module__Ú __qualname__rr>r#r$r:rIrNrPrSr_r`rcrrhrqrwÚunittestÚskipIfrr&rxZ skipUnlessr‡rrr,rr“r”r˜r Úimplementationr¢r£Ú __classcell__r7r7r5r8rsR  v   *ÿ ÿ ÿ  þ rc@s0eZdZe ej d¡d¡dd„ƒZdd„Z dS)Ú MakefileTestsÚwinzTest is not Windows compatiblecCs t ¡}| tj |¡|¡dSr@)r,r‹rRr!rrC)r3Úmakefiler7r7r8Útest_get_makefile_filename‰sz(MakefileTests.test_get_makefile_filenamec Cs¦| tt¡ttdƒX}td|dtd|dtd|dtd|dtd|dtd|dWdƒn1st0Yt t¡}| |d d d d d ddœ¡dS)NÚwz 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 addCleanuprrÚopenÚprintr,Z_parse_makefilerH)r3r­r—r7r7r8Útest_parse_makefiles&       ÿ$ úz!MakefileTests.test_parse_makefileN) r¤r¥r¦r§r¨rr&Ú startswithr®r´r7r7r7r8r«‡s ÿ r«Ú__main__)!r§rr!r|rFrZ test.supportrrrrrrr r r,r r r rrrrrrrrr]ZTestCaserr«r¤Úmainr7r7r7r8Ús (4v