Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_runpy.cpython-35.opt-2.pyc



���]�{�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZmZmZddlmZmZmZmZddlZddlmZmZmZmZdZddddddd	dd
dddiZded
edddgdejdddddde edddddd�iZ!e!j"e�Gdd�d�Z#Gdd�dej$e#�Z%Gdd�dej$e#�Z&Gd d!�d!ej$e#�Z'e(d"krej)�dS)#�N)�forget�make_legacy_pyc�unload�verbose�
no_tracing�create_empty_file�temp_dir)�make_pkg�make_script�make_zip_pkg�make_zip_script)�	_run_code�_run_module_code�
run_module�run_patha�# Check basic code execution
result = ['Top level assignment']
def f():
    result.append('Lower level reference')
f()
del f
# Check the sys module
import sys
run_argv0 = sys.argv[0]
run_name_in_sys_modules = __name__ in sys.modules
module_in_sys_modules = (run_name_in_sys_modules and
                         globals() is sys.modules[__name__].__dict__)
# Check nested operation
import runpy
nested = runpy._run_module_code('x=1\n', mod_name='<run>')
�__name__�__file__�
__cached__�__package__�__doc__�__spec__�sys�runpy�resultzTop level assignmentzLower level reference�	run_argv0�run_name_in_sys_modulesF�module_in_sys_modules�nested�x�z<run>�
__loader__c@s@eZdZddddddgZdd�Zd	d
�ZdS)�CodeExecutionMixin�name�parent�origin�cached�has_location�submodule_search_locationsc	Cs�|j�}|j�}xlt|�D]^}|jd�r%|jd�r%||krb|j|�||dkr%|dj|�q%W|jd�}|jd�}|dkr�|j|�n�|jdk	r�|jt|j�t|j��xU|j	D]J}d|}|t
||�f}|t
||�f}|j||�q�W|jt|�t|��x>|D]6}|||f}|||f}|j||�qmWdS)N�__rrz	__spec__.)�copy�list�
startswith�endswith�popZassertIsNone�loader�assertEqual�type�CHECKED_SPEC_ATTRIBUTES�getattr�set)	�self�	result_ns�expected_ns�kZresult_specZ
expected_spec�attr�actualZexpected�r:�//opt/alt/python35/lib64/python3.5/test_runpy.py�assertNamespaceMatchesMs2


z)CodeExecutionMixin.assertNamespaceMatchesc
Cst�}|j�}|d}tjd}tjj||�}|d�}|j||�|jtjd|�|jtjj||�|�d|i}	||d<||	�}|j||	�|j||�|jtjd|�|jtjj||�|�dS)Nrr�sentinel)	�objectr)r�argv�modules�getr<ZassertIsZassertIsNot)
r4Zcreate_namespaceZexpected_namespacer=r6�run_nameZsaved_argv0Z	saved_modr5Z
initial_nsr:r:r;�check_code_executionus 	


z'CodeExecutionMixin.check_code_executionN)r�
__module__�__qualname__r1r<rCr:r:r:r;r!As	(r!c@s(eZdZdd�Zdd�ZdS)�ExecutionLayerTestCasecCs?tj�}|jddi�dd�}|j||�dS)Nr cSstti|�S)N)r
�example_source)�init_globalsr:r:r;�	create_ns�sz7ExecutionLayerTestCase.test_run_code.<locals>.create_ns)�example_namespacer)�updaterC)r4r6rIr:r:r;�
test_run_code�s

z$ExecutionLayerTestCase.test_run_codecs�d�d}d}d}tjj�d|d|��tj�}|jd�d|d	|d
|d�d|d
dddi���fdd�}|j||�dS)Nz
<Nonsense>zSome other nonsensezNow you're just being silly�r$r.rrr rrrrTrcstt|���S)N)rrG)rH)�mod_name�mod_specr:r;rI�sz>ExecutionLayerTestCase.test_run_module_code.<locals>.create_ns)�	importlib�	machinery�
ModuleSpecrJr)rKrC)r4�	mod_fnameZ
mod_loaderZmod_packager6rIr:)rNrOr;�test_run_module_code�s&	
z+ExecutionLayerTestCase.test_run_module_codeN)rrDrErLrTr:r:r:r;rF�s	rFc@s{eZdZdd�Zdd�Zdd�Zddd	�Zd
ddddd
d�Zdd�Zdd�Z	ddddddd�Z
ddddddd�Zdd�Zddd�Z
dd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�ZdS):�RunModuleTestCasecCs8yt|�Wntk
r"YnX|jd|�dS)NzExpected import error for )r�ImportError�fail)r4rNr:r:r;�expect_import_error�s

z%RunModuleTestCase.expect_import_errorcCsy|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�dS)
Nrzsys.imp.ericzos.path.halfza.beez.howardz..eatenz.test_runpyz	.unittest�multiprocessing)rX)r4r:r:r;�test_invalid_names�s







z$RunModuleTestCase.test_invalid_namescCs|jtd�dd�dS)Nrr)r/r)r4r:r:r;�test_library_module�sz%RunModuleTestCase.test_library_moduleFcCs:tj|�|rdStjj|d�}t|�|S)Nz__init__.py)�os�mkdir�path�joinr)r4�pkg_dir�	namespace�	pkg_fnamer:r:r;�_add_pkg_dir�s

zRunModuleTestCase._add_pkg_dirZ
runpy_testra�parent_namespacescCs�|s|r|rtd��d}|tjd}tjjtj��}}	tdkrktd|	�t	jj
d|�tdkr�tdt	jd�|r%|g|}
||
d<xg|
D]_}tjj|	|�}	|j|	|�}tdkrtd|	�tdkr�td	|�q�Wtjj|	|�}
t
|
d
�}|j|�|j�tdkrytd	|
�|d||}tjj||
�}||
||fS)
Nz2Can't mark top level module as a namespace package�
__runpy_pkg__�pyrz  Package tree in:rz  Updated sys.path:z  Next level in:z
  Created:�w�.���)�RuntimeErrorr\�extsepr^�realpath�tempfile�mkdtempr�printr�insertr_rc�open�write�closerP�util�spec_from_file_location)r4�source�depthZmod_baserard�pkg_nameZ
test_fnamer`Zsub_dirZnamespace_flagsZnamespace_flagrbrS�mod_filerNrOr:r:r;�	_make_pkg�s<







	zRunModuleTestCase._make_pkgc	Cs�x0ttj�D]}|jd�rtj|=qWtdkrItd�tjd=tdkritd�x
tj|dd�D]�\}}}xl|D]d}y tj	tjj
||��Wq�tk
r�}ztdkr�t|�WYdd}~Xq�Xq�Wxr|D]j}tjj
||�}ytj|�Wqtk
rm}ztdkr[t|�WYdd}~XqXqWqWy'tj|�tdkr�td�Wn;tk
r�}ztdkr�t|�WYdd}~XnXdS)	Nrerz  Removed sys.modules entriesrz  Removed sys.path entry�topdownFz  Removed package tree)
r*rr@r+rror^r\�walk�remover_�OSError�rmdir)	r4�top�entry�root�dirs�filesr"�ex�fullnamer:r:r;�_del_pkg�s:


%
 !
%
zRunModuleTestCase._del_pkgcCsjd}|d|7<|d|d<|d}tjj|j|d�}||d<|rf|d|7<dS)N�crrrr)rPrtrur")r4�ns�	alter_sysZchar_to_add�specZnew_specr:r:r;�_fix_ns_for_legacy_pycs


z(RunModuleTestCase._fix_ns_for_legacy_pycc
s�|jt|d|d|�\}}�}t��tj�}|jd�d|d|jd�jd�dd	|i��r�|jd
|ddd
di���fdd�}	z�tdkr�t	d��|j
|	|�tj�t
��tj|�tjsbt|�t��tj�tdkrBt	d��|j|��|j
|	|�Wd|j|�Xtdkr�t	d�dS)NrardrrrrrhrrrrTrcst�|d��S)Nr�)r)rH)r�rNr:r;rI4sz2RunModuleTestCase._check_module.<locals>.create_nsrzRunning from source:zRunning from compiled:zModule executed successfully)rzrGrrJr)rKr%�
rpartitionrrorCrP�invalidate_caches�
__import__r\r}r�dont_write_bytecoderrr�r�)
r4rwr�rardr`rSrOr6rIr:)r�rNr;�
_check_modulesF
	





	



zRunModuleTestCase._check_modulecs�|jt|dd|d|�\}}}}|jd�d�t|�tj�}	|	jd|d|dtjj	|�d	�d
|i��r�|	jd|dd
dd
i���fdd�}
z�t
dkr�td��|j|
|	�tj
�t|�tj|�tjstt|�t|�t
dkrJtd��tj
�|j|	��|j|
|	�Wd|j|�Xt
dkr�td�dS)N�__main__rardrhrrrrrrrrTrcst�|d��S)Nr�)r)rH)r�rxr:r;rI]sz3RunModuleTestCase._check_package.<locals>.create_nsrzRunning from source:zRunning from compiled:zPackage executed successfully)rzrGr�rrJr)rKrPrt�cache_from_sourcerrorCr�r�r\r}rr�rrr�r�)r4rwr�rardr`rSrNrOr6rIr:)r�rxr;�_check_packageGsH






	



z RunModuleTestCase._check_packagecCs@|dkrtd��d}|}x/t|�D]!}|}tjj||�}q1Wtjj|d�}t|�tdkr�td|�tjj|d�}	|j|	�tdkr�td|	�tjj|	d�}
|j|
�tdkrtd	|
�tjj|
d
�}t|�tdkr<td|�dS)Nrz$Relative module test needs depth > 1rez
sibling.pyz  Added sibling module:�unclez  Added uncle package:Zcousinz  Added cousin package:z	nephew.pyz  Added nephew module:)	�
ValueError�ranger\r^r_rrrorc)r4�base_dirrvrwrxZ
module_dir�iZ
parent_dirZ
sibling_fnameZ	uncle_dirZ
cousin_dirZnephew_fnamer:r:r;�_add_relative_modulesps.






z'RunModuleTestCase._add_relative_modulesNcCs�d}|j||�\}}}}|dkr9|}n|}z^|j|||�|jd�d}	tdkr�td|�t|d|�}
|j|
d|�|j|
d|	�|jd	|
�|jd
|
�~
tj	�t
|�tj|�t
js�t|�t|�tdkr5td|�tj	�t|d|�}|j|d|�|j|d|	�|jd	|�|jd
|�~Wd|j|�Xtdkr�td�dS)
Nza\
from __future__ import absolute_import
from . import sibling
from ..uncle.cousin import nephew
rhrrzRunning from source:rBrrZsiblingZnephewzRunning from compiled:zModule executed successfully)rzr�r�rrorr/�assertInrPr�r�r\r}rr�rrr�)r4rwrB�contentsr`rSrNrO�
expected_namerxZd1Zd2r:r:r;�_check_relative_imports�sD	



	



z)RunModuleTestCase._check_relative_importscCsAx:td�D],}tdkr,td|�|j|�q
WdS)N�rzTesting package depth:)r�rror�)r4rwr:r:r;�test_run_module�s
z!RunModuleTestCase.test_run_modulecCsPxItdd�D]8}tdkr/td|�|j|dddd�qWdS)Nrr�zTesting package depth:raTrd)r�rror�)r4rwr:r:r;�$test_run_module_in_namespace_package�s
z6RunModuleTestCase.test_run_module_in_namespace_packagecCsDx=tdd�D],}tdkr/td|�|j|�qWdS)Nrr�zTesting package depth:)r�rror�)r4rwr:r:r;�test_run_package�s
z"RunModuleTestCase.test_run_packagec-Cs�|jddd�}|\}}}}|jdd�}|j|j|�tjj|dd�}ttt	t
f}x1|D])}|j}|j|��dj
|�}	t|dd	d
��}
|
j|	�WdQRXyt|�Wn;|k
r"}z|jdt
|��WYdd}~XnX|jdj
|��yt|d
�Wn;|k
r�}z|jdt
|��WYdd}~XnX|jdj
|��WdQRXq}WdS)NrMrr�z	.__main__rez__init__.pyz raise {0}('{0} in __init__.py.')Zwt�encoding�asciizfinding speczNothing raised; expected {}z
.submodule)rz�replace�
addCleanupr�r\r^r_rV�AttributeError�	TypeErrorr�rZsubTest�formatrqrrrZassertNotInrW)r4rr`�_rNZinit�
exceptions�	exceptionr"rvry�errr:r:r;� test_run_package_init_exceptions�s,
	))z2RunModuleTestCase.test_run_package_init_exceptionscCse|jdd�\}}}}z2t|�|jtd��t|�WdQRXWd|j|�XdS)NrMrzfound in sys\.modules)rzr��assertWarnsRegex�RuntimeWarningrr�)r4r`r�rNr:r:r;�test_submodule_imported_warning�s
	
z1RunModuleTestCase.test_submodule_imported_warningcCs�|jddd�\}}}}|j|j|�|jdd�}t|�|j|tj�tj	��tj
dt�t|�WdQRXt|�|j
td��t|�WdQRXdS)NrMrr�z	.__main__�errorzfound in sys\.modules)rzr�r�r�r�r�rr@�warnings�catch_warnings�simplefilterr�rr�)r4r`r�rN�packager:r:r;� test_package_imported_no_warning�s!


z2RunModuleTestCase.test_package_imported_no_warningcCsJxCtdd�D]2}tdkr/td|�|j|dd�qWdS)Nrr�zTesting package depth:rdT)r�rror�)r4rwr:r:r;�%test_run_package_in_namespace_package�s
z7RunModuleTestCase.test_run_package_in_namespace_packagecCsJxCtdd�D]2}tdkr/td|�|j|dd�qWdS)Nrr�zTesting package depth:raT)r�rror�)r4rwr:r:r;�test_run_namespace_package�s
z,RunModuleTestCase.test_run_namespace_packagecCsPxItdd�D]8}tdkr/td|�|j|dddd�qWdS)Nrr�zTesting package depth:raTrd)r�rror�)r4rwr:r:r;�/test_run_namespace_package_in_namespace_package�s
zARunModuleTestCase.test_run_namespace_package_in_namespace_packagecCsGx@td�D]2}tdkr,td|�|j|dd�q
WdS)Nr�rzTesting package depth:r�T)r�rror�)r4rwr:r:r;�test_run_module_alter_syss
z+RunModuleTestCase.test_run_module_alter_syscCsJxCtdd�D]2}tdkr/td|�|j|dd�qWdS)Nrr�zTesting package depth:r�T)r�rror�)r4rwr:r:r;�test_run_package_alter_syss
z,RunModuleTestCase.test_run_package_alter_syscCsDx=tdd�D],}tdkr/td|�|j|�qWdS)N��rz"Testing relative imports at depth:)r�rror�)r4rwr:r:r;�test_explicit_relative_imports
z/RunModuleTestCase.test_explicit_relative_importcCsGx@tdd�D]/}tdkr/td|�|j|d�qWdS)Nr�r�rz'Testing main relative imports at depth:r�)r�rror�)r4rwr:r:r;�test_main_relative_imports
z+RunModuleTestCase.test_main_relative_importcs�d}d�|jt|�\}}�}t��tj�}|jd�d|dtjj|�d�j	d�dd	|i���fd
d�}z|j
||�Wd|j|�XdS)Nrz*And now for something completely differentrrrrrhrrcst�|��S)N)r)rH)rNrBr:r;rI$sz2RunModuleTestCase.test_run_name.<locals>.create_ns)rzrGrrJr)rKrPrtr�r�rCr�)r4rwr`rSrOr6rIr:)rNrBr;�
test_run_names

zRunModuleTestCase.test_run_namecCs�ddl}d}d}ddg}d|dg}t�}t�}x�td|�D]u}d	j|g|�}	|j|	�x#|D]}
|j|	d	|
�q�Wx#|D]}
|j|	d	|
�q�WqVWd	j|g|�}	|j|	�|j|	d
�|jd|�\}}}
}|j|j|�x.td|d�D]}|j|d|�qHWx\|j	|g�D]H\}}
}|j
|tjj
�|r�|j|
�qx|j|
�qxW|jt|�d|�|jt|�d|�dS)
Nrr�rer�zuncle.cousinzuncle.cousin.nephewz.siblingrrhz.runpy_testrMr�)�pkgutilr3r�r_�addrzr�r�r�Z
walk_packagesZassertIsInstancerPrQ�
FileFinderr}r/�len)r4r�Z	max_depth�	base_nameZpackage_suffixesZmodule_suffixesZexpected_packagesZexpected_modulesrwrxr"r`rSrNrO�finderZispkgr:r:r;�test_pkgutil_walk_packages+s:		



"	
z,RunModuleTestCase.test_pkgutil_walk_packages)rrDrErXrZr[rcrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r:r:r:r;rU�s:'((
rUc@s�eZdZdddd�Zddddd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zedd��Zdd�ZdS) �RunPathTestCaseNFcCs%|dkrt}t||||�S)N)rGr
)r4�
script_dirZscript_basenamerv�omit_suffixr:r:r;�_make_test_scriptQs	z!RunPathTestCase._make_test_scriptTc
sV�fdd�}tj�}	|dkr3|}
n|}
|rotjj|
|�}|j}|syd|_n
d}}|	jd|d|d|ddd|d	|d
dddi�|j||	�d
���fdd�}|r!|dkr!tjj�|�}|sd|_||	d<�|	d<�j	d�d|	d<|j||	�dS)Ncs
t�|�S)N)r)rH)�script_namer:r;rI\sz0RunPathTestCase._check_script.<locals>.create_nsrrrrrMrrrTrzprove.issue15230.is.fixedcst�|��S)N)r)rH)rBr�r:r;rIysrhr)
rJr)rPrtrur%r.rKrCr�)
r4r�r�Z
expected_fileZexpected_argv0rN�expect_spec�check_loaderrIr6Z	spec_namerOZ
mod_cachedr:)rBr�r;�
_check_scriptXsB			

		

zRunPathTestCase._check_scriptcCs)tj|�}|jt|t|�dS)N)�re�escape�assertRaisesRegexrVr)r4r��msgr:r:r;�_check_import_error�sz#RunPathTestCase._check_import_errorcCsKt��;}d}|j||�}|j|d||dd�WdQRXdS)N�scriptz
<run_path>r�F)rr�r�)r4r�rNr�r:r:r;�test_basic_script�s
z!RunPathTestCase.test_basic_scriptcCsQt��A}d}|j||dd�}|j|d||dd�WdQRXdS)Nr�r�Tz
<run_path>r�F)rr�r�)r4r�rNr�r:r:r;�test_basic_script_no_suffix�s	z+RunPathTestCase.test_basic_script_no_suffixcCsmt��]}d}|j||�}tj|dd�}tj|�|j|d||dd�WdQRXdS)Nr��doraiseTz
<run_path>r�F)rr��
py_compile�compiler\r}r�)r4r�rNr��
compiled_namer:r:r;�test_script_compiled�s
z$RunPathTestCase.test_script_compiledcCsKt��;}d}|j||�}|j|d||d|�WdQRXdS)Nr�z
<run_path>rN)rr�r�)r4r�rNr�r:r:r;�test_directory�s
zRunPathTestCase.test_directorycCs�t��r}d}|j||�}tj|dd�}tj|�tjswt|�}|j	|d||d|�WdQRXdS)Nr�r�Tz
<run_path>rN)
rr�r�r�r\r}rr�rr�)r4r�rNr�r�Z
legacy_pycr:r:r;�test_directory_compiled�s
	z'RunPathTestCase.test_directory_compiledc
CsIt��9}d}|j||�}d|}|j||�WdQRXdS)N�not_mainz"can't find '__main__' module in %r)rr�r�)r4r�rNr�r�r:r:r;�test_directory_error�s

z$RunPathTestCase.test_directory_errorcCsit��Y}d}|j||�}t|d|�\}}|j|d||d|dd�WdQRXdS)Nr��test_zipz
<run_path>rNr�F)rr�rr�)r4r�rNr��zip_name�fnamer:r:r;�test_zipfile�szRunPathTestCase.test_zipfilecCs~t��n}d}|j||�}tj|dd�}t|d|�\}}|j|d||d|dd�WdQRXdS)	Nr�r�Tr�z
<run_path>rNr�F)rr�r�r�rr�)r4r�rNr�r�r�r�r:r:r;�test_zipfile_compiled�s	z%RunPathTestCase.test_zipfile_compiledcCsat��Q}d}|j||�}t|d|�\}}d|}|j||�WdQRXdS)Nr�r�z"can't find '__main__' module in %r)rr�rr�)r4r�rNr�r�r�r�r:r:r;�test_zipfile_error�s
z"RunPathTestCase.test_zipfile_errorc	Cs�t��s}t��`}d}d|}|j|||�}t|d|�\}}d}|jt|t|�WdQRXWdQRXdS)Nr�z import runpy
runpy.run_path(%r)
r�zrecursion depth exceeded)rr�rr��RecursionErrorr)	r4r�Z	dummy_dirrNrvr�r�r�r�r:r:r;�test_main_recursion_error�sz)RunPathTestCase.test_main_recursion_errorcCsxt��h}tjj|d�}t|ddd��}|jd�WdQRXt|�}|j|dd�WdQRXdS)Nz	script.pyrgr��latin1u%
#coding:latin1
s = "non-ASCII: hé"
�sunon-ASCII: hé)rr\r^r_rqrrrr/)r4r��filename�frr:r:r;�
test_encoding�szRunPathTestCase.test_encoding)rrDrEr�r�r�r�r�r�r�r�r�r�r�r�rr�r�r:r:r:r;r�Ns+	
r�r�)*Zunittestr\Zos.pathrr�rmrPZimportlib.machinery�importlib.utilr�r�Ztest.supportrrrrrrrZtest.support.script_helperr	r
rrrr
rrrrGZimplicit_namespacer?�dictrJrKr!ZTestCaserFrUr�r�mainr:r:r:r;�<module>sF$4""

O'���