a :êdg¤!ã@sðdZddlZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z ddlmZddl mZddlmZdd lmZdd lmZdd lmZdd lmZd d „ZGdd„dejejejejƒZ dd„Z!e"dkrìee!ƒƒdS)z$Tests for distutils.command.install.éN)Úcaptured_stdoutÚ run_unittest)Ú sysconfig)Úinstall)Ú build_ext)ÚINSTALL_SCHEMES)Ú Distribution)ÚDistutilsOptionError)Ú Extension)ÚsupportcCs|t d¡S)NZ EXT_SUFFIX)rZget_config_var)Úmodname©r ú8/usr/local/lib/python3.9/distutils/tests/test_install.pyÚ_make_ext_namesrc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚInstallTestCasecsˆ ¡}tj |d¡}tddiƒ}tj |d¡|_tj|tj |d¡d|jd<t |ƒ}||_ |  ¡ˆ  |j |¡ˆ  |j|¡‡fdd „}tj |dd ¡}||j|ƒtj |tjd ¡}||j|ƒ||j|ƒ||jtj |d d d¡ƒ||jtj |d ¡ƒ||j|ƒdS) NZ installationÚnameZfoopkgzsetup.pyÚlib)Z build_baseZ build_libZbuildcs(tj |¡}tj |¡}ˆ ||¡dS©N)ÚosÚpathÚnormpathÚ assertEqual)ZgotÚexpected©Úselfr rÚ check_path6s  zAInstallTestCase.test_home_installation_scheme..check_pathZpythonZincludeÚbin)ÚmkdtemprrÚjoinrZ script_namer Z DummyCommandÚ command_objrÚhomeÚensure_finalizedrÚ install_baseZinstall_platbaseZ install_libÚsysÚ platlibdirZinstall_platlibZinstall_purelibZinstall_headersZinstall_scriptsZ install_data)rZbuilddirZ destinationÚdistÚcmdrÚlibdirr$r rrÚtest_home_installation_scheme s0  þ     ÿz-InstallTestCase.test_home_installation_schemecsVtjˆ_tjˆ_ˆ ¡ˆ_tj  ˆjd¡ˆ_ tj  ˆjd¡ˆ_ ˆj t_ˆj t_ˆj t _ˆj t _‡fdd„}tjj ˆ_|tj_ ‡fdd„}ˆ |¡dD]}ˆ |t¡q–tdd iƒ}t|ƒ}d d „|jDƒ}ˆ d |¡d |_ˆ tj ˆj ¡¡ˆ tj ˆj ¡¡| ¡ˆ tj ˆj ¡¡ˆ tj ˆj ¡¡ˆ d|j¡ˆ d|j¡dS)NÚBÚScsˆjSr)Útmpdir)rrr rÚ _expanduserRsz3InstallTestCase.test_user_site.._expandusercs.ˆjt_ˆjt_ˆjt_ˆjt_ˆjtj_ dSr) Ú old_user_baseÚsiteÚ USER_BASEÚ old_user_siteÚ USER_SITEÚinstall_moduleÚ old_expandrrÚ expanduserr rr rÚcleanupWs z/InstallTestCase.test_user_site..cleanup)Znt_userZ unix_userrÚxxcSsg|]\}}}|‘qSr r )Ú.0rZshortZlabler r rÚ góz2InstallTestCase.test_user_site..ÚuseréÚuserbaseZusersite)r.r/r-r1r0rr+rrrÚ user_baseÚ user_siter2r4r3Z addCleanupZassertInrrrZ user_optionsr:Z assertFalseÚexistsr!Z assertTrueZ config_vars)rr,r5Úkeyr%r&Úoptionsr rrÚtest_user_siteEs<      ÿ zInstallTestCase.test_user_sitecCsÞtdddœƒ}t|ƒ}| ¡| |jddg¡| |jd¡| |jd¡dg|_| ¡| |jdg¡| |jd¡| |jd¡d|_|_| ¡| |jd¡| |jd¡| |jd¡d|_| t|j¡dS)Nr6z path,dirs)rÚ extra_pathrÚdirsÚzpath,dirs,again) rrZhandle_extra_pathrrCZ extra_dirsZ path_fileÚ assertRaisesr ©rr%r&r r rÚtest_handle_extra_path|s$ z&InstallTestCase.test_handle_extra_pathcCsftddiƒ}t|ƒ}d|_d|_| t|j¡d|_d|_| t|j¡d|_d|_| t|j¡dS)Nrr6ÚprefixÚbaser r:) rrrIr"rFr Zfinalize_optionsr r:rGr r rÚtest_finalize_options˜s z%InstallTestCase.test_finalize_optionsc Csæ| ¡}|jdgdgd\}}t |¡| dd¡| dd¡t|ƒ}||jd<||_tj  |d¡|_ |  ¡|  ¡t |j ƒ}z| ¡}W| ¡n | ¡0d d „| ¡Dƒ}dd tjjdd tjdd …g}| ||¡dS)NZhelloZsayhi)Z py_modulesZscriptszhello.pyzdef main(): print('o hai')zfrom hello import main; main()rÚfilelistcSsg|]}tj |¡‘qSr ©rrÚbasename©r7Úliner r rr8Âr9z/InstallTestCase.test_record..z hello.%s.pycúUNKNOWN-0.0.0-py%s.%s.egg-infoé)rÚ create_distrÚchdirZ write_filerrÚrootrrÚrecordr!ÚrunÚopenÚreadÚcloseÚ splitlinesr#ÚimplementationÚ cache_tagÚ version_infor) rÚ install_dirÚ project_dirr%r&ÚfÚcontentÚfoundrr r rÚ test_record­s.ÿ        þzInstallTestCase.test_recordc Cst ¡}|dur| d|¡| ¡}|jtddgƒgd\}}t |¡t  |¡t |ƒ}t  |¡|  ¡t |ƒ}||jd<||jd<||_tj |d¡|_|  ¡| ¡t|jƒ}z| ¡}W| ¡n | ¡0dd „| ¡Dƒ}tdƒd tjdd …g} | || ¡dS) NzThe %r command is not foundr6z xxmodule.c)Z ext_modulesrrrLcSsg|]}tj |¡‘qSr rMrOr r rr8är9z:InstallTestCase.test_record_extensions..rQrR)Ú test_supportZmissing_compiler_executableZskipTestrrSr rrTr Zcopy_xxmodule_crZfixup_build_extr!rrrUrrrVrWrXrYrZr[rr#r^r) rr&r_r`r%Z buildextcmdrarbrcrr r rÚtest_record_extensionsÈs8 ÿ        ÿz&InstallTestCase.test_record_extensionscCsht|jƒ}dt_z8tƒ| ¡Wdƒn1s60YWdt_ndt_0| t|jƒ|¡dS)NTF)ÚlenZlogsr2ÚDEBUGrrdZ assertGreater)rZ old_logs_lenr r rÚtest_debug_modeés (zInstallTestCase.test_debug_modeN) Ú__name__Ú __module__Ú __qualname__r(rBrHrKrdrfrir r r rrs%7!rcCs t t¡Sr)ÚunittestZ makeSuiterr r r rÚ test_suiteõsrnÚ__main__)#Ú__doc__rr#rmr.Z test.supportrrZ distutilsrZdistutils.command.installrZdistutils.commandr2Zdistutils.command.build_extrrZdistutils.corerZdistutils.errorsr Zdistutils.extensionr Zdistutils.testsr ÚtestrerZTempdirManagerZ EnvironGuardZLoggingSilencerZTestCaserrnrjr r r rÚs2          ý[