3 öLÖjˆ)ã@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZmZdadd„ZGdd„dejdd#ƒƒZd d „Zd d„Zdd„Zdd„Zejejdœdd„Zdd„Zd$dd„Zd%dd„Zd&dd„Zd'd!d"„ZdS)(éN)Úsource_from_cache)Úmake_legacy_pycÚstrip_python_stderrc CsVtdkrRdtjkrdadSytjtjdddgƒWntjk rLdaYnXdatS)NZ PYTHONHOMETz-Ez-czimport sys; sys.exit(0)F)Ú$__cached_interp_requires_environmentÚosÚenvironÚ subprocessZ check_callÚsysÚ executableZCalledProcessError©r r ú2/usr/lib64/python3.6/test/support/script_helper.pyÚ interpreter_requires_environments   r c@seZdZdd„ZdS)Ú_PythonRunResultcCsˆd}|j|j}}t|ƒ|kr0d|| d…}t|ƒ|krNd|| d…}|jddƒjƒ}|jddƒjƒ}td|j|||fƒ‚dS) NéPéds(... truncated stdout ...)s(... truncated stderr ...)ÚasciiÚreplacezRProcess return code is %d command line: %r stdout: --- %s --- stderr: --- %s ---i@)ÚoutÚerrÚlenÚdecodeÚrstripÚAssertionErrorÚrc)ÚselfÚcmd_lineÚmaxlenrrr r r Úfail>s   z_PythonRunResult.failN)Ú__name__Ú __module__Ú __qualname__rr r r r r;srrrrc Ostƒ}d|kr|jdƒ}n | o$| }tjddg}|rB|jdƒn| rX| rX|jdƒ|jddƒr‚i}tjdkrŒtjd|d<n tjjƒ}d |krœd |d <|j |ƒ|j |ƒt j |t j t j t j |d �}|�*z|jƒ\}}Wd|jƒt jƒXWdQRX|j} t|ƒ}t| ||ƒ|fS) NZ __isolatedz-XZ faulthandlerz-Iz-EZ __cleanenvZwin32Z SYSTEMROOTÚTERMÚ)ÚstdinÚstdoutÚstderrÚenv)r Úpopr r ÚappendÚplatformrrÚcopyÚupdateÚextendrÚPopenÚPIPEZ communicateÚkillÚ_cleanupÚ returncoderr) ÚargsÚenv_varsZ env_requiredÚisolatedrr&Úprocrrrr r r Úrun_python_until_end[s:            r6cOs4t||Ž\}}|jr|s&|j r0| r0|j|ƒ|S)N)r6rr)Zexpected_successr2r3Úresrr r r Ú_assert_pythonŽs r8cOstd|ž|ŽS)NT)T)r8)r2r3r r r Úassert_python_ok”s r9cOstd|ž|ŽS)NF)F)r8)r2r3r r r Úassert_python_failure¡sr:)r$r%cOsXtjg}tƒs|jdƒ|j|ƒ|jdttjƒƒ}d|d<t j |ft j ||dœ|—ŽS)Nz-Er&Zvt100r!)r#r$r%) r r r r(r,Ú setdefaultÚdictrrrr-r.)r$r%r2Úkwrr&r r r Ú spawn_python«s   r>cCs2|jjƒ|jjƒ}|jjƒ|jƒtjƒ|S)N)r#Úcloser$ÚreadÚwaitrr0)ÚpÚdatar r r Ú kill_pythonÁs    rDFcCsP|}|s|tjd7}tjj||ƒ}t|ddd�}|j|ƒ|jƒtjƒ|S)NÚpyÚwzutf-8)Úencoding) rÚextsepÚpathÚjoinÚopenÚwriter?Ú importlibÚinvalidate_caches)Z script_dirÚscript_basenameÚsourceZ omit_suffixZscript_filenameÚ script_nameZ script_filer r r Ú make_scriptÌs rRc Cs¤|tjd}tjj||ƒ}tj|dƒ}|dkr~|jtjƒ}t|ƒdkrr|ddkrrt t |ƒƒ}tjj |ƒ}|}n tjj |ƒ}|j ||ƒ|j ƒ|tjj||ƒfS)NÚziprFéÚ __pycache__éþÿÿÿ)rrHrIrJÚzipfileÚZipFileÚsplitÚseprrrÚbasenamerLr?) Úzip_dirÚ zip_basenamerQZ name_in_zipÚ zip_filenameÚzip_nameÚzip_fileÚpartsZ legacy_pycr r r Úmake_zip_scriptØs      rbr"cCstj|ƒt|d|ƒdS)NÚ__init__)rÚmkdirrR)Zpkg_dirZ init_sourcer r r Úmake_pkgís reécs0g}t|ddƒ}|j|ƒtjj|ƒ} t|||ƒ} |j| ƒ|rjtj|dd�}tj| dd�} |j|| fƒ‡fdd„td|dƒDƒ} tjj | d tjj| ƒƒ} |tj d} tjj || ƒ}t j |d ƒ}x&| D]}tjj || ƒ}|j ||ƒqÎW|j | | ƒ|jƒx|D]}tj|ƒ�q W|tjj || ƒfS) Nrcr"T)Údoraisecsg|]}tjjˆg|ƒ‘qSr )rrZrJ)Ú.0Úi)Úpkg_namer r ú ýsz make_zip_pkg..rfrSrFéÿÿÿÿ)rRr(rrIr[Ú py_compileÚcompiler,ÚrangerJrHrWrXrLr?Úunlink)r\r]rjrOrPZdepthZcompiledrpZ init_nameZ init_basenamerQZ pkg_namesZscript_name_in_zipr^r_r`ÚnameZinit_name_in_zipr )rjr Ú make_zip_pkgñs.         rr)rrr)F)N)r")rfF) Ú collectionsrMr rZos.pathZtempfilerrmÚ contextlibZshutilrWÚimportlib.utilrZ test.supportrrrr Ú namedtuplerr6r8r9r:r.ZSTDOUTr>rDrRrbrerrr r r r Ús4 $3