Your IP : 216.73.216.213


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-1.pyc



��Yf�{�@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)zbCheck two namespaces match.

           Ignores any unspecified interpreter created names
        �__rrNz	__spec__.)�copy�list�
startswith�endswith�popZassertIsNone�loader�assertEqual�type�CHECKED_SPEC_ATTRIBUTES�getattr�set)	�self�	result_ns�expected_ns�kZresult_specZ
expected_spec�attrZactualZexpected�r9�4/opt/alt/python35/lib64/python3.5/test/test_runpy.py�assertNamespaceMatchesMs2


z)CodeExecutionMixin.assertNamespaceMatchesc
Cst�}|j�}|d}tjd}tjj||�}|d�}|j||�|jtjd|�|jtjj||�|�d|i}	||d<||	�}|j||	�|j||�|jtjd|�|jtjj||�|�dS)z�Check that an interface runs the example code correctly

           First argument is a callable accepting the initial globals and
           using them to create the actual namespace
           Second argument is the expected result
        rrN�sentinel)	�objectr)r�argv�modules�getr;ZassertIsZassertIsNot)
r4Zcreate_namespaceZexpected_namespacer<r6�run_nameZsaved_argv0Z	saved_modr5Z
initial_nsr9r9r:�check_code_executionus 	


z'CodeExecutionMixin.check_code_executionN)r�
__module__�__qualname__r1r;rBr9r9r9r:r!As	(r!c@s.eZdZdZdd�Zdd�ZdS)�ExecutionLayerTestCasez9Unit tests for runpy._run_code and runpy._run_module_codecCs?tj�}|jddi�dd�}|j||�dS)Nr cSstti|�S)N)r
�example_source)�init_globalsr9r9r:�	create_ns�sz7ExecutionLayerTestCase.test_run_code.<locals>.create_ns)�example_namespacer)�updaterB)r4r6rHr9r9r:�
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)rrF)rG)�mod_name�mod_specr9r:rH�sz>ExecutionLayerTestCase.test_run_module_code.<locals>.create_ns)�	importlib�	machinery�
ModuleSpecrIr)rJrB)r4�	mod_fnameZ
mod_loaderZmod_packager6rHr9)rMrNr:�test_run_module_code�s&	
z+ExecutionLayerTestCase.test_run_module_codeN)rrCrDrrKrSr9r9r9r:rE�s	rEc@s�eZdZdZdd�Zdd�Zdd�Zdd	d
�Zdddd
ddd�Zdd�Z	dd�Z
dddd
ddd�Zdddd
ddd�Zdd�Z
ddd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�ZdS);�RunModuleTestCasezUnit tests for runpy.run_modulecCs8yt|�Wntk
r"YnX|jd|�dS)NzExpected import error for )r�ImportError�fail)r4rMr9r9r:�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	.unittestZmultiprocessing)rW)r4r9r9r:�test_invalid_names�s







z$RunModuleTestCase.test_invalid_namescCs|jtd�dd�dS)Nrr)r/r)r4r9r9r:�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_fnamer9r9r:�_add_pkg_dir�s

zRunModuleTestCase._add_pkg_dirZ
runpy_testr_�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�.���)�RuntimeErrorrZ�extsepr\�realpath�tempfileZmkdtempr�printr�insertr]ra�open�write�closerO�util�spec_from_file_location)r4�source�depthZmod_baser_rb�pkg_nameZ
test_fnamer^Zsub_dirZnamespace_flagsZnamespace_flagr`rR�mod_filerMrNr9r9r:�	_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)	Nrcrz  Removed sys.modules entriesrz  Removed sys.path entry�topdownFz  Removed package tree)
r*rr?r+rrlr\rZ�walk�remover]�OSError�rmdir)	r4�top�entry�root�dirs�filesr"Zex�fullnamer9r9r:�_del_pkg�s:


%
 !
%
zRunModuleTestCase._del_pkgcCsjd}|d|7<|d|d<|d}tjj|j|d�}||d<|rf|d|7<dS)N�crrrr)rOrqrrr")r4�ns�	alter_sysZchar_to_add�specZnew_specr9r9r:�_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)Nr_rbrrrrrfrrrrTrcst�|d��S)Nr�)r)rG)r�rMr9r:rH4sz2RunModuleTestCase._check_module.<locals>.create_nsrzRunning from source:zRunning from compiled:zModule executed successfully)rwrFrrIr)rJr%�
rpartitionrrlrBrO�invalidate_caches�
__import__rZrzr�dont_write_bytecoderrr�r�)
r4rtr�r_rbr^rRrNr6rHr9)r�rMr:�
_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__r_rbrfrrrrrrrrTrcst�|d��S)Nr�)r)rG)r�rur9r:rH]sz3RunModuleTestCase._check_package.<locals>.create_nsrzRunning from source:zRunning from compiled:zPackage executed successfully)rwrFr�rrIr)rJrOrq�cache_from_sourcerrlrBr�r�rZrzrr�rrr�r�)r4rtr�r_rbr^rRrMrNr6rHr9)r�rur:�_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 > 1rcz
sibling.pyz  Added sibling module:�unclez  Added uncle package:Zcousinz  Added cousin package:z	nephew.pyz  Added nephew module:)	�
ValueError�rangerZr\r]rrrlra)r4Zbase_dirrsrtruZ
module_dir�iZ
parent_dirZ
sibling_fnameZ	uncle_dirZ
cousin_dirZnephew_fnamer9r9r:�_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
rfrrzRunning from source:rArrZsiblingZnephewzRunning from compiled:zModule executed successfully)rwr�r�rrlrr/�assertInrOr�r�rZrzrr�rrr�)r4rtrA�contentsr^rRrMrN�
expected_nameruZd1Zd2r9r9r:�_check_relative_imports�sD	



	



z)RunModuleTestCase._check_relative_importscCsAx:td�D],}tdkr,td|�|j|�q
WdS)N�rzTesting package depth:)r�rrlr�)r4rtr9r9r:�test_run_module�s
z!RunModuleTestCase.test_run_modulecCsPxItdd�D]8}tdkr/td|�|j|dddd�qWdS)Nrr�zTesting package depth:r_Trb)r�rrlr�)r4rtr9r9r:�$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�rrlr�)r4rtr9r9r:�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)NrLrr�z	.__main__rcz__init__.pyz raise {0}('{0} in __init__.py.')Zwt�encoding�asciizfinding speczNothing raised; expected {}z
.submodule)rw�replace�
addCleanupr�rZr\r]rU�AttributeError�	TypeErrorr�rZsubTest�formatrnrorZassertNotInrV)r4rr^�_rMZinit�
exceptionsZ	exceptionr"rsrv�errr9r9r:� test_run_package_init_exceptions�s,
	))z2RunModuleTestCase.test_run_package_init_exceptionscCse|jdd�\}}}}z2t|�|jtd��t|�WdQRXWd|j|�XdS)NrLrzfound in sys\.modules)rwr��assertWarnsRegex�RuntimeWarningrr�)r4r^r�rMr9r9r:�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)NrLrr�z	.__main__�errorzfound in sys\.modules)rwr�r�r�r�r�rr?�warnings�catch_warnings�simplefilterr�rr�)r4r^r�rM�packager9r9r:� test_package_imported_no_warning�s!


z2RunModuleTestCase.test_package_imported_no_warningcCsJxCtdd�D]2}tdkr/td|�|j|dd�qWdS)Nrr�zTesting package depth:rbT)r�rrlr�)r4rtr9r9r:�%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:r_T)r�rrlr�)r4rtr9r9r:�test_run_namespace_package�s
z,RunModuleTestCase.test_run_namespace_packagecCsPxItdd�D]8}tdkr/td|�|j|dddd�qWdS)Nrr�zTesting package depth:r_Trb)r�rrlr�)r4rtr9r9r:�/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�rrlr�)r4rtr9r9r:�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�rrlr�)r4rtr9r9r:�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�rrlr�)r4rtr9r9r:�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�rrlr�)r4rtr9r9r:�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 differentrrrrrfrrcst�|��S)N)r)rG)rMrAr9r:rH$sz2RunModuleTestCase.test_run_name.<locals>.create_ns)rwrFrrIr)rJrOrqr�r�rBr�)r4rtr^rRrNr6rHr9)rMrAr:�
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�rcr�zuncle.cousinzuncle.cousin.nephewz.siblingrrfz.runpy_testrLr�)�pkgutilr3r�r]�addrwr�r�r�Z
walk_packagesZassertIsInstancerOrP�
FileFinderrzr/�len)r4r�Z	max_depthZ	base_nameZpackage_suffixesZmodule_suffixesZexpected_packagesZexpected_modulesrtrur"r^rRrMrN�finderZispkgr9r9r:�test_pkgutil_walk_packages+s:		



"	
z,RunModuleTestCase.test_pkgutil_walk_packages)rrCrDrrWrXrYrarwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r9r9r9r:rT�s<'((
rTc@s�eZdZdZdddd�Zddddd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zedd��Zdd �ZdS)!�RunPathTestCasezUnit tests for runpy.run_pathNFcCs%|dkrt}t||||�S)N)rFr
)r4�
script_dirZscript_basenamers�omit_suffixr9r9r:�_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)rG)�script_namer9r:rH\sz0RunPathTestCase._check_script.<locals>.create_nsrrrrrLrrrTrzprove.issue15230.is.fixedcst�|��S)N)r)rG)rAr�r9r:rHysrfr)
rIr)rOrqrrr%r.rJrBr�)
r4r�r�Z
expected_fileZexpected_argv0rM�expect_spec�check_loaderrHr6Z	spec_namerNZ
mod_cachedr9)rAr�r:�
_check_scriptXsB			

		

zRunPathTestCase._check_scriptcCs)tj|�}|jt|t|�dS)N)�re�escape�assertRaisesRegexrUr)r4r��msgr9r9r:�_check_import_error�sz#RunPathTestCase._check_import_errorcCsKt��;}d}|j||�}|j|d||dd�WdQRXdS)N�scriptz
<run_path>r�F)rr�r�)r4r�rMr�r9r9r:�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�rMr�r9r9r:�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�compilerZrzr�)r4r�rMr��
compiled_namer9r9r:�test_script_compiled�s
z$RunPathTestCase.test_script_compiledcCsKt��;}d}|j||�}|j|d||d|�WdQRXdS)Nr�z
<run_path>rM)rr�r�)r4r�rMr�r9r9r:�test_directory�s
zRunPathTestCase.test_directorycCs�t��r}d}|j||�}tj|dd�}tj|�tjswt|�}|j	|d||d|�WdQRXdS)Nr�r�Tz
<run_path>rM)
rr�r�r�rZrzrr�rr�)r4r�rMr�r�Z
legacy_pycr9r9r:�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�rMr�r�r9r9r:�test_directory_error�s

z$RunPathTestCase.test_directory_errorcCsit��Y}d}|j||�}t|d|�\}}|j|d||d|dd�WdQRXdS)Nr��test_zipz
<run_path>rMr�F)rr�rr�)r4r�rMr��zip_name�fnamer9r9r:�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>rMr�F)rr�r�r�rr�)r4r�rMr�r�r�r�r9r9r:�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�rMr�r�r�r�r9r9r:�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_dirrMrsr�r�r�r�r9r9r:�test_main_recursion_error�sz)RunPathTestCase.test_main_recursion_errorcCsxt��h}tjj|d�}t|ddd��}|jd�WdQRXt|�}|j|dd�WdQRXdS)Nz	script.pyrer��latin1u%
#coding:latin1
s = "non-ASCII: hé"
�sunon-ASCII: hé)rrZr\r]rnrorr/)r4r��filename�frr9r9r:�
test_encoding�szRunPathTestCase.test_encoding)rrCrDrr�r�r�r�r�r�r�r�r�r�r�r�rr�r�r9r9r9r:r�Ns +	
r�r�)*ZunittestrZZos.pathrr�rkrO�importlib.machinery�importlib.utilr�r�Ztest.supportrrrrrrrZtest.support.script_helperr	r
rrrr
rrrrFZimplicit_namespacer>�dictrIrJr!ZTestCaserErTr�r�mainr9r9r9r:�<module>sF$4""

O'���