HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //proc/self/root/opt/alt/python312/lib64/python3.12/test/__pycache__/test_runpy.cpython-312.pyc
�

~h�eч��N�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZmZmZddlmZmZmZddlmZmZddlmZmZddlZddlm Z m!Z!m"Z"m#Z#dZ$ddddddd�Z%eed	d
gejLddde'e%dd
d��d�Z(e(jSe%�Gd�d�Z*Gd�dejVe*�Z,Gd�dejVe*�Z-Gd�dejVe*�Z.Gd�dejV�Z/e0dk(rejb�yy)�N)�
no_tracing�verbose�requires_subprocess�requires_resource)�forget�make_legacy_pyc�unload)�create_empty_file�temp_dir)�make_script�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__zTop level assignmentzLower level referenceF�z<run>)�xr�
__loader__)�sys�runpy�result�	run_argv0�run_name_in_sys_modules�module_in_sys_modules�nestedc� �eZdZgd�Zd�Zd�Zy)�CodeExecutionMixin)�name�parent�origin�cached�has_location�submodule_search_locationsc� �|j�}|j�}t|�D]W}|jd�s�|jd�s�'||vr|j	|�||dvs�D|dj	|��Y|j	d�}|j	d�}|�|j|�n�|j�8|jt|j�t|j��|jD]5}d|z}|t||�f}|t||�f}|j||��7|jt|�t|��|D]"}|||f}|||f}|j||��$y)zbCheck two namespaces match.

           Ignores any unspecified interpreter created names
        �__r!rNz	__spec__.)�copy�list�
startswith�endswith�pop�assertIsNone�loader�assertEqual�type�CHECKED_SPEC_ATTRIBUTES�getattr�set)	�self�	result_ns�expected_ns�k�result_spec�
expected_spec�attr�actual�expecteds	         �6/opt/alt/python312/lib64/python3.12/test/test_runpy.py�assertNamespaceMatchesz)CodeExecutionMixin.assertNamespaceMatchesPs����N�N�$�	�!�&�&�(���i��	/�A��|�|�D�!�a�j�j��&6��K�'��M�M�!�$��K��1�1��h�'�+�+�A�.�	/� �m�m�J�/��#���
�3�
�� ����k�*��#�#�/�� � ��k�&8�&8�!9�!%�m�&:�&:�!;�=��4�4�
3���$�&���W�[�$�7�8���w�}�d�;�<��� � ���2�	
3�	
����Y���[�)9�:��	/�A���1��&�F��;�q�>�*�H����V�X�.�	/�c��t�}|j�}|d}tjd}tjj||�}|d�}|j
||�|jtjd|�|jtjj||�|�d|i}	||d<||	�}|j||	�|j
||�|jtjd|�|jtjj||�|�y)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�getrB�assertIs�assertIsNot)
r8�create_namespace�expected_namespacerEr:�run_name�saved_argv0�	saved_modr9�
initial_nss
          rA�check_code_executionz'CodeExecutionMixin.check_code_executionxs���8��(�-�-�/���z�*���h�h�q�k���K�K�O�O�H�h�7�	�$�T�*�	��#�#�I�{�;��
�
�c�h�h�q�k�;�/��
�
�c�k�k�o�o�h��9�9�E� �(�+�
�"*��J��$�Z�0�	�����J�/��#�#�I�{�;��
�
�c�h�h�q�k�;�/��
�
�c�k�k�o�o�h��9�9�ErCN)r�
__module__�__qualname__r5rBrR�rCrAr#r#Ds��M��&/�PFrCr#c��eZdZdZd�Zd�Zy)�ExecutionLayerTestCasez9Unit tests for runpy._run_code and runpy._run_module_codec�|�tj�}|jddi�d�}|j||�y)Nrc�$�tti|�S�N)r�example_source)�init_globalss rA�	create_nsz7ExecutionLayerTestCase.test_run_code.<locals>.create_ns�s���^�R��>�>rC)�example_namespacer,�updaterR)r8r:r]s   rA�
test_run_codez$ExecutionLayerTestCase.test_run_code�s=��'�,�,�.������$�
�	�	?��!�!�)�[�9rCc�����d�d}d}d}tjj�||���tj	�}|j�|||�|ddd����fd�}|j
||�y)	Nz
<Nonsense>zSome other nonsensezNow you're just being silly�)r&r2T)rrrrrrrr c�(��tt|���SrZ)rr[)r\�mod_name�mod_specs ��rAr]z>ExecutionLayerTestCase.test_run_module_code.<locals>.create_ns�s���#�N�$0�$,�$,�.�
.rC)�	importlib�	machinery�
ModuleSpecr^r,r_rR)r8�	mod_fname�
mod_loader�mod_packager:r]rdres      @@rA�test_run_module_codez+ExecutionLayerTestCase.test_run_module_code�s������)�	�2�
����&�&�1�1�(�9B�9C�2�E��(�,�,�.����� �!�$�&� �"�'+�%)�	
�		�	.�
	
�!�!�)�[�9rCN)rrSrTrr`rlrUrCrArWrW�s��C�:�:rCrWc���eZdZdZd�Zd�Zd�Zdd�Zd ddd�d�Zd	�Z	d
�Z
dddd�d�Zdddd�d�Zd
�Z
d!d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)"�RunModuleTestCasezUnit tests for runpy.run_modulec�b�	t|�|jd|z�y#t$rYywxYw)NzExpected import error for )r�fail�ImportError)r8rds  rA�expect_import_errorz%RunModuleTestCase.expect_import_error�s7��	?��x� �
�I�I�2�X�=�>���	��	�s�"�	.�.c�6�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�y)
Nrzsys.imp.ericzos.path.halfza.beez.howardz..eatenz.test_runpyz	.unittest�multiprocessing)rr�r8s rA�test_invalid_namesz$RunModuleTestCase.test_invalid_names�s���� � ��'�� � ��0�� � ��0�� � ��)�� � ��+�� � ��+�� � ��/�� � ��-�� � �!2�3rCc�@�|jtd�dd�y)Nrr)r3rrus rA�test_library_modulez%RunModuleTestCase.test_library_module�s������G�,�Z�8�'�BrCFc��tj|�|rytjj|d�}t	|�|S)N�__init__.py)�os�mkdir�path�joinr
)r8�pkg_dir�	namespace�	pkg_fnames    rA�_add_pkg_dirzRunModuleTestCase._add_pkg_dir�s6��
��������G�G�L�L��-�8�	��)�$��rC�r��parent_namespacesc��|s|r
|std��d}|tjzdz}tjj	tj��x}}	tdkDrtd|	�tjjd|�tdkDrtdtjd�|ro|g|z}
||
d<|
D]_}tjj|	|�}	|j|	|�}tdkDrtd	|	�tdkDs�Ttd
|��atjj|	|�}
t|
d�5}|j|�ddd�tdkDrtd
|
�|dz|z|z}tj j#||
�}||
||fS#1swY�OxYw)
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~r��open�writerf�util�spec_from_file_location)r8�source�depth�mod_baser�r��pkg_name�
test_fnamer�sub_dir�namespace_flags�namespace_flagr�ri�mod_filerdres                 rA�	_make_pkgzRunModuleTestCase._make_pkg�s���
�*�E�� 3�4�
4�"���b�i�i�'��,�
��G�G�,�,�X�-=�-=�-?�@�@��'��Q�;��2�G�<�������7�#��Q�;��3�S�X�X�a�[�A��0�1�E�9�O�"+�O�B��"1�
?���'�'�,�,�w��9�� �-�-�g�~�F�	��Q�;��&8�'� B��Q�;��l�I� >�	
?�
�G�G�L�L��*�5�	�
�)�S�
!�	#�X��N�N�6�"�	#��Q�;��l�I�6��S�L�%�'�(�2���>�>�9�9�(�:C�E���	�8�X�5�5�
	#�	#�s�F5�5F>c��ttj�D]%}|jd�s�tj|=�'tdkDrtd�tjd=tdkDrtd�tj|d��D]~\}}}|D]6}	tjtjj||���8|D]8}tjj||�}	tj|��:��	tj|�tdkDrtd�yy#t$r}tdkDrt|�Yd}~��d}~wwxYw#t$r}tdkDrt|�Yd}~��d}~wwxYw#t$r#}tdkDrt|�Yd}~yYd}~yd}~wwxYw)	Nr�rz  Removed sys.modules entriesrz  Removed sys.path entryF)�topdownz  Removed package tree)
r-rrHr.rr�r}r{�walk�remover~�OSError�rmdir)	r8�top�entry�root�dirs�filesr$�ex�fullnames	         rA�_del_pkgzRunModuleTestCase._del_pkg�sg���#�+�+�&�	'�E�����0��K�K��&�	'��Q�;��=�>��H�H�Q�K��Q�;��8�9�!#����e�!<�	.��D�$���
.��.��I�I�b�g�g�l�l�4��6�7�
.�
�
.���7�7�<�<��d�3��.��H�H�X�&�
.�
	.�	&��H�H�S�M���{�E�":�;�{���.���{�E�"�I���.���.���{�E�"�I���.��
�	&���{�E�"�I�I�{��	&�sH�3D?�:E)�)F�?	E&�E!�!E&�)	F�2F�F�	F?�F:�:F?c��d}|dxx|z
cc<|d|d<|d}tjj|j|d�}||d<|r|dxx|z
cc<yy)N�crrrr)rfr�r�r$)r8�ns�	alter_sys�char_to_add�spec�new_specs      rA�_fix_ns_for_legacy_pycz(RunModuleTestCase._fix_ns_for_legacy_pycsm����
�:��+�%���j�>��<���*�~���>�>�9�9�$�)�)�:<�Z�.�J��!��:����{�O�{�*�O�rCc�8��
�|jt|||��\}}�
}t�
�tj	�}|j�
||j�
jd�d|d���r|j|ddd����
fd�}		tdkDrtd	�
�|j|	|�tj�t�
�tj|�t j"sct%|�t'�
�tj�tdkDrtd
�
�|j)|��|j|	|�|j+|�tdkDrtd�yy#|j+|�wxYw)Nr�r�r�rrrrrT�rrr c� ��t�|���S�N�r��r)r\r�rds ��rAr]z2RunModuleTestCase._check_module.<locals>.create_ns6�����h��	�J�JrCr�Running from source:�Running from compiled:�Module executed successfully)r�r[rr^r,r_r'�
rpartitionrr�rRrf�invalidate_caches�
__import__r{r�r�dont_write_bytecoderr	r�r�)r8r�r�r�r�rrirer:r]rds  `       @rA�
_check_modulezRunModuleTestCase._check_module!sl����~�~�n�e�(1�0A��C�	/���H�h�	�x��'�,�,�.����� �!�"�/�/�#�.�.�s�3�A�6� �
�	�����&�+/�)-� �
�
	K�	#���{�E�"8�(�C��%�%�i��=��'�'�)��x� ��I�I�i� ��*�*��	�*��x� ��+�+�-��Q�;��&>�� I��+�+�K��C��)�)�)�[�A��M�M�'�"��Q�;��<�=�;��
�M�M�'�"�s
�CF�Fc�d���|jt|d||��\}}}}|jd�d�t|�tj�}	|	j
||tjj|��|d���r|	j
|ddd����fd�}
	td	kDrtd
��|j|
|	�tj�t|�tj |�t"j$sct'|�t)|�td	kDrtd��tj�|j+|	��|j|
|	�|j-|�td	kDrtd�yy#|j-|�wxYw)
N�__main__r�r�rr�Tr�c� ��t�|���Sr�r�)r\r�r�s ��rAr]z3RunModuleTestCase._check_package.<locals>.create_ns_r�rCrr�r�zPackage executed successfully)r�r[r�rr^r,r_rfr��cache_from_sourcerr�rRr�r�r{r�rr�rr	r�r�)r8r�r�r�r�rrirdrer:r]r�s  `        @rA�_check_packagez RunModuleTestCase._check_packageIs~����~�~�n�e�Z�(1�0A��C�	/���H�h��&�&�s�+�A�.���x��'�,�,�.����� �!�#�.�.�:�:�9�E�#� �
�	�����&�+/�)-� �
�
	K�	#���{�E�"8�(�C��%�%�i��=��'�'�)��x� ��I�I�i� ��*�*��	�*��x� ��Q�;��&>�� I��+�+�-��+�+�K��C��)�)�)�[�A��M�M�'�"��Q�;��=�>�;��
�M�M�'�"�s
�'CF�F/c��|dkrtd��d}|}t|�D]$}|}tjj	||�}�&tjj	|d�}t|�tdkDrtd|�tjj	d�}	|j|	�tdkDrtd|	�tjj	|	d�}
|j|
�tdkDrtd	|
�tjj	|
d
�}t|�tdkDr
td|�yy)Nrz$Relative module test needs depth > 1r�z
sibling.pyz  Added sibling module:�unclez  Added uncle package:�cousinz  Added cousin package:z	nephew.pyz  Added nephew module:)	�
ValueError�ranger{r}r~r
rr�r�)r8�base_dirr�r�r��
module_dir�i�
parent_dir�
sibling_fname�	uncle_dir�
cousin_dir�nephew_fnames            rA�_add_relative_modulesz'RunModuleTestCase._add_relative_modulesrs���A�:��C�D�D�"���
��u��	<�A�#�J������j�(�;�J�	<������Z��>�
��-�(��Q�;��7��G��G�G�L�L��W�5�	����)�$��Q�;��6�	�B��W�W�\�\�)�X�6�
����*�%��Q�;��7��D��w�w�|�|�J��<���,�'��Q�;��6��E�;rCNc��d}|j||�\}}}}|�|}n|}	|j|||�|jd�d}	tdkDrt	d|�t||��}
|j
|
d|�|j
|
d|	�|jd	|
�|jd
|
�~
tj�t|�tj|�tjs�t|�t!|�tdkDrt	d|�tj�t||��}|j
|d|�|j
|d|	�|jd	|�|jd
|�~|j#|�tdkDrt	d�yy#|j#|�wxYw)
Nza\
from __future__ import absolute_import
from . import sibling
from ..uncle.cousin import nephew
r�rrr�)rNrr�sibling�nephewr�r�)r�r�r�rr�rr3�assertInrfr�r�r{r�rr�rr	r�)r8r�rN�contentsrrirdre�
expected_namer��d1�d2s            rA�_check_relative_importsz)RunModuleTestCase._check_relative_imports�s������~�~�h��.�	/���H�h���$�M�$�M�	#��&�&�w��%�@��*�*�3�/��2�H���{�E�"8�(�C��H�x�8�B����R�
�^�]�;����R�
�.��9��M�M�)�R�(��M�M�(�B�'���'�'�)��x� ��I�I�i� ��*�*��	�*��x� ��Q�;��&>�� I��+�+�-���8�<��� � ��J���?�� � ��M�!2�H�=��
�
�i��,��
�
�h��+���M�M�'�"��Q�;��<�=�;��
�M�M�'�"�s�E7G�Gc�p�td�D](}tdkDrtd|�|j|��*y)N�r�Testing package depth:�r�rr�r��r8r�s  rA�test_run_modulez!RunModuleTestCase.test_run_module�s4���1�X�	&�E���{�E�":�E�B����u�%�	&rCc�x�tdd�D]+}tdkDrtd|�|j|dd���-y�Nrr�r�Tr�r�r�s  rA�$test_run_module_in_namespace_packagez6RunModuleTestCase.test_run_module_in_namespace_package�s?���1�a�[�	N�E���{�E�":�E�B����u����M�	NrCc�r�tdd�D](}tdkDrtd|�|j|��*y)Nrr�r��r�rr�r�r�s  rA�test_run_packagez"RunModuleTestCase.test_run_package�s6���1�a�[�	'�E���{�E�":�E�B�����&�	'rCc	�j�|jddd�}|\}}}}|jdd�}|j|j|�tj
j
|dd�}ttttf}|D]�}|j}|j|�5dj|�}	t|dd	�
�5}
|
j|	�ddd�	t!|�|j#dj|��	t!|d
z�|j#dj|��ddd���y#1swY�oxYw#|$r%}|j%dt|��Yd}~�kd}~wwxYw#|$r%}|j%dt|��Yd}~�id}~wwxYw#1swY��0xYw)Nrbrr��	.__main__r�rzz raise {0}('{0} in __init__.py.')�wt�ascii��encodingzNothing raised; expected {}zfinding specz
.submodule)r��replace�
addCleanupr�r{r}r~rq�AttributeError�	TypeErrorr�r�subTest�formatr�r�rrp�assertNotIn)r8rr�_rd�init�
exceptions�	exceptionr$r�r��errs            rA� test_run_package_init_exceptionsz2RunModuleTestCase.test_run_package_init_exceptions�s�������A�z�2��"(����H�a��#�#�K��4������
�
�w�/��w�w�|�|�G�_�m�D��!�>�9�j�I�
�#�	J�I��%�%�D����d�#�
J�;�B�B�4�H���$��w�7�+�8��N�N�6�*�+�J��x�(��I�I�;�B�B�4�H�I�J��x�,�6�7��I�I�;�B�B�4�H�I�
J�
J�	J�+�+��!�B��$�$�^�V�C�[�A�A��B��!�B��$�$�^�V�C�[�A�A��B��
J�
J�sx�" F(�E�F(�E�( F(�	E;� F(�E�F(�E8�E3�.F(�3E8�8F(�;F%�F �F(� F%�%F(�(F2	c��|jdd�\}}}}	t|�|jtd�5t	|�ddd�|j|�y#1swY�xYw#|j|�wxYw)Nrbr�found in sys\.modules)r�r��assertWarnsRegex�RuntimeWarningrr�)r8rr�rds    rA�test_submodule_imported_warningz1RunModuleTestCase.test_submodule_imported_warning�su��"&�.�.��Q�"7����H�a�	#��x� ��&�&�~�,�.�
%��8�$�
%�
�M�M�'�"�	
%�
%��
�M�M�'�"�s"�!A,�A �A,� A)�%A,�,A?c��|jddd�\}}}}|j|j|�|jdd�}t	|�|j|tj�tj�5tjdt�t|�ddd�t	|�|jtd�5t|�ddd�y#1swY�?xYw#1swYyxYw)Nrbrr�r��errorr)r�r�r�r�r�r�rrH�warnings�catch_warnings�simplefilterrrr)r8rr�rd�packages     rA� test_package_imported_no_warningz2RunModuleTestCase.test_package_imported_no_warning�s���"&�.�.��Q�
�"C����H�a�����
�
�w�/��"�"�;��3���7���
�
�g�s�{�{�+�
�
$�
$�
&�	 ��!�!�'�>�:��w��	 �	�8��
�
"�
"�>�3K�
L�	 ��w��	 �	 �	 �	 ��
	 �	 �s�&C*�C6�*C3�6C?c�v�tdd�D]*}tdkDrtd|�|j|d���,y)Nrr�r�T)r�r�r�s  rA�%test_run_package_in_namespace_packagez7RunModuleTestCase.test_run_package_in_namespace_package�s;���1�a�[�	?�E���{�E�":�E�B�������>�	?rCc�v�tdd�D]*}tdkDrtd|�|j|d���,y)Nrr�r�T)r�r�r�s  rA�test_run_namespace_packagez,RunModuleTestCase.test_run_namespace_package��;���1�a�[�	7�E���{�E�":�E�B�������6�	7rCc�x�tdd�D]+}tdkDrtd|�|j|dd���-yr�r�r�s  rA�/test_run_namespace_package_in_namespace_packagezARunModuleTestCase.test_run_namespace_package_in_namespace_package�s?���1�a�[�	O�E���{�E�":�E�B��������N�	OrCc�t�td�D]*}tdkDrtd|�|j|d���,y)Nr�rr�Tr�r�r�s  rA�test_run_module_alter_sysz+RunModuleTestCase.test_run_module_alter_syss9���1�X�	6�E���{�E�":�E�B����u���5�	6rCc�v�tdd�D]*}tdkDrtd|�|j|d���,y)Nrr�r�Tr�r�r�s  rA�test_run_package_alter_sysz,RunModuleTestCase.test_run_package_alter_sys	rrCc�r�tdd�D](}tdkDrtd|�|j|��*y)N��rz"Testing relative imports at depth:�r�rr�r�r�s  rA�test_explicit_relative_importz/RunModuleTestCase.test_explicit_relative_imports6���1�a�[�	0�E���{�E�"F��N��(�(��/�	0rCc�t�tdd�D])}tdkDrtd|�|j|d��+y)Nrrrz'Testing main relative imports at depth:r�rr�s  rA�test_main_relative_importz+RunModuleTestCase.test_main_relative_imports8���1�a�[�	<�E���{�E�"K�U�S��(�(��
�;�	<rCc����d}d�|jt|�\}}�}t��tj	�}|j�|tjj|��jd�d|d����fd�}	|j||�|j|�y#|j|�wxYw)Nrz*And now for something completely differentr�rr�c���t�|��SrZr�)r\rdrNs ��rAr]z2RunModuleTestCase.test_run_name.<locals>.create_ns&s����h��h�?�?rC)r�r[rr^r,r_rfr�r�r�rRr�)	r8r�rrirer:r]rdrNs	       @@rA�
test_run_namezRunModuleTestCase.test_run_names������?���~�~�n�e�4�	/���H�h��x��'�,�,�.����� �!�#�.�.�:�:�9�E�#�.�.�s�3�A�6� �
�	�	@�	#��%�%�i��=��M�M�'�"��D�M�M�'�"�s�B2�2Cc�$�ddl}d}d}ddg}d|dzg}t�}t�}td|�D]d}d	j|g|z�}	|j	|	�|D]}
|j	|	d	z|
z��|D]}
|j	|	d	z|
z���fd	j|g|z�}	|j	|	�|j	|	d
z�|jd|�\}}}
}|j
|j|�td|dz�D]}|j|d|��|j|g�D]�}|j||j�|j|jtjj�|j r|j#|j$��{|j#|j$���|j't)|�d|�|j't)|�d|�y)
Nrr�r�r�zuncle.cousinzuncle.cousin.nephewz.siblingrr�z.runpy_testrbr)�pkgutilr7r�r~�addr�r�r�r��
walk_packages�assertIsInstance�
ModuleInfo�
module_finderrfrg�
FileFinder�ispkgr�r$r3�len)r8r#�	max_depth�	base_name�package_suffixes�module_suffixes�expected_packages�expected_modulesr�r�r$rrirdre�
moduleinfos                rA�test_pkgutil_walk_packagesz,RunModuleTestCase.test_pkgutil_walk_packages-s
��	��	�#�	�#�^�4��0�)�j�2H�I���E���5���1�i�(�	<�E��x�x���e� 3�4�H��!�!�(�+�(�
=��!�%�%�h��n�t�&;�<�
=�'�
<�� �$�$�X��^�d�%:�;�
<�	<��8�8�Y�K�)�3�4�����h�'����X�
�5�6��~�~�b�)�,�	/���H�h�����
�
�w�/��1�i��k�*�	;�E��&�&�w��E�:�	;�!�/�/��	�:�	9�J��!�!�*�g�.@�.@�A��!�!�*�":�":�"+�"5�"5�"@�"@�
B����!�(�(����9� �'�'�
���8�	9�	
����.�/��4E�F�����-�.��3C�DrC)F)�
runpy_testrZ)rrSrTrrrrvrxr�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrr!r3rUrCrArnrn�s���)�?�
4�C��6�"'�5�6�:&�2	+�&>�&+�u�&>�P'?�',��'?�RF�.&>�P&�
N�
'�
J�8#�
 �?�
7�
O�
6�
7�
0�
<�
#�*"ErCrnc��eZdZdZ	dd�Z		dd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zeed�d���Zd�Zy)�RunPathTestCasezUnit tests for runpy.run_pathNc�.�|�t}t||||�SrZ)r[r)r8�
script_dir�script_basenamer��omit_suffixs     rA�_make_test_scriptz!RunPathTestCase._make_test_scriptTs"���>�#�F��:��!�;�0�	0rCc����
��fd�}tj�}	|�|}
n|}
|r6tjj	|
|�}|j
}|sd|_ndx}}|	j|||d||ddd��|j||	�d�
�
�fd�}|r0|�.tjj	�
|�}|sd|_||	d<�
|	d<�
jd	�d
|	d<|j||	�y)Nc���t�|�SrZ�r)r\�script_names �rAr]z0RunPathTestCase._check_script.<locals>.create_ns_s����K��6�6rCrbT)rrrrrrrr zprove.issue15230.is.fixedc���t�|��SrZr>)r\rNr?s ��rAr]z0RunPathTestCase._check_script.<locals>.create_ns|s����K��x�@�@rCrrr�rr)
r^r,rfr�r�r'r2r_rRr�)r8r?r��
expected_file�expected_argv0rd�expect_spec�check_loaderr]r:�	spec_namere�
mod_cachedrNs `           @rA�
_check_scriptzRunPathTestCase._check_script[s���	7�'�,�,�.����%�I� �I�� �~�~�=�=�i�>K�M�H�!���J��"&���$(�(�H�z����%�%�$�� �'�'+�%)�	
�		�	
�!�!�)�[�9�.��	A��8�+� �~�~�=�=�h�>K�M�H��"&���&.�K�
�#�"*��J��%-�%8�%8��%=�a�%@��M�"��!�!�)�[�9rCc�f�tj|�}|jt|t|�yrZ)�re�escape�assertRaisesRegexrqr)r8r?�msgs   rA�_check_import_errorz#RunPathTestCase._check_import_error�s#���i�i��n�����{�C��;�GrCc��t�5}d}|j||�}|j|d||d��ddd�y#1swYyxYw�N�script�
<run_path>F�rC�rr;rG�r8r8rdr?s    rA�test_basic_scriptz!RunPathTestCase.test_basic_script�sS��
�Z�	?�:��H��0�0��X�F�K����{�L�+�*��
�
?�	?�	?�	?��	�+?�Ac��t�5}d}tj|j||��}|j	|d||d��ddd�y#1swYyxYwrO)r�pathlib�Pathr;rGrTs    rA�"test_basic_script_with_path_objectz2RunPathTestCase.test_basic_script_with_path_object�sc��
�Z�	?�:��H�!�,�,�t�'=�'=�j�>F�(H�I�K����{�L�+�*��
�
?�		?�	?�	?�s�>A�Ac��t�5}d}|j||d��}|j|d||d��ddd�y#1swYyxYw)NrPT)r:rQFrRrSrTs    rA�test_basic_script_no_suffixz+RunPathTestCase.test_basic_script_no_suffix�s^��
�Z�	?�:��H��0�0��X�=A�1�C�K����{�L�+�*��
�
?�		?�	?�	?�s�-A�A
c���t�5}d}|j||�}tj|d��}t	j
|�|j
|d||d��ddd�y#1swYyxYw)NrPT��doraiserQFrR)rr;�
py_compile�compiler{r�rG)r8r8rdr?�
compiled_names     rA�test_script_compiledz$RunPathTestCase.test_script_compiled�sv��
�Z�	A�:��H��0�0��X�F�K�&�.�.�{�D�I�M��I�I�k�"����}�l�M�,�%�
�
A�	A�	A�	A�s�AA+�+A4c��t�5}d}|j||�}|j|d|||��ddd�y#1swYyxYw)Nr�rQ�rdrSrTs    rA�test_directoryzRunPathTestCase.test_directory�sS��
�Z�	>�:�!�H��0�0��X�F�K����z�<��)�H�
�
>�	>�	>�	>�rVc�$�t�5}d}|j||�}tj|d��}t	j
|�tjs!t|�}|j|d|||��ddd�y#1swYyxYw)Nr�Tr^rQre)
rr;r`rar{r�rr�rrG)r8r8rdr?rb�
legacy_pycs      rA�test_directory_compiledz'RunPathTestCase.test_directory_compiled�s���
�Z�	B�:�!�H��0�0��X�F�K�&�.�.�{�D�I�M��I�I�k�"��*�*�,�[�9�
��"�"�:�|�Z�#-��#�B�	B�	B�	B�s�A2B�Bc��t�5}d}|j||�}d|z}|j||�ddd�y#1swYyxYw)N�not_main�"can't find '__main__' module in %r)rr;rM)r8r8rdr?rLs     rA�test_directory_errorz$RunPathTestCase.test_directory_error�sO��
�Z�	6�:�!�H��0�0��X�F�K�6��C�C��$�$�Z��5�		6�	6�	6�s�,A�A	c	��t�5}d}|j||�}t|d|�\}}|j|d|||d��ddd�y#1swYyxYw)Nr��test_ziprQF�rdrD)rr;r
rG)r8r8rdr?�zip_name�fnames      rA�test_zipfilezRunPathTestCase.test_zipfile�sl��
�Z�	F�:�!�H��0�0��X�F�K�-�j�*�k�R�O�H�e����x��u�h�(0�u�
�
F�		F�	F�	F���<A�Ac	���t�5}d}|j||�}tj|d��}t	|d|�\}}|j|d|||d��ddd�y#1swYyxYw)Nr�Tr^rorQFrp)rr;r`rar
rG)r8r8rdr?rbrqrrs       rA�test_zipfile_compiledz%RunPathTestCase.test_zipfile_compiled�s���
�Z�	F�:�!�H��0�0��X�F�K�&�.�.�{�D�I�M�-�j�*�.;�=�O�H�e����x��u�h�(0�u�
�
F�
	F�	F�	F�s�AA'�'A0c��t�5}d}|j||�}t|d|�\}}d|z}|j||�ddd�y#1swYyxYw)Nrkrorl)rr;r
rM)r8r8rdr?rqrrrLs       rA�test_zipfile_errorz"RunPathTestCase.test_zipfile_error�sa��
�Z�	4�:�!�H��0�0��X�F�K�-�j�*�k�R�O�H�e�6��A�C��$�$�X�s�3�	4�	4�	4�rt�cpuc�
�t�5}t�5}d}d|z}|j|||�}t|d|�\}}|jtt
|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�z import runpy
runpy.run_path(%r)
ro)rr;r
�assertRaises�RecursionErrorr)r8r8�	dummy_dirrdr�r?rqrrs        rA�test_main_recursion_errorz)RunPathTestCase.test_main_recursion_error�s����Z�	B�:�x�z�	B�Y�!�H�-�09�:�F��0�0��X�v�N�K�-�j�*�k�R�O�H�e����n�h��A�
	B�	B�	B�	B��	B�	B�s#�A9�AA-�A9�-A6	�2A9�9Bc�*�t�5}tjj|d�}t	|dd��5}|jd�ddd�t
|�}|j|dd�ddd�y#1swY�2xYw#1swYyxYw)Nz	script.pyr��latin1r�u%
#coding:latin1
s = "non-ASCII: hé"
�sunon-ASCII: hé)rr{r}r~r�r�rr3)r8r8�filename�frs     rA�
test_encodingzRunPathTestCase.test_encoding�s���
�Z�	>�:��w�w�|�|�J��<�H��h��h�7�
�1������
�
�h�'�F����V�C�[�*<�=�	>�	>�
�
��	>�	>�s"�/B	�A=�(B	�=B	�B	�	B)NF)NTT)rrSrTrr;rGrMrUrZr\rcrfrirmrsrvrxrrr~r�rUrCrAr6r6Qs���'�49�0�6:�;?�+:�ZH�?�?�?�A�>�	B�6�F�F�4���u��B���B�	>rCr6c����eZdZdZej
dk(renejZe	e
jd���Z�fd�Z
e�d��Zd�Zd�Zd�Zd	�Zd
�Zd�Zd�Z�xZS)
�TestExitl:�win32c/�xK�t�5}tj|���ddd�y#1swYyxYw�wrZ)rrXrY)�args�kwargs�tmp_fns   rA�tmp_pathzTestExit.tmp_path�s2�����Z�	'�6��,�,�v�&�&�	'�	'�	'�s�:�.�	:�7�:c����|j�5}|dzx|_}|jtjd��t�|�|i|��ddd�y#1swYyxYw)Nzham.pyz@                    raise KeyboardInterrupt
                    )r��ham�
write_text�textwrap�dedent�super�run)r8r�r��tmpr��	__class__s     �rAr�zTestExit.runsc���
�]�]�_�		)�� �8�^�+�D�H�s��N�N������
�
�G�K��(��(�		)�		)�		)�s�AA�A$c�:�tjdg|�}tj|g|��i|�dtjd���}|j|jjd�|j�|j|j|j�y)Nz-ET)�text�stderrz
KeyboardInterrupt
)r�
executable�
subprocessr��PIPE�
assertTruer�r/r3�
returncode�
EXPECTED_CODE)r8�cmdr�r��procs     rA�assertSigIntzTestExit.assertSigIntsv���~�~�t�*�c�*���~�~�c�V�D�V�F�V��j�o�o�V��������,�,�-D�E�t�{�{�S�������$�*<�*<�=rCc�<�|j|jg�yrZ)r�r�rus rA�test_pymain_run_filezTestExit.test_pymain_run_files�����4�8�8�*�%rCc��|jj}|dz}|jtjd��|j|g|��y)Nz
run_module.pyzU                import runpy
                runpy.run_module("ham")
                ��cwd�r�r%r�r�r�r�)r8r�rs   rA�%test_pymain_run_file_runpy_run_modulez.TestExit.test_pymain_run_file_runpy_run_modulesQ���h�h�o�o���?�*�
��
����O�O��
�	
�	
���:�,�C��0rCc��|jj}|dz}|jtjd��|j|g|��y)Nzrun_module_as_main.pyz^                import runpy
                runpy._run_module_as_main("ham")
                r�r�)r8r��run_module_as_mains   rA�-test_pymain_run_file_runpy_run_module_as_mainz6TestExit.test_pymain_run_file_runpy_run_module_as_main(sS���h�h�o�o�� �#:�:���%�%��O�O��
�	
�	
���-�.�C��8rCc�V�|jddg|jj��y)N�-cz%import runpy; runpy.run_module('ham')r��r�r�r%rus rA�"test_pymain_run_command_run_modulez+TestExit.test_pymain_run_command_run_module5s)�����
�:�;������	�	
rCc�V�|jddg|jj��y)Nr��
import hamr�r�rus rA�test_pymain_run_commandz TestExit.test_pymain_run_command;s"�����4��.�D�H�H�O�O��DrCc�T�|jgd|jj��y)Nr�)�inputr�r�rus rA�test_pymain_run_stdinzTestExit.test_pymain_run_stdin>s�����"�L�d�h�h�o�o��FrCc�n�|j}|jd|jg|j��y)Nz-mr�)r�r��stemr%)r8r�s  rA�test_pymain_run_modulezTestExit.test_pymain_run_moduleAs+���h�h�����4����*��
�
��;rC)rrSrT�STATUS_CONTROL_C_EXITr�platform�signal�SIGINTr��staticmethod�
contextlib�contextmanagerr�r�rr�r�r�r�r�r�r�r��
__classcell__)r�s@rAr�r��s����&���<�<�7�"�	��m�m�^��
����'���'�

)���>��>�&�1�9�
�E�G�<rCr�r�)2r��importlib.machineryrf�importlib.util�os.pathr{rXr`rIr�r�rr�r��unittestr�test.supportrrrr�test.support.import_helperrrr	�test.support.os_helperr
r�test.support.script_helperrr
rrrrrr[�implicit_namespacerG�dictr^r_r#�TestCaserWrnr6r�r�mainrUrCrA�<module>r�s?���*����	�
��
�����T�T�F�F�>�C�
�C�C���&������
���
�%�'>�?����!��$�"��%���T�;�	�����+�,�LF�LF�^$:�X�.�.�0B�$:�NUE��)�)�+=�UE�nb>�h�'�'�);�b>�JM<�x� � �M<�`�z���H�M�M�O�rC