a :êdg%+ã@s¬dZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZmZmZmZGdd„de jejƒZd d „Zed kr¨eeƒƒdS) zTests for distutils.sysconfig.éN)Ú sysconfig)Úget_default_compiler)Úsupport)ÚTESTFNÚ run_unittestÚcheck_warningsÚ swap_itemcseZdZ‡fdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z e   eƒdkd¡dd„ƒZdd„Zdd„Zdd„Ze  e d¡d¡dd „ƒZe  e d!¡d"ud#¡d$d%„ƒZe  e d!¡d"ud#¡d&d'„ƒZe  e d!¡d"ud#¡d(d)„ƒZd*d+„Z‡ZS),ÚSysconfigTestCasecstt|ƒ ¡d|_dS©N)Úsuperr ÚsetUpÚmakefile©Úself©Ú __class__©ú:/usr/local/lib/python3.9/distutils/tests/test_sysconfig.pyr szSysconfigTestCase.setUpcs0|jdurt |j¡| ¡tt|ƒ ¡dSr )r ÚosÚunlinkÚcleanup_testfnr r ÚtearDownrrrrrs  zSysconfigTestCase.tearDowncCs2tj t¡rt t¡ntj t¡r.t t¡dSr )rÚpathÚisfilerÚremoveÚisdirÚshutilÚrmtreerrrrrs   z SysconfigTestCase.cleanup_testfncCs t ¡}| tj |¡|¡dSr )rZget_config_h_filenameÚ assertTruerrr)rZconfig_hrrrÚtest_get_config_h_filename sz,SysconfigTestCase.test_get_config_h_filenamecCs| t ¡tjtd¡dS)N)Úprefix)ZassertNotEqualrZget_python_librrrrrÚtest_get_python_lib$s  ÿz%SysconfigTestCase.test_get_python_libcCs"t ¡}| |t¡| |¡dSr )rÚget_config_varsZassertIsInstanceÚdictr)rZcvarsrrrÚtest_get_config_vars+s z&SysconfigTestCase.test_get_config_varscCs”t d¡}| tj |¡|¡| tj |¡|¡tjrntj |dd¡}| tj  |¡|¡| t  |¡¡n"tj dkr|  tj  t ¡¡|¡dS)NÚsrcdirZIncludezPython.hÚposix)rÚget_config_varrrrÚisabsrZ python_buildÚjoinÚexistsZ_is_python_source_dirÚnameÚ assertEqualÚdirnameZget_makefile_filename)rr%ZPython_hrrrÚ test_srcdir0s  þzSysconfigTestCase.test_srcdirc CsRt d¡}t ¡}z"t d¡t d¡}Wt |¡n t |¡0| ||¡dS)Nr%z..)rr'rÚgetcwdÚchdirr,)rr%ÚcwdZsrcdir2rrrÚtest_srcdir_independent_of_cwdBs   z0SysconfigTestCase.test_srcdir_independent_of_cwdc CsˆGdd„dƒ}ddddddd d d d œ }|ƒ}t ¡@}| ¡D]\}}| ttj||ƒ¡q>t |¡Wdƒn1sz0Y|S) Nc@seZdZdZdd„ZdS)z6SysconfigTestCase.customize_compiler..compilerÚunixc[s ||_dSr )Úexes)rÚkwrrrÚset_executablesSszFSysconfigTestCase.customize_compiler..compiler.set_executablesN)Ú__name__Ú __module__Ú __qualname__Z compiler_typer6rrrrÚcompilerPsr:Zsc_arÚsc_ccÚsc_cxxz --sc-arflagsz --sc-cflagsz --sc-ccsharedÚ sc_ldsharedÚsc_shutil_suffixÚTrue) ÚARÚCCÚCXXÚARFLAGSÚCFLAGSZCCSHAREDÚLDSHAREDZ SHLIB_SUFFIXÚCUSTOMIZED_OSX_COMPILER)Ú contextlibÚ ExitStackÚitemsÚ enter_contextrrZ _config_varsÚcustomize_compiler)rr:Zsysconfig_varsÚcompÚcmÚkeyÚvaluerrrrKNs"õ (z$SysconfigTestCase.customize_compilerr3z+not testing if default compiler is not unixcCsÖt ¡dtjd<dtjd<dtjd<dtjd<d tjd <d tjd <d tjd<dtjd<dtjd<| ¡}| |jdd¡| |jdd¡| |jdd¡| |jdd¡| |jdd¡| |jdd¡| |jdd¡| |jd¡tjd=tjd=tjd=tjd=tjd =tjd =tjd=tjd=tjd=| ¡}| |jdd ¡| |jdd!¡| |jdd"¡| |jdd#¡| |jdd$¡| |jdd%¡| |jdd&¡| |jd¡dS)'NZenv_arr@Zenv_ccrAZenv_cppZCPPzenv_cxx --env-cxx-flagsrBZ env_ldsharedrEz --env-ldflagsÚLDFLAGSz --env-arflagsrCz --env-cflagsrDz--env-cppflagsZCPPFLAGSZarchiverzenv_ar --env-arflagsZ preprocessorzenv_cpp --env-cppflagsr:z.env_cc --sc-cflags --env-cflags --env-cppflagsZ compiler_sozzsc_ar --sc-arflagszsc_cc -Ezsc_cc --sc-cflagszsc_cc --sc-cflags --sc-ccsharedr<r;r=)rr"rÚenvironrKr,r4Zshared_lib_extension)rrLrrrÚtest_customize_compilerls‚          ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿz)SysconfigTestCase.test_customize_compilercCs`t|_t|jdƒ}z | d¡| d¡W| ¡n | ¡0t |j¡}| |dddœ¡dS)NÚwz)CONFIG_ARGS= '--arg1=optarg1' 'ENV=LIB' úVAR=$OTHER OTHER=fooz'--arg1=optarg1' 'ENV=LIB'Úfoo©Z CONFIG_ARGSZOTHER©rr ÚopenÚwriteÚcloserZparse_makefiler,©rÚfdÚdrrrÚtest_parse_makefile_baseªs    ÿz*SysconfigTestCase.test_parse_makefile_basecCs`t|_t|jdƒ}z | d¡| d¡W| ¡n | ¡0t |j¡}| |dddœ¡dS)NrSz,CONFIG_ARGS= '--arg1=optarg1' 'ENV=\$$LIB' rTz'--arg1=optarg1' 'ENV=\$LIB'rUrVrWr[rrrÚ"test_parse_makefile_literal_dollar¶s    ÿz4SysconfigTestCase.test_parse_makefile_literal_dollarcCs<ddl}| | d¡t d¡¡| | d¡t d¡¡dS)NrrDrP)rr,r'©rZglobal_sysconfigrrrÚtest_sysconfig_moduleÃs ÿ ÿz'SysconfigTestCase.test_sysconfig_modulerFúcompiler flags customizedcCsPddl}t d¡r| d¡| | d¡t d¡¡| | d¡t d¡¡dS)NrrFrbrErA)rr'ZskipTestr,r`rrrÚtest_sysconfig_compiler_varsÊs   ÿ ÿz.SysconfigTestCase.test_sysconfig_compiler_varsÚ EXT_SUFFIXNz!EXT_SUFFIX required for this testcCs| ttjd¡dS)NÚSO)Z assertWarnsÚDeprecationWarningrr'rrrrÚtest_SO_deprecationãsÿz%SysconfigTestCase.test_SO_deprecationcCsHtdtfƒ(| t d¡t d¡¡Wdƒn1s:0YdS)NÚrerd)rrfr,rr'rrrrÚ test_SO_valueés ÿzSysconfigTestCase.test_SO_valuecCs.t ¡}| |d¡| |d|d¡dS)Nrerd)rr"ZassertIsNotNoner,)rÚvarsrrrÚtest_SO_in_varsðsz!SysconfigTestCase.test_SO_in_varscCs~ttdƒ }| t d¡¡Wdƒn1s00Ytjttj ƒtgtj tj dd}|  ¡\}}|  d|jd|¡dS)NrSaB 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_newlinesrzSubprocess failed: )rXrÚ writelinesÚtextwrapÚdedentÚ subprocessÚPopenÚstrÚsysÚ executableÚPIPEÚSTDOUTÚ communicater,Ú returncode)rÚfÚpZoutsZerrsrrrÚ.test_customize_compiler_before_get_config_vars÷s .ý z@SysconfigTestCase.test_customize_compiler_before_get_config_vars)r7r8r9r rrrr!r$r.r2rKÚunittestZ skipUnlessrrRr^r_raZskipIfrr'rcrgrirkr}Ú __classcell__rrrrr sB    ÿ <   ÿ ÿ ÿ ÿ r cCst ¡}| t t¡¡|Sr )r~Z TestSuiteZaddTestZ makeSuiter )ZsuiterrrÚ test_suite sr€Ú__main__)Ú__doc__rGrrrrrurpr~Z distutilsrZdistutils.ccompilerrZdistutils.testsrZ test.supportrrrrZ EnvironGuardZTestCaser r€r7rrrrÚs    }