a  ze!@sddlZddlZddlZddlZddlmZmZddlmZddl m Z ddl m Z ddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZd d ZGd ddejejejejZddZ e!dkree dS)N)captured_stdout run_unittest) sysconfig)install) build_ext)INSTALL_SCHEMES) Distribution)DistutilsOptionError) Extension)supportcCs|tdS)NZ EXT_SUFFIX)rZget_config_var)modnamer P/opt/bitninja-python-dojo/embedded/lib/python3.9/distutils/tests/test_install.py_make_ext_namesrc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)InstallTestCasecs}tj|d}tddi}tj|d|_tj|tj|dd|jd<t |}||_ |  |j | |j|fdd }tj|dd }||j|tj|tjd }||j|||j|||jtj|d d d||jtj|d ||j|dS) NZ installationnameZfoopkgzsetup.pylib)Z build_baseZ build_libZbuildcs(tj|}tj|}||dSN)ospathnormpath assertEqual)Zgotexpectedselfr r check_path6s  zAInstallTestCase.test_home_installation_scheme..check_pathZpythonZincludebin)mkdtemprrjoinrZ script_namer Z DummyCommand command_objrhomeensure_finalizedr install_baseZinstall_platbaseZ install_libsys platlibdirZinstall_platlibZinstall_purelibZinstall_headersZinstall_scriptsZ install_data)rZbuilddirZ destinationdistcmdrlibdirr$r rrtest_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]}|tqtdd i}t|}d d |jD}d |d |_tjj tjj |tjj tjj d|jd|jdS)NBScsjSr)tmpdir)rrr r _expanduserRsz3InstallTestCase.test_user_site.._expandusercs.jt_jt_jt_jt_jtj_ dSr) old_user_basesite USER_BASE old_user_site USER_SITEinstall_module old_expandrr expanduserr rr rcleanupWs z/InstallTestCase.test_user_site..cleanup)Znt_userZ unix_userrxxcSsg|]\}}}|qSr r ).0rZshortZlabler r r gz2InstallTestCase.test_user_site..useruserbaseZusersite)r.r/r-r1r0rr+rrr user_base user_siter2r4r3Z addCleanupZassertInrrrZ user_optionsr:Z assertFalseexistsr!Z assertTrueZ config_vars)rr,r5keyr%r&optionsr rrtest_user_siteEs<       zInstallTestCase.test_user_sitecCstddd}t|}|||jddg||jd||jddg|_|||jdg||jd||jdd|_|_|||jd||jd||jdd|_|t|jdS)Nr6z path,dirs)r extra_pathrdirszpath,dirs,again) rrZhandle_extra_pathrrCZ extra_dirsZ path_file assertRaisesr rr%r&r r rtest_handle_extra_path|s$ z&InstallTestCase.test_handle_extra_pathcCsftddi}t|}d|_d|_|t|jd|_d|_|t|jd|_d|_|t|jdS)Nrr6prefixbaser r:) rrrIr"rFr Zfinalize_optionsr r:rGr r rtest_finalize_optionss z%InstallTestCase.test_finalize_optionsc Cs|}|jdgdgd\}}t||dd|ddt|}||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()rfilelistcSsg|]}tj|qSr rrbasenamer7liner r rr8r9z/InstallTestCase.test_record..z hello.%s.pycUNKNOWN-0.0.0-py%s.%s.egg-info)r create_distrchdirZ write_filerrrootrrrecordr!runopenreadclose splitlinesr#implementation cache_tag version_infor) r install_dir project_dirr%r&fcontentfoundrr r r test_records.        zInstallTestCase.test_recordc Cst}|dur|d||}|jtddggd\}}t|t |t |}t || t |}||jd<||jd<||_tj|d|_| |t|j}z|}W|n |0dd |D}tdd tjdd g} ||| dS) NzThe %r command is not foundr6z xxmodule.c)Z ext_modulesrrrLcSsg|]}tj|qSr rMrOr r rr8r9z: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 rtest_record_extensionss8        z&InstallTestCase.test_record_extensionscCsht|j}dt_z8t|Wdn1s60YWdt_ndt_0|t|j|dS)NTF)lenZlogsr2DEBUGrrdZ assertGreater)rZ old_logs_lenr r rtest_debug_modes (zInstallTestCase.test_debug_modeN) __name__ __module__ __qualname__r(rBrHrKrdrfrir r r rrs%7!rcCs ttSr)unittestZ makeSuiterr r r r test_suitesrn__main__)"rr#rmr.Z test.supportrrZ distutilsrZdistutils.command.installrZdistutils.commandr2Zdistutils.command.build_extrrZdistutils.corerZdistutils.errorsr Zdistutils.extensionr Zdistutils.testsr testrerZTempdirManagerZ EnvironGuardZLoggingSilencerZTestCaserrnrjr r r rs0          [