Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_runpy.cpython-311.opt-2.pyc
�

�Ke����L�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZmZddlmZmZmZddlmZmZddlmZmZddlZddlmZm Z m!Z!m"Z"dZ#ddddddd�Z$eed	d
gej%ddde&e$dd
d���d�Z'e'�(e$��Gd�d��Z)Gd�dej*e)��Z+Gd�dej*e)��Z,Gd�dej*e)��Z-Gd�dej*��Z.e/dkrej0��dSdS)�N)�
no_tracing�verbose�requires_subprocess)�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�ZdS)�CodeExecutionMixin)�name�parent�origin�cached�has_location�submodule_search_locationsc��	|���}|���}t|��D]j}|�d��rS|�d��r>||vr|�|��||dvr|d�|���k|�d��}|�d��}|�|�|��n�|j�:|�t|j��t|j����|j	D]A}d|z}|t||��f}|t||��f}|�||���B|�t|��t|����|D],}|||f}|||f}|�||���-dS)N�__r rz	__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	         �9/usr/local/apps/python3/lib/python3.11/test/test_runpy.py�assertNamespaceMatchesz)CodeExecutionMixin.assertNamespaceMatchesPs���	�
�N�N�$�$�	�!�&�&�(�(���i���	/�	/�A��|�|�D�!�!�
/�a�j�j��&6�&6�
/��K�'�'��M�M�!�$�$�$��K��1�1�1��h�'�+�+�A�.�.�.�� �m�m�J�/�/��#���
�3�3�
�� ����k�*�*�*�*��#�/�� � ��k�&8�!9�!9�!%�m�&:�!;�!;�=�=�=��4�
3�
3���$�&���W�[�$�7�7�8���w�}�d�;�;�<��� � ���2�2�2�2�	
����Y����[�)9�)9�:�:�:��	/�	/�A���1��&�F��;�q�>�*�H����V�X�.�.�.�.�	/�	/�c���	t��}|���}|d}tjd}tj�||��}|d��}|�||��|�tjd|��|�tj�||��|��d|i}	||d<||	��}|�||	��|�||��|�tjd|��|�tj�||��|��dS)Nrr�sentinel)	�objectr+r�argv�modules�getrA�assertIs�assertIsNot)
r7�create_namespace�expected_namespacerDr9�run_name�saved_argv0�	saved_modr8�
initial_nss
          r@�check_code_executionz'CodeExecutionMixin.check_code_executionxsE��	��8�8��(�-�-�/�/���z�*���h�q�k���K�O�O�H�h�7�7�	�$�$�T�*�*�	��#�#�I�{�;�;�;��
�
�c�h�q�k�;�/�/�/��
�
�c�k�o�o�h��9�9�9�E�E�E� �(�+�
�"*��J��$�$�Z�0�0�	�����J�/�/�/��#�#�I�{�;�;�;��
�
�c�h�q�k�;�/�/�/��
�
�c�k�o�o�h��9�9�9�E�E�E�E�ErBN)r�
__module__�__qualname__r4rArQ�rBr@r"r"DsM������M�M�M��&/�&/�&/�PF�F�F�F�FrBr"c��eZdZ	d�Zd�ZdS)�ExecutionLayerTestCasec��t���}|�ddi��d�}|�||��dS)Nrc�.�tti|��S�N)r
�example_source)�init_globalss r@�	create_nsz7ExecutionLayerTestCase.test_run_code.<locals>.create_ns�s���^�R��>�>�>rB)�example_namespacer+�updaterQ)r7r9r\s   r@�
test_run_codez$ExecutionLayerTestCase.test_run_code�s`��'�,�,�.�.������$�
�	�	�	�	?�	?�	?��!�!�)�[�9�9�9�9�9rBc����d�d}d}d}tj��||����t���}|��|||�|ddd�����fd�}|�||��dS)	Nz
<Nonsense>zSome other nonsensezNow you're just being silly�)r%r1T)rrrrrrrrc�2��tt|����SrY)rrZ)r[�mod_name�mod_specs ��r@r\z>ExecutionLayerTestCase.test_run_module_code.<locals>.create_ns�s ���#�N�$0�$,�$,�.�.�
.rB)�	importlib�	machinery�
ModuleSpecr]r+r^rQ)r7�	mod_fname�
mod_loader�mod_packager9r\rcrds      @@r@�test_run_module_codez+ExecutionLayerTestCase.test_run_module_code�s�������)�	�2�
����&�1�1�(�9B�9C�2�E�E��(�,�,�.�.����� �!�$�&� �"�'+�%)�	
�	
�		�		�		�	.�	.�	.�	.�	.�	.�
	
�!�!�)�[�9�9�9�9�9rBN)rrRrSr_rkrTrBr@rVrV�s5������C�:�:�:�:�:�:�:�:rBrVc���eZdZ	d�Zd�Zd�Zdd�Zd ddd�d�Zd	�Zd
�Z	dddd�d�Z
dddd�d�Zd
�Zd!d�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)"�RunModuleTestCasec�x�	t|��|�d|z��dS#t$rYdSwxYw)NzExpected import error for )r�fail�ImportError)r7rcs  r@�expect_import_errorz%RunModuleTestCase.expect_import_error�sY��	?��x� � � �
�I�I�2�X�=�>�>�>�>�>���	�	�	��D�D�	���s�+�
9�9c��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��dS)
Nrzsys.imp.ericzos.path.halfza.beez.howardz..eatenz.test_runpyz	.unittest�multiprocessing)rq�r7s r@�test_invalid_namesz$RunModuleTestCase.test_invalid_names�s���� � ��'�'�'�� � ��0�0�0�� � ��0�0�0�� � ��)�)�)�� � ��+�+�+�� � ��+�+�+�� � ��/�/�/�� � ��-�-�-�� � �!2�3�3�3�3�3rBc�X�|�td��dd��dS)Nrr)r2rrts r@�test_library_modulez%RunModuleTestCase.test_library_module�s+������G�,�,�Z�8�'�B�B�B�B�BrBFc��tj|��|rdStj�|d��}t	|��|S)N�__init__.py)�os�mkdir�path�joinr	)r7�pkg_dir�	namespace�	pkg_fnames    r@�_add_pkg_dirzRunModuleTestCase._add_pkg_dir�sH��
�������	��4��G�L�L��-�8�8�	��)�$�$�$��rB�
runpy_test�r�parent_namespacesc���|s|r|std���d}|tjzdz}tj�tj����x}}	tdkrtd|	��tj�
d|��tdkr tdtjd��|r||g|z}
||
d<|
D]n}tj�|	|��}	|�|	|��}tdkrtd	|	��tdkrtd
|���otj�|	|��}
t|
d��5}|�|��ddd��n#1swxYwYtdkrtd
|
��|dz|z|z}tj�||
��}||
||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�tempfile�mkdtempr�printr�insertr}r��open�writere�util�spec_from_file_location)r7�source�depth�mod_baserr��pkg_name�
test_fnamer~�sub_dir�namespace_flags�namespace_flagr�rh�mod_filercrds                 r@�	_make_pkgzRunModuleTestCase._make_pkg�s$��
�	4�*�	4�E�	4�� 3�4�4�
4�"���b�i�'��,�
��G�,�,�X�-=�-?�-?�@�@�@��'��Q�;�;��2�G�<�<�<������7�#�#�#��Q�;�;��3�S�X�a�[�A�A�A��	?�0�1�E�9�O�"+�O�B��"1�
?�
?���'�,�,�w��9�9�� �-�-�g�~�F�F�	��Q�;�;��&8�'� B� B� B��Q�;�;��l�I� >� >� >���G�L�L��*�5�5�	�
�)�S�
!�
!�	#�X��N�N�6�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��Q�;�;��l�I�6�6�6��S�L�%�'�(�2���>�9�9�(�:C�E�E���	�8�X�5�5s�0F�F�Fc��ttj��D]$}|�d��r
tj|=�%tdkrtd��tjd=tdkrtd��tj|d���D]�\}}}|D]f}	tj	tj�
||�����6#t$r$}tdkrt|��Yd}~�_d}~wwxYw|D]h}tj�
||��}	tj|���8#t$r$}tdkrt|��Yd}~�ad}~wwxYw��	tj|��tdkrtd��dSdS#t$r+}tdkrt|��Yd}~dSYd}~dSd}~wwxYw)	Nr�rz  Removed sys.modules entriesrz  Removed sys.path entryF)�topdownz  Removed package tree)
r,rrGr-rr�r|rz�walk�remover}�OSError�rmdir)	r7�top�entry�root�dirs�filesr#�ex�fullnames	         r@�_del_pkgzRunModuleTestCase._del_pkg�s����#�+�&�&�	'�	'�E�����0�0�
'��K��&���Q�;�;��=�>�>�>��H�Q�K��Q�;�;��8�9�9�9�!#���e�!<�!<�!<�	.�	.��D�$���
.�
.��.��I�b�g�l�l�4��6�6�7�7�7�7���.�.�.���{�{�E�"�I�I�I����������.�����
.�
.���7�<�<��d�3�3��.��H�X�&�&�&�&���.�.�.���{�{�E�"�I�I�I����������.����	
.�	&��H�S�M�M�M���{�{�E�":�;�;�;�;�;�{�{���	&�	&�	&���{�{�E�"�I�I�I�I�I�I�I�I�I�{�{�{�{�{�{�����	&���sH�!2C�
D�C=�=D�*D?�?
E-�	E(�(E-�2.F$�$
G�.G�Gc���d}|dxx|z
cc<|d|d<|d}tj�|j|d��}||d<|r|dxx|z
cc<dSdS)N�crrrr)rer�r�r#)r7�ns�	alter_sys�char_to_add�spec�new_specs      r@�_fix_ns_for_legacy_pycz(RunModuleTestCase._fix_ns_for_legacy_pycs�����
�:����+�%�����j�>��<���*�~���>�9�9�$�)�:<�Z�.�J�J��!��:���	+��{�O�O�O�{�*�O�O�O�O�O�	+�	+rBc����
�|�t|||���\}}�
}t�
��t���}|��
||j�
�d��d|d����r|�|ddd�����
fd�}		tdkrtd	�
��|�
|	|��tj��t�
��tj|��t jsxt%|��t'�
��tj��tdkrtd
�
��|�|���|�
|	|��|�|��n#|�|��wxYwtdkrtd��dSdS)Nr�r�r�rrrrrT�rrrc�(��t�|����S�N�r��r)r[r�rcs ��r@r\z2RunModuleTestCase._check_module.<locals>.create_ns6�����h��	�J�J�J�JrBr�Running from source:�Running from compiled:�Module executed successfully)r�rZrr]r+r^r&�
rpartitionrr�rQre�invalidate_caches�
__import__rzr�r�dont_write_bytecoderrr�r�)r7r�r�rr�r~rhrdr9r\rcs  `       @r@�
_check_modulezRunModuleTestCase._check_module!s �����~�~�n�e�(1�0A��C�C�	/���H�h�	�x����'�,�,�.�.����� �!�"�/�#�.�.�s�3�3�A�6� �
�
�	�	�	��	����&�+/�)-� � �
�
�
�
	K�	K�	K�	K�	K�	K�	#���{�{�E�"8�(�C�C�C��%�%�i��=�=�=��'�)�)�)��x� � � ��I�i� � � ��*�
B��	�*�*�*��x� � � ��+�-�-�-��Q�;�;��&>�� I� I� I��+�+�K��C�C�C��)�)�)�[�A�A�A��M�M�'�"�"�"�"��D�M�M�'�"�"�"�"�����Q�;�;��<�=�=�=�=�=�;�;s
�)C+F*�*Gc����|�t|d||���\}}}}|�d��d�t|��t���}	|	�||tj�	|���|d����r|	�|ddd�����fd�}
	td	krtd
���|�|
|	��tj
��t|��tj|��t"jsxt'|��t)|��td	krtd���tj
��|�|	���|�|
|	��|�|��n#|�|��wxYwtd	krtd��dSdS)
N�__main__r�r�rr�Tr�c�(��t�|����Sr�r�)r[r�r�s ��r@r\z3RunModuleTestCase._check_package.<locals>.create_ns_r�rBrr�r�zPackage executed successfully)r�rZr�rr]r+r^rer��cache_from_sourcerr�rQr�r�rzr�rr�rrr�r�)r7r�r�rr�r~rhrcrdr9r\r�s  `        @r@�_check_packagez RunModuleTestCase._check_packageIs5�����~�~�n�e�Z�(1�0A��C�C�	/���H�h��&�&�s�+�+�A�.���x����'�,�,�.�.����� �!�#�.�:�:�9�E�E�#� �
�
�	�	�	��	����&�+/�)-� � �
�
�
�
	K�	K�	K�	K�	K�	K�	#���{�{�E�"8�(�C�C�C��%�%�i��=�=�=��'�)�)�)��x� � � ��I�i� � � ��*�
B��	�*�*�*��x� � � ��Q�;�;��&>�� I� I� I��+�-�-�-��+�+�K��C�C�C��)�)�)�[�A�A�A��M�M�'�"�"�"�"��D�M�M�'�"�"�"�"�����Q�;�;��=�>�>�>�>�>�;�;s
�C+G�Gc��|dkrtd���d}|}t|��D]$}|}tj�||��}�%tj�|d��}t|��tdkrtd|��tj�|d��}	|�|	��tdkrtd|	��tj�|	d��}
|�|
��tdkrtd	|
��tj�|
d
��}t|��tdkrtd|��dSdS)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�rangerzr|r}r	rr�r�)r7�base_dirr�r�r��
module_dir�i�
parent_dir�
sibling_fname�	uncle_dir�
cousin_dir�nephew_fnames            r@�_add_relative_modulesz'RunModuleTestCase._add_relative_modulesrs[���A�:�:��C�D�D�D�"���
��u���	<�	<�A�#�J�����j�(�;�;�J�J�����Z��>�>�
��-�(�(�(��Q�;�;��7��G�G�G��G�L�L��W�5�5�	����)�$�$�$��Q�;�;��6�	�B�B�B��W�\�\�)�X�6�6�
����*�%�%�%��Q�;�;��7��D�D�D��w�|�|�J��<�<���,�'�'�'��Q�;�;��6��E�E�E�E�E�;�;rBNc�v�d}|�||��\}}}}|�|}n|}	|�|||��|�d��d}	tdkrt	d|��t||���}
|�|
d|��|�|
d|	��|�d	|
��|�d
|
��~
tj	��t|��tj|��tjs�t|��t!|��tdkrt	d|��tj	��t||���}|�|d|��|�|d|	��|�d	|��|�d
|��~|�|��n#|�|��wxYwtdkrt	d��dSdS)
Nza\
from __future__ import absolute_import
from . import sibling
from ..uncle.cousin import nephew
r�rrr�)rMrr�sibling�nephewr�r�)r�r�r�rr�rr2�assertInrer�r�rzr�rr�rrr�)r7r�rM�contentsr~rhrcrd�
expected_namer��d1�d2s            r@�_check_relative_importsz)RunModuleTestCase._check_relative_imports�s7�����~�~�h��.�.�	/���H�h���$�M�M�$�M�	#��&�&�w��%�@�@�@��*�*�3�/�/��2�H���{�{�E�"8�(�C�C�C��H�x�8�8�8�B����R�
�^�]�;�;�;����R�
�.��9�9�9��M�M�)�R�(�(�(��M�M�(�B�'�'�'���'�)�)�)��x� � � ��I�i� � � ��*�

��	�*�*�*��x� � � ��Q�;�;��&>�� I� I� I��+�-�-�-���8�<�<�<��� � ��J���?�?�?�� � ��M�!2�H�=�=�=��
�
�i��,�,�,��
�
�h��+�+�+���M�M�'�"�"�"�"��D�M�M�'�"�"�"�"�����Q�;�;��<�=�=�=�=�=�;�;s�GH�Hc��td��D]2}tdkrtd|��|�|���3dS)N�r�Testing package depth:�r�rr�r��r7r�s  r@�test_run_modulez!RunModuleTestCase.test_run_module�sQ���1�X�X�	&�	&�E���{�{�E�":�E�B�B�B����u�%�%�%�%�	&�	&rBc��tdd��D]5}tdkrtd|��|�|dd����6dS�Nrr�r�Tr�r�r�s  r@�$test_run_module_in_namespace_packagez6RunModuleTestCase.test_run_module_in_namespace_package�s^���1�a�[�[�	N�	N�E���{�{�E�":�E�B�B�B����u����M�M�M�M�	N�	NrBc��tdd��D]2}tdkrtd|��|�|���3dS)Nrr�r��r�rr�r�r�s  r@�test_run_packagez"RunModuleTestCase.test_run_package�sS���1�a�[�[�	'�	'�E���{�{�E�":�E�B�B�B�����&�&�&�&�	'�	'rBc	��|�ddd��}|\}}}}|�dd��}|�|j|��tj�|dd��}ttttf}|D�]j}|j}|�|��5d�
|��}	t|dd	�
��5}
|
�|	��ddd��n#1swxYwY	t!|��|�d�
|����n5#|$r-}|�dt|����Yd}~nd}~wwxYw	t!|d
z��|�d�
|����n5#|$r-}|�dt|����Yd}~nd}~wwxYwddd��n#1swxYwY��ldS)Nrarr��	.__main__r�ryz raise {0}('{0} in __init__.py.')�wt�ascii��encodingzNothing raised; expected {}zfinding specz
.submodule)r��replace�
addCleanupr�rzr|r}rp�AttributeError�	TypeErrorr�r�subTest�formatr�r�rro�assertNotIn)r7rr~�_rc�init�
exceptions�	exceptionr#r�r��errs            r@� test_run_package_init_exceptionsz2RunModuleTestCase.test_run_package_init_exceptions�s�������A�z�2�2��"(����H�a��#�#�K��4�4������
�w�/�/�/��w�|�|�G�_�m�D�D��!�>�9�j�I�
�#�	J�	J�I��%�D����d�#�#�
J�
J�;�B�B�4�H�H���$��w�7�7�7�+�8��N�N�6�*�*�*�+�+�+�+�+�+�+�+�+�+�+����+�+�+�+�J��x�(�(�(��I�I�;�B�B�4�H�H�I�I�I�I��!�B�B�B��$�$�^�V�C�[�[�A�A�A�A�A�A�A�A�����B����J��x�,�6�7�7�7��I�I�;�B�B�4�H�H�I�I�I�I��!�B�B�B��$�$�^�V�C�[�[�A�A�A�A�A�A�A�A�����B����
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J��	J�	Js��,(G,�C6�*G,�6C:�:G,�=C:�>G,�D:�)G,�:E,�?#E'�"G,�'E,�,G,�0F+�)G,�+G�0#G�G,�G�G,�,G0	�3G0	c�>�|�dd��\}}}}	t|��|�td��5t	|��ddd��n#1swxYwY|�|��dS#|�|��wxYw)Nrar�found in sys\.modules)r�r��assertWarnsRegex�RuntimeWarningrr�)r7r~r�rcs    r@�test_submodule_imported_warningz1RunModuleTestCase.test_submodule_imported_warning�s���"&�.�.��Q�"7�"7����H�a�	#��x� � � ��&�&�~�,�.�.�
%�
%��8�$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
�M�M�'�"�"�"�"�"��D�M�M�'�"�"�"�"���s/�*B�A#�B�#A'�'B�*A'�+B�Bc�J�|�ddd��\}}}}|�|j|��|�dd��}t	|��|�|tj��tj	��5tj
dt��t|��ddd��n#1swxYwYt	|��|�
td��5t|��ddd��dS#1swxYwYdS)Nrarr�r��errorr)r�r�r�r�r�r�rrG�warnings�catch_warnings�simplefilterrrr)r7r~r�rc�packages     r@� test_package_imported_no_warningz2RunModuleTestCase.test_package_imported_no_warning�s���"&�.�.��Q�
�"C�"C����H�a�����
�w�/�/�/��"�"�;��3�3���7�����
�
�g�s�{�+�+�+�
�
$�
&�
&�	 �	 ��!�'�>�:�:�:��w����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	�8����
�
"�
"�>�3K�
L�
L�	 �	 ��w����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s$�*C�C
�
C
�;D�D�Dc��tdd��D]4}tdkrtd|��|�|d����5dS)Nrr�r�T)r�r�r�s  r@�%test_run_package_in_namespace_packagez7RunModuleTestCase.test_run_package_in_namespace_package�sX���1�a�[�[�	?�	?�E���{�{�E�":�E�B�B�B�������>�>�>�>�	?�	?rBc��tdd��D]4}tdkrtd|��|�|d����5dS)Nrr�r�T)rr�r�s  r@�test_run_namespace_packagez,RunModuleTestCase.test_run_namespace_package��X���1�a�[�[�	7�	7�E���{�{�E�":�E�B�B�B�������6�6�6�6�	7�	7rBc��tdd��D]5}tdkrtd|��|�|dd����6dSr�r�r�s  r@�/test_run_namespace_package_in_namespace_packagezARunModuleTestCase.test_run_namespace_package_in_namespace_package�s^���1�a�[�[�	O�	O�E���{�{�E�":�E�B�B�B��������N�N�N�N�	O�	OrBc��td��D]4}tdkrtd|��|�|d����5dS)Nr�rr�Tr�r�r�s  r@�test_run_module_alter_sysz+RunModuleTestCase.test_run_module_alter_syssV���1�X�X�	6�	6�E���{�{�E�":�E�B�B�B����u���5�5�5�5�	6�	6rBc��tdd��D]4}tdkrtd|��|�|d����5dS)Nrr�r�Tr�r�r�s  r@�test_run_package_alter_sysz,RunModuleTestCase.test_run_package_alter_sys	rrBc��tdd��D]2}tdkrtd|��|�|���3dS)N��rz"Testing relative imports at depth:�r�rr�r�r�s  r@�test_explicit_relative_importz/RunModuleTestCase.test_explicit_relative_importsS���1�a�[�[�	0�	0�E���{�{�E�"F��N�N�N��(�(��/�/�/�/�	0�	0rBc��tdd��D]3}tdkrtd|��|�|d���4dS)Nrrrz'Testing main relative imports at depth:r�rr�s  r@�test_main_relative_importz+RunModuleTestCase.test_main_relative_importsU���1�a�[�[�	<�	<�E���{�{�E�"K�U�S�S�S��(�(��
�;�;�;�;�	<�	<rBc�����d}d�|�t|��\}}�}t���t���}|��|tj�|����	d��d|d�����fd�}	|�
||��|�|��dS#|�|��wxYw)Nrz*And now for something completely differentr�rr�c�&��t�|���SrYr�)r[rcrMs ��r@r\z2RunModuleTestCase.test_run_name.<locals>.create_ns&s����h��h�?�?�?rB)r�rZrr]r+r^rer�r�r�rQr�)	r7r�r~rhrdr9r\rcrMs	       @@r@�
test_run_namezRunModuleTestCase.test_run_names������?���~�~�n�e�4�4�	/���H�h��x����'�,�,�.�.����� �!�#�.�:�:�9�E�E�#�.�.�s�3�3�A�6� �
�
�	�	�	�	@�	@�	@�	@�	@�	@�	#��%�%�i��=�=�=��M�M�'�"�"�"�"�"��D�M�M�'�"�"�"�"���s�'C�C+c�|�ddl}d}d}ddg}d|dzg}t��}t��}td|��D]p}d	�|g|z��}	|�|	��|D]}
|�|	d	z|
z���|D]}
|�|	d	z|
z����qd	�|g|z��}	|�|	��|�|	d
z��|�d|��\}}}
}|�|j|��td|dz��D]}|�|d|���|�	|g��D]�}|�
||j��|�
|jtjj��|jr|�|j���i|�|j����|�t)|��d|��|�t)|��d|��dS)
Nrr�r�r�zuncle.cousinzuncle.cousin.nephewz.siblingrr�z.runpy_testrar)�pkgutilr6r�r}�addr�r�r�r��
walk_packages�assertIsInstance�
ModuleInfo�
module_finderrerf�
FileFinder�ispkgr�r#r2�len)r7r#�	max_depth�	base_name�package_suffixes�module_suffixes�expected_packages�expected_modulesr�r�r#r~rhrcrd�
moduleinfos                r@�test_pkgutil_walk_packagesz,RunModuleTestCase.test_pkgutil_walk_packages-s���	�����	�#�	�#�^�4��0�)�j�2H�I���E�E���5�5���1�i�(�(�	<�	<�E��x�x���e� 3�4�4�H��!�!�(�+�+�+�(�
=�
=��!�%�%�h��n�t�&;�<�<�<�<�'�
<�
<�� �$�$�X��^�d�%:�;�;�;�;�
<��8�8�Y�K�)�3�4�4�����h�'�'�'����X�
�5�6�6�6��~�~�b�)�,�,�	/���H�h�����
�w�/�/�/��1�i��k�*�*�	;�	;�E��&�&�w��E�:�:�:�:�!�/�/��	�:�:�	9�	9�J��!�!�*�g�.@�A�A�A��!�!�*�":�"+�"5�"@�
B�
B�
B���
9�!�(�(���9�9�9�9� �'�'�
��8�8�8�8�����.�/�/��4E�F�F�F�����-�.�.��3C�D�D�D�D�DrB)F)r�rY)rrRrSrqrurwr�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrr!r3rTrBr@rmrm�s�������)�?�?�?�
4�
4�
4�C�C�C�����6�"'�5�6�6�6�6�6�:&�&�&�2	+�	+�	+�&>�&+�u�&>�&>�&>�&>�&>�P'?�',��'?�'?�'?�'?�'?�RF�F�F�.&>�&>�&>�&>�P&�&�&�
N�N�N�
'�'�'�
J�J�J�8#�#�#�
 �
 �
 �?�?�?�
7�7�7�
O�O�O�
6�6�6�
7�7�7�
0�0�0�
<�<�<�
#�#�#�*"E�"E�"E�"E�"ErBrmc��eZdZ		dd�Z		dd�Zd�Zd�Zd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
d�Zd�Zed���Zd�ZdS)�RunPathTestCaseNFc�8�|�t}t||||��SrY)rZr)r7�
script_dir�script_basenamer��omit_suffixs     r@�_make_test_scriptz!RunPathTestCase._make_test_scriptTs'���>�#�F��:��!�;�0�0�	0rBTc���
��fd�}t���}	|�|}
n|}
|r1tj�|
|��}|j}|sd|_ndx}}|	�|||d||ddd���|�||	��d�
�
�fd�}|r0|�.tj��
|��}|sd|_||	d<�
|	d<�
�	d	��d
|	d<|�||	��dS)Nc�$��t�|��SrY�r)r[�script_names �r@r\z0RunPathTestCase._check_script.<locals>.create_ns_s����K��6�6�6rBraT)rrrrrrrrzprove.issue15230.is.fixedc�&��t�|���SrYr=)r[rMr>s ��r@r\z0RunPathTestCase._check_script.<locals>.create_ns|s����K��x�@�@�@rBrrr�rr)
r]r+rer�r�r&r1r^rQr�)r7r>r��
expected_file�expected_argv0rc�expect_spec�check_loaderr\r9�	spec_namerd�
mod_cachedrMs `           @r@�
_check_scriptzRunPathTestCase._check_script[s�����	7�	7�	7�	7�	7�'�,�,�.�.����%�I�I� �I��	)� �~�=�=�i�>K�M�M�H�!��J��
'�"&����$(�(�H�z����%�%�$�� �'�'+�%)�	
�	
�		�		�		�	
�!�!�)�[�9�9�9�.��	A�	A�	A�	A�	A�	A��	/�8�+� �~�=�=�h�>K�M�M�H��
'�"&���&.�K�
�#�"*��J��%-�%8�%8��%=�%=�a�%@��M�"��!�!�)�[�9�9�9�9�9rBc�r�tj|��}|�t|t|��dSrY)�re�escape�assertRaisesRegexrpr)r7r>�msgs   r@�_check_import_errorz#RunPathTestCase._check_import_error�s/���i��n�n�����{�C��;�G�G�G�G�GrBc��t��5}d}|�||��}|�|d||d���ddd��dS#1swxYwYdS�N�script�
<run_path>F�rB�r
r:rF�r7r7rcr>s    r@�test_basic_scriptz!RunPathTestCase.test_basic_script�s���
�Z�Z�	?�:��H��0�0��X�F�F�K����{�L�+�*��
�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?��3A�A�Ac���t��5}d}tj|�||����}|�|d||d���ddd��dS#1swxYwYdSrN)r
�pathlib�Pathr:rFrSs    r@�"test_basic_script_with_path_objectz2RunPathTestCase.test_basic_script_with_path_object�s���
�Z�Z�	?�:��H�!�,�t�'=�'=�j�>F�(H�(H�I�I�K����{�L�+�*��
�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�AA!�!A%�(A%c��t��5}d}|�||d���}|�|d||d���ddd��dS#1swxYwYdS)NrOT)r9rPFrQrRrSs    r@�test_basic_script_no_suffixz+RunPathTestCase.test_basic_script_no_suffix�s���
�Z�Z�	?�:��H��0�0��X�=A�1�C�C�K����{�L�+�*��
�
?�
?�
?�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�5A�A�Ac��t��5}d}|�||��}tj|d���}t	j|��|�|d||d���ddd��dS#1swxYwYdS)NrOT��doraiserPFrQ)r
r:�
py_compile�compilerzr�rF)r7r7rcr>�
compiled_names     r@�test_script_compiledz$RunPathTestCase.test_script_compiled�s���
�Z�Z�	A�:��H��0�0��X�F�F�K�&�.�{�D�I�I�I�M��I�k�"�"�"����}�l�M�,�%�
�
A�
A�
A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�AA9�9A=�A=c��t��5}d}|�||��}|�|d|||���ddd��dS#1swxYwYdS)Nr�rP�rcrRrSs    r@�test_directoryzRunPathTestCase.test_directory�s���
�Z�Z�	>�:�!�H��0�0��X�F�F�K����z�<��)�H�
�
>�
>�
>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>rUc�B�t��5}d}|�||��}tj|d���}t	j|��tjs)t|��}|�	|d|||���ddd��dS#1swxYwYdS)Nr�Tr]rPrd)
r
r:r_r`rzr�rr�rrF)r7r7rcr>ra�
legacy_pycs      r@�test_directory_compiledz'RunPathTestCase.test_directory_compiled�s��
�Z�Z�	B�:�!�H��0�0��X�F�F�K�&�.�{�D�I�I�I�M��I�k�"�"�"��*�
B�,�[�9�9�
��"�"�:�|�Z�#-��#�B�B�B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�A8B�B�Bc��t��5}d}|�||��}d|z}|�||��ddd��dS#1swxYwYdS)N�not_main�"can't find '__main__' module in %r)r
r:rL)r7r7rcr>rKs     r@�test_directory_errorz$RunPathTestCase.test_directory_error�s���
�Z�Z�	6�:�!�H��0�0��X�F�F�K�6��C�C��$�$�Z��5�5�5�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�4A�A�Ac	���t��5}d}|�||��}t|d|��\}}|�|d|||d���ddd��dS#1swxYwYdS)Nr��test_ziprPF�rcrC)r
r:rrF)r7r7rcr>�zip_name�fnames      r@�test_zipfilezRunPathTestCase.test_zipfile�s���
�Z�Z�	F�:�!�H��0�0��X�F�F�K�-�j�*�k�R�R�O�H�e����x��u�h�(0�u�
�
F�
F�
F�		F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	F��AA$�$A(�+A(c	��t��5}d}|�||��}tj|d���}t	|d|��\}}|�|d|||d���ddd��dS#1swxYwYdS)Nr�Tr]rnrPFro)r
r:r_r`rrF)r7r7rcr>rarprqs       r@�test_zipfile_compiledz%RunPathTestCase.test_zipfile_compiled�s���
�Z�Z�	F�:�!�H��0�0��X�F�F�K�&�.�{�D�I�I�I�M�-�j�*�.;�=�=�O�H�e����x��u�h�(0�u�
�
F�
F�
F�
	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs�AA:�:A>�A>c���t��5}d}|�||��}t|d|��\}}d|z}|�||��ddd��dS#1swxYwYdS)Nrjrnrk)r
r:rrL)r7r7rcr>rprqrKs       r@�test_zipfile_errorz"RunPathTestCase.test_zipfile_error�s���
�Z�Z�	4�:�!�H��0�0��X�F�F�K�-�j�*�k�R�R�O�H�e�6��A�C��$�$�X�s�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4rsc�F�t��5}t��5}d}d|z}|�|||��}t|d|��\}}|�tt
|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�z import runpy
runpy.run_path(%r)
rn)r
r:r�assertRaises�RecursionErrorr)r7r7�	dummy_dirrcr�r>rprqs        r@�test_main_recursion_errorz)RunPathTestCase.test_main_recursion_error�sC��
�Z�Z�	B�:�x�z�z�	B�Y�!�H�-�09�:�F��0�0��X�v�N�N�K�-�j�*�k�R�R�O�H�e����n�h��A�A�A�
	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs5�B�AA>�2B�>B	�B�B	�B�B�Bc�h�t��5}tj�|d��}t	|dd���5}|�d��ddd��n#1swxYwYt
|��}|�|dd��ddd��dS#1swxYwYdS)Nz	script.pyr��latin1r�u%
#coding:latin1
s = "non-ASCII: hé"
�sunon-ASCII: hé)r
rzr|r}r�r�rr2)r7r7�filename�frs     r@�
test_encodingzRunPathTestCase.test_encoding�s.��
�Z�Z�	>�:��w�|�|�J��<�<�H��h��h�7�7�7�
�1��������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�h�'�'�F����V�C�[�*<�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s5�3B'�A$�B'�$A(	�(B'�+A(	�,.B'�'B+�.B+)NF)NTT)rrRrSr:rFrLrTrYr[rbrerhrlrrrurwrr|r�rTrBr@r5r5Qs.������'�49�0�0�0�0�6:�;?�+:�+:�+:�+:�ZH�H�H�?�?�?�?�?�?�?�?�?�A�A�A�>�>�>�	B�	B�	B�6�6�6�F�F�F�F�F�F�4�4�4��B�B��Z�B�	>�	>�	>�	>�	>rBr5c����eZdZdZejdkrenejZe	e
jd�����Z�fd�Z
e��d���Zd�Zd�Zd�Zd	�Zd
�Zd�Zd�Z�xZS)
�TestExitl:�win32c/�K�t��5}tj|��V�ddd��dS#1swxYwYdSrY)r
rWrX)�args�kwargs�tmp_fns   r@�tmp_pathzTestExit.tmp_path�s������Z�Z�	'�6��,�v�&�&�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's�5�9�9c���|���5}|dzx|_}|�tjd����t��j|i|��ddd��dS#1swxYwYdS)Nzham.pyz@                    raise KeyboardInterrupt
                    )r��ham�
write_text�textwrap�dedent�super�run)r7r�r��tmpr��	__class__s     �r@r�zTestExit.runs����
�]�]�_�_�		)�� �8�^�+�D�H�s��N�N������
�
�
�
�E�G�G�K��(��(�(�(�		)�		)�		)�		)�		)�		)�		)�		)�		)�		)�		)�		)����		)�		)�		)�		)�		)�		)s�A
A0�0A4�7A4c��tjdg|�}tj|g|�Ri|�dtjd���}|�|j�d��|j��|�|j	|j
��dS)Nz-ET)�text�stderrz
KeyboardInterrupt
)r�
executable�
subprocessr��PIPE�
assertTruer�r.r2�
returncode�
EXPECTED_CODE)r7�cmdr�r��procs     r@�assertSigIntzTestExit.assertSigInts����~�t�*�c�*���~�c�V�D�V�V�V�F�V��j�o�V�V�V�V�������,�,�-D�E�E�t�{�S�S�S������$�*<�=�=�=�=�=rBc�<�|�|jg��dSrY)r�r�rts r@�test_pymain_run_filezTestExit.test_pymain_run_files �����4�8�*�%�%�%�%�%rBc��|jj}|dz}|jtjd����|�|g|���dS)Nz
run_module.pyzU                import runpy
                runpy.run_module("ham")
                ��cwd�r�r$r�r�r�r�)r7r�rs   r@�%test_pymain_run_file_runpy_run_modulez.TestExit.test_pymain_run_file_runpy_run_modulesc���h�o���?�*�
��
���O��
�
�	
�	
�	
�	
���:�,�C��0�0�0�0�0rBc��|jj}|dz}|�tjd����|�|g|���dS)Nzrun_module_as_main.pyz^                import runpy
                runpy._run_module_as_main("ham")
                r�r�)r7r��run_module_as_mains   r@�-test_pymain_run_file_runpy_run_module_as_mainz6TestExit.test_pymain_run_file_runpy_run_module_as_main'sh���h�o�� �#:�:���%�%��O��
�
�	
�	
�	
�	
���-�.�C��8�8�8�8�8rBc�L�|�ddg|jj���dS)N�-cz%import runpy; runpy.run_module('ham')r��r�r�r$rts r@�"test_pymain_run_command_run_modulez+TestExit.test_pymain_run_command_run_module4s9�����
�:�;����	�	
�	
�	
�	
�	
rBc�L�|�ddg|jj���dS)Nr��
import hamr�r�rts r@�test_pymain_run_commandz TestExit.test_pymain_run_command:s*�����4��.�D�H�O��D�D�D�D�DrBc�J�|�gd|jj���dS)Nr�)�inputr�r�rts r@�test_pymain_run_stdinzTestExit.test_pymain_run_stdin=s'�����"�L�d�h�o��F�F�F�F�FrBc�Z�|j}|�d|jg|j���dS)Nz-mr�)r�r��stemr$)r7r�s  r@�test_pymain_run_modulezTestExit.test_pymain_run_module@s1���h�����4���*��
��;�;�;�;�;rB)rrRrS�STATUS_CONTROL_C_EXITr�platform�signal�SIGINTr��staticmethod�
contextlib�contextmanagerr�r�rr�r�r�r�r�r�r�r��
__classcell__)r�s@r@r�r��s�������&���<�7�"�"�	���m�^��
���'�'����\�'�

)�
)�
)�
)�
)�����>�>���>�&�&�&�1�1�1�9�9�9�
�
�
�E�E�E�G�G�G�<�<�<�<�<�<�<rBr�r�)1r��importlib.machineryre�importlib.util�os.pathrzrWr_rHr�r�rr�r��unittestr�test.supportrrr�test.support.import_helperrrr�test.support.os_helperr	r
�test.support.script_helperrrrr
rrrrZ�implicit_namespacerF�dictr]r^r"�TestCaserVrmr5r�r�mainrTrBr@�<module>r�s�������*�*�*�*�*�*�*�*�������������	�	�	�	�
�
�
�
�����
�
�
�
�����������������A�A�A�A�A�A�A�A�A�A�F�F�F�F�F�F�F�F�F�F�>�>�>�>�>�>�>�>�C�C�C�C�C�C�C�C�
����C�C�C�C�C�C�C�C�C�C�C�C���&������
����
�%�'>�?���!��$�"��d�%���T�;�;�;�	�	�����+�,�,�,�LF�LF�LF�LF�LF�LF�LF�LF�^$:�$:�$:�$:�$:�X�.�0B�$:�$:�$:�NUE�UE�UE�UE�UE��)�+=�UE�UE�UE�na>�a>�a>�a>�a>�h�'�);�a>�a>�a>�HM<�M<�M<�M<�M<�x� �M<�M<�M<�`�z����H�M�O�O�O�O�O��rB