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_launcher.cpython-312.pyc
�

~h�e�l�
�H�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ejdk7re	jd��ddlZdZej$j'�j)dj'��rdZd	d
dej*dd
�d�dej*dd
�d�dej*ddd�d�ddej*id�d�ddej*ej$d
�d�d�d�Zeddd��Zdj3d gej5�D��cgc]\}}|d!dj7��d"|����c}}��Zdj3d#d$g�Zd%�Zd&�Zd'�Z d(�Z!Gd)�d*�Z"Gd+�d,�Z#Gd-�d.e	jHe#�Z%ycc}}w)/�N)�Path)�support�win32ztest only applies to Windows�py.exez_d.exezpy_d.exezPython Test Suitezhttps://www.python.org/zX.Y version�X.Y.exe)N�ExecutablePath)�DisplayName�InstallPathzX.Y-32 version�
X.Y-32.exezX.Y-arm64 versionz
X.Y-arm64.exez-X fake_arg_for_test)Nr�ExecutableArgumentsz!Ignored because no ExecutablePath)r	�
SupportUrl�3.100�3.100-32�3.100-arm64�ignoredzPython Test Suite SinglezSingle Interpreter)r	r)�PythonTestSuite�PythonTestSuite1�PythonTestSuite/3.100zPythonTestSuite/3.100-32zPythonTestSuite/3.100-arm64)�	PY_PYTHON�
PY_PYTHON2�
PY_PYTHON3�
�
[defaults]��=z
[commands]ztest-command=TEST_EXE.exec�T���fd��|j�D]\}}�|||��y)Nc�f��t|t�rCtj||�5}|j	�D]\}}�|||��	ddd�yt|t
�r(tj||dtj|�ytdj|���#1swYyxYw)Nz&don't know how to create data for '{}')
�
isinstance�dict�winreg�CreateKeyEx�items�str�
SetValueEx�REG_SZ�	TypeError�format)�root�key�value�hkey�k�v�_create_registry_datas      ��9/opt/alt/python312/lib64/python3.12/test/test_launcher.pyr.z3create_registry_data.<locals>._create_registry_data\s�����e�T�"��#�#�D�#�.�
6�$�!�K�K�M�6�D�A�q�)�$��1�5�6�
6�
6���s�
#����d�C��v�}�}�e�D��D�K�K�E�R�S�S�
6�
6�s�#B'�'B0)r")r(�datar,r-r.s    @r/�create_registry_datar1[s0���
T��
�
��*���1��d�A�q�)�*�c#�K�tj�D]}	tj||����y#t$r}|j
dk(rYd}~y�d}~wwxYw�w)Ni)�	itertools�countr �EnumKey�OSError�winerror)r(�i�exs   r/�	enum_keysr;lsU����
�_�_�
���	��.�.��q�)�)����	��{�{�c�!����	�s0�A�6�A�	A�A�A�A�A�Ac��tjtjz}t|�D]N}tj|||��5}t|t
|��ddd�tj||��Py#1swY�"xYw)N��access)r �	KEY_WRITE�KEY_ENUMERATE_SUB_KEYS�list�OpenKey�delete_registry_datar;�	DeleteKey)r(�keys�ACCESSr)r+s     r/rCrCvsp��
�
�
�� =� =�
=�F��D�z�$��
�^�^�D�#�f�
5�	8�� ��y���7�	8�����s�#�$�	8�	8�s�A?�?B	c	�\�d|�d�}tjdftjtjftjtjffD]C\}}	tj
tj||tj|z���yy#t$rY�RwxYw)NzSoftware\Python\PythonCore\z\InstallPathrr=TF)	r �HKEY_CURRENT_USER�HKEY_LOCAL_MACHINE�KEY_WOW64_64KEY�KEY_WOW64_32KEY�CloseKeyrB�KEY_READr7)�tagr)r(�flags    r/�is_installedrP~s���
(���\�
:�C�	�	!�	!�1�%�	�	"�	"�F�$:�$:�;�	�	"�	"�F�$:�$:�;��	�
��d�
	��O�O�F�N�N�4��V�_�_�t�=S�T�U��	����	��	�s�<B�	B+�*B+c��eZdZd�Zd�Zd�Zy)�
PreservePyInic�@�t|�|_||_d|_y�N)r�path�content�
_preserved)�selfrUrVs   r/�__init__zPreservePyIni.__init__�s����J��	������r2c��	|jj�|_|jj	|j
d��y#t$r
d|_Y�:wxYw)Nzutf-16��encoding)rU�
read_bytesrW�FileNotFoundError�
write_textrV�rXs r/�	__enter__zPreservePyIni.__enter__�sP��	#�"�i�i�2�2�4�D�O�	
�	�	���T�\�\�H��=��!�	#�"�D�O�	#�s�A	�	A�Ac��|j�|jj�y|jj|j�yrT)rWrU�unlink�write_bytes)rX�exc_infos  r/�__exit__zPreservePyIni.__exit__�s2���?�?�"��I�I�����I�I�!�!�$�/�/�2r2N)�__name__�
__module__�__qualname__rYrarf�r2r/rRrR�s���
>�3r2rRc�~�eZdZdZed��Zd�Zdd�Zd�Ze	jd	d��Ze	jd��Zy)
�
RunPyMixinNc��d}tj�r+ttj�j
tz}nRtjd�jd�D])}|s�t|�tz}|j�s�)nd}|r�	tj|dgtjtjtjdd��5}|jj�t!|j"d�j%�dj'd	�d
}|j"j)�|j+d�ddd�tj,j/�sd}|s(t3j4dj7t���|S#1swY�VxYw#t0$rd}Y�EwxYw)
N�PATH�;�-h�ascii�ignore)�stdin�stdout�stderrr\�errorsrr� ��
zcannot locate '{}' for test)�	sysconfig�is_python_buildr�sys�
executable�parent�PY_EXE�os�getenv�split�is_file�
subprocess�Popen�PIPErs�close�nextrt�
splitlines�
rpartition�read�wait�version�
startswithr7�unittest�SkipTestr')�cls�py_exe�pr�s    r/�find_pyzRunPyMixin.find_py�sw�����$�$�&��#�.�.�)�0�0�6�9�F��Y�Y�v�&�,�,�S�1�
���!�!�W�v�-�F��~�~�'��	
����
��%�%��T�N�$�/�/�%�?�?�%�?�?�$�#�
����G�G�M�M�O�"�1�8�8�T�2�=�=�?��B�M�M�c�R�ST�U�G��H�H�M�M�O��F�F�2�J���{�{�-�-�g�6�!�F���#�#�-�4�4�V�<��
��
�+����
���
�s,�AF>�A?F2�)F>�2F;�7F>�>G�Gc�\�|js|j�|_|jSrT)r�r�r`s r/�
get_py_exezRunPyMixin.get_py_exe�s ���{�{��,�,�.�D�K��{�{�r2c���|js|j�|_hd�}itjj	�D��cic])\}}|j�|vs�|j�|��+c}}�dddd��|xsij	�D��cic]\}}|j�|��c}}�}|s|jg|�}t
j|||jtjtjtj��5}	|	jj�|	jd�|	jj�jdd�}
|	jj�jd	d�}ddd�	j |k7rat"j$rQ|sOt'd
�t'|jg|��t'd�t'
�t'd�t'�|r>|	j |k7r/t
j(|	j |jg|�
��|j+||	j �j-�D�cic]L}|j/d
�s9d|vr5|j1d�d|j1d�dj3���N}
}
|
d<||
d<|
Scc}}wcc}}w#1swY��SxYwcc}w)N>rrr�VIRTUAL_ENV�1�)�PYLAUNCHER_DEBUG�PYLAUNCHER_DRYRUN�PYLAUNCHER_LIMIT_TO_COMPANY)�envr}rsrtrury�utf-8�replacerqz
++ COMMAND ++z++ STDOUT ++z++ STDERR ++�#�:rrxrtru)r�r�r��environr"�upperr�r�r�rsr�r�rtr��decoderu�
returncoder�verbose�print�CalledProcessError�assertEqualr�r��	partition�lstrip)rX�argsr��
allow_fail�expect_returncode�argvrrr,r-r��out�err�sr0s              r/�run_pyzRunPyMixin.run_py�st���{�{��,�,�.�D�K�I��
�(*�
�
�(8�(8�(:�V���1�a�g�g�i�v�>U�q�w�w�y�!�|�V�
� #�!$�+-�	
�
*-���(9�(9�(;�<���1�q�w�w�y�!�|�<�
����K�K�'�$�'�D�
�
�
����{�{��/�/��?�?��?�?�

�	=��
�G�G�M�M�O�
�F�F�2�J��(�(�-�-�/�(�(��)�<�C��(�(�-�-�/�(�(��)�<�C�	=�
�<�<�,�,������/�"��4�;�;�&��&�'��.�!��#�J��.�!��#�J��!�,�,�*;�;��/�/����t�{�{�>R�T�>R�TW�Y\�]�]����.����=��^�^�%�
���<�<��$����
�K�K���Q�����S�!1�!�!4�!;�!;�!=�=�
��
�
��X����X�����MW��=�	=�	=��.
s&�K�#K�K"�BK(�=AK5�(K2c��tjjd�}|stjd��tt
|�dz|�S)N�LOCALAPPDATAz5LOCALAPPDATA environment variable is missing or emptyzpy.ini)r�r��getr�r�rRr)rXrV�
local_appdatas   r/�py_inizRunPyMixin.py_inisF���
�
���~�6�
���#�#�%7�8�
8��T�-�0�8�;�W�E�Er2c#��K�ttjtj���dz�}|j||��	|��|j
�y#|j
�wxYw�w)N)�dirz.pyr[)r�tempfile�mktempr��getcwdr_rc)rXrVr\�files    r/�scriptzRunPyMixin.scriptsP�����H�O�O��	�	��4�u�<�=������(��3�	��J��K�K�M��D�K�K�M�s�AA5�A �A5� A2�2A5c#�bK�tj�dz}|jdd��|ttj�j
z}|j
�	|dt|j�if��tj|�y#tj|�wxYw�w)N�ScriptsT)�exist_ok�parentsr�)r�cwd�mkdirr|r}�name�touchr#r~�shutil�rmtree)rX�venv�venv_exes   r/�	fake_venvzRunPyMixin.fake_venvs�����x�x�z�I�%���
�
�D�$�
�/��4����/�4�4�4������	 ��]�C����,<�=�=�=��M�M�$���F�M�M�$��s�A!B/�$B�?B/�B,�,B/)NFrN)r�)
rgrhrir��classmethodr�r�r�r��
contextlib�contextmanagerr�r�rjr2r/rlrl�s_��
�F��&��&�P�
,�\F���������� �� r2rlc�(�eZdZed��Zed��Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/y-).�TestLauncherc���tjtjd�5}t|t�ddd�t
jrtjd�}yy#1swY�0xYw)N�Software\Pythonz!reg query HKCU\Software\Python /s)	r �	CreateKeyrHr1�	TEST_DATArr�r��check_output)r�r)r�s   r/�
setUpClasszTestLauncher.setUpClasssY��
�
�
�f�6�6�?�
L�	1�PS� ��i�0�	1��?�?��'�'�(M�N�A��	1�	1�s�A%�%A.c���tjtjdtjtjz��5}t|t�ddd�y#1swYyxYw)Nr�r=)r rBrHr?r@rCr�)r�r)s  r/�
tearDownClasszTestLauncher.tearDownClass's`��
�^�^�F�4�4��RX�Rb�Rb�ek�fC�fC�SC�D�	1�HK� ��i�0�	1�	1�	1�s�A � A)c���|jdg�}|j|jt|d��|jtj
j
d�d|d�y)N�-0�argv0rwrr�)r�r�r�rr|r�r��rXr0s  r/�test_versionzTestLauncher.test_version-sW���{�{�D�6�"��������d�4��=�&9�:�������.�.�s�3�A�6��Y��Hr2c�R�|jdg�}|jd|d�y)Nrp�TruezSearchInfo.help�r�r�r�s  r/�test_help_optionzTestLauncher.test_help_option2s(���{�{�D�6�"�������&7�!8�9r2c���dD]\\}}}|j|�5|j|g�}|j||d�|j||d�ddd��^y#1swY�ixYw)N))r�r��False)�-0pr�r�)�--listr�r�)�--list-pathsr�r�zSearchInfo.listzSearchInfo.listPaths)�subTestr�r�)rX�opt�v1�v2r0s     r/�test_list_optionzTestLauncher.test_list_option6s���
�		C�K�C��R����c�"�
C��{�{�C�5�)��� � ��T�*;�%<�=�� � ��T�*@�%A�B�
C�
C�
		C�
C�
C�s�=A#�#A,	c��|jdg�}i}i}|dj�D]>}tjd|�}|s�|j	d�||j	d�<�@t
D]^}t
|}|D�cgc]}t
||t�s�|��}	}|	D]}
d|�d|
��}||
d||<�|jd|�d	�d��`|j�D��
cic]
\}}
||vs�||
��}}}
	|j||�ycc}wcc}
}w#tjrtd
�t|d��xYw)Nr�rt�\s*(.+?)\s+?(\*\s+)?(.+)$r��-V:�/r	�/ignored�*** STDOUT ***)r�r��re�match�groupr�rr�popr"�assertDictEqualrr�r�)rXr0�found�expect�line�m�company�company_data�t�tagsrN�argr,r-�actuals               r/�	test_listzTestLauncher.test_listBs^���{�{�H�:�&��������N�-�-�/�	/�D����5�t�<�A��$%�G�G�A�J��a�g�g�a�j�!�	/�!�	6�G�$�W�-�L�+�Q�!�z�,�q�/�4�/P�A�Q�D�Q��
?���G�9�A�c�U�+��*�3�/�
�>��s��
?�
�J�J��W�I�X�.��5�
	6�$)�;�;�=�@�4�1�a�A��K�!�Q�$�@��@�	�� � ���0��R��A��	�����&�'��d�8�n�%��s$�D�D�%D�2D�;D�,Ec	�|�|jdg�}i}i}|dj�D]>}tjd|�}|s�|j	d�||j	d�<�@t
D]x}t
|}|D�cgc]}t
||t�s�|��}	}|	D]/}
d|�d|
��}||
d}	|d	||<	||xxd
|dzz
cc<�1|jd|�d�d��z|j�D�
�cic]
\}
}|
|vs�|
|��}}
}	|j!||�ycc}w#t$rY�fwxYw#t$rAtt|d�ttj�jz�||<Y��wxYwcc}}
w#t"j$rt'd
�t'|d��xYw)Nr�rtr�rr�r�r�r
rrwrr�r�)r�r�r�r�r�r�rr�KeyErrorr#rr|r}r�r�r"r�rr�r�)rXr0r�r�r�r�r�r�rrrNr�installr,r-rs                r/�test_list_pathszTestLauncher.test_list_paths[s����{�{�N�+�,��������N�-�-�/�	/�D����5�t�<�A��$%�G�G�A�J��a�g�g�a�j�!�	/�!�	6�G�$�W�-�L�+�Q�!�z�,�q�/�4�/P�A�Q�D�Q��

W���G�9�A�c�U�+��&�s�+�M�:��W�")�*:�";�F�3�K���s��s�W�5J�-K�'K�K���

W�
�J�J��W�I�X�.��5�	6�"$)�;�;�=�@�4�1�a�A��K�!�Q�$�@��@�	�� � ���0��#R��$������W�"%�d�7�4�=�&9�D����<P�<U�<U�&U�"V�F�3�K�W��
A��	�����&�'��d�8�n�%��sU�D(�D(�6D<�?D-�?F	�F	�F�-	D9�6D<�8D9�9D<�<AF�F�,F;c��d}|jd|�d�g�}|jd|d�|j||d�|jd|d�y)	Nrr�r�r�
LaunchCommand�env.companyr�env.tagr��rXr�r0s   r/�test_filter_to_companyz#TestLauncher.test_filter_to_company}s_��#���{�{�c�'��!�,�-�.������D��$9�:�����$�}�"5�6�����$�y�/�2r2c���d}|jd|�d�gtd����}|jd|d�|j||d	�|jd
|d�y)Nrr�r�z3.0)r�r�rr
rrr)r�rr�r
s   r/�#test_filter_to_company_with_defaultz0TestLauncher.test_filter_to_company_with_default�sh��#���{�{�c�'��!�,�-�4�%�3H�{�I������D��$9�:�����$�}�"5�6�����$�y�/�2r2c���d}|jdg�}|jd|d�|j||d�|jd|d�|jdg�}|jd	|d�|j||d�|jd
|d�|jdg�}|jd|d�|j||d�|jd
|d�y)Nrz-V:3.100rr
rrrz-V:3.100-32rrz-V:3.100-arm64z"X.Y-arm64.exe -X fake_arg_for_testrr�r
s   r/�test_filter_to_tagzTestLauncher.test_filter_to_tag�s���#���{�{�J�<�(������D��$9�:�����$�}�"5�6�����$�y�/�2��{�{�M�?�+������t�O�'<�=�����$�}�"5�6�����T�)�_�5��{�{�,�-�.�����=�t�O�?T�U�����$�}�"5�6������Y��8r2c���d}|jd|�d�gd��}|jd|�d�g�}|jd|d�|j||d	�|jd
|d�y)Nrr�z/3.1�g)r�z/3.100rr
rrrr�r
s   r/�test_filter_to_company_and_tagz+TestLauncher.test_filter_to_company_and_tag�s}��#���{�{�c�'��$�/�0�C�{�H���{�{�c�'��&�1�2�3������D��$9�:�����$�}�"5�6�����$�y�/�2r2c�6�d}|jdgd|id��}y)Nrz-V:Nonexistentr�r�r�r�)r�r
s   r/�test_filter_with_single_installz,TestLauncher.test_filter_with_single_install�s+��$���{�{�
��.��8�!��
�r2c��	|jdgd��}|jd|d�|j
|djd�|d�y#tj$rtjd��wxYw)	N�-3T�r�z(requires at least one Python 3.x install�
PythonCorerr�3.)r�r�r�r�r�r��
assertTruer�r�s  r/�test_search_major_3z TestLauncher.test_search_major_3�s��	P��;�;��v�$�;�7�D�	
����t�M�':�;�����Y��2�2�4�8�$�y�/�J���,�,�	P��#�#�$N�O�O�	P�s�A�)A<c��	|jdgd��}|jd|d	�|j|d
jd�|d
�|j|d
jd�|d
�y#tj$r3td�t	dd�D��stjd���wxYw)
Nz-3-32Trc3�:K�|]}td|�d�����y�w)r�-32N)rP)�.0r9s  r/�	<genexpr>z6TestLauncher.test_search_major_3_32.<locals>.<genexpr>�s����G�Q�|�b���3�K�0�G�s���z/requires at least one 32-bit Python 3.x installrrrrr#)r�r�r��any�ranger�r�r�rr��endswithr�s  r/�test_search_major_3_32z#TestLauncher.test_search_major_3_32�s���	��;�;��y�T�;�:�D�
	
����t�M�':�;�����Y��2�2�4�8�$�y�/�J�����Y��0�0��7��i��I��
�,�,�	��G�%��2�,�G�G��'�'�(Y�Z�Z��	�s�A:�:ACc��	|jdgd��}|j
dd�|j|djd	�|d�y#tj$r#td�st	j
d��Y�rwxYw)
N�-2Trz2.7z(requires at least one Python 2.x installrrrz2.)	r�r�r�rPr�r�r�rr�r�s  r/�test_search_major_2z TestLauncher.test_search_major_2�s���	T��;�;��v�$�;�7�D�	
����t�M�':�;�����Y��2�2�4�8�$�y�/�J��	�,�,�	T���&��'�'�(R�S�S�'�	T�s�A�3B	�B	c��|jt�5|jdg�}ddd�|jdd�|jd|d�|jd|dj	��y#1swY�WxYw)N�-argr�SearchInfo.companyr�SearchInfo.tag�X.Y.exe -argrt�r��TEST_PY_DEFAULTSr�r��stripr�s  r/�test_py_defaultzTestLauncher.test_py_default�s~��
�[�[�)�
*�	)��;�;��x�(�D�	)����*�D�1E�,F�G�����$�'7�"8�9������h��)=�)=�)?�@�		)�	)�s�A?�?Bc��|jt�5|jddg�}ddd�|jdd�|jd|d�|jd|dj	��y#1swY�WxYw)	Nr-r0rr1rr2�X.Y-32.exe -argrtr4r�s  r/�test_py2_defaultzTestLauncher.test_py2_default�s���
�[�[�)�
*�	/��;�;��f�~�.�D�	/����*�D�1E�,F�G�����T�*:�%;�<����*�D��N�,@�,@�,B�C�		/�	/���B�B	c��|jt�5|jddg�}ddd�|jdd�|jd|d�|jd|dj	��y#1swY�WxYw)	Nrr0rr1rr2�'X.Y-arm64.exe -X fake_arg_for_test -argrtr4r�s  r/�test_py3_defaultzTestLauncher.test_py3_default�s���
�[�[�)�
*�	/��;�;��f�~�.�D�	/����*�D�1E�,F�G������-=�(>�?����B�D��N�DX�DX�DZ�[�		/�	/�r;c���|jdgt��}|jd|d�|jd|d�|jd|dj��y)	Nr0rrr1rr2r3rt�r��TEST_PY_ENVr�r6r�s  r/�test_py_default_envz TestLauncher.test_py_default_env�s`���{�{�F�8��{�5�����*�D�1E�,F�G�����$�'7�"8�9������h��)=�)=�)?�@r2c���|jddgt��}|jd|d�|jd|d�|jd|d	j��y)
Nr-r0rrr1rr2r9rtr@r�s  r/�test_py2_default_envz!TestLauncher.test_py2_default_env�sc���{�{�D�&�>�{�{�;�����*�D�1E�,F�G�����T�*:�%;�<����*�D��N�,@�,@�,B�Cr2c���|jddgt��}|jd|d�|jd|d�|jd|d	j��y)
Nrr0rrr1rr2r=rtr@r�s  r/�test_py3_default_envz!TestLauncher.test_py3_default_env�sc���{�{�D�&�>�{�{�;�����*�D�1E�,F�G������-=�(>�?����B�D��N�DX�DX�DZ�[r2c�|�|jt�5dD]�}|j|�5|jdg|�d���}|j	d|d�|j	d|d�|j	d	|d
j��ddd���	ddd�y#1swY��xYw#1swYyxYw)N)z"py.exe"rz"py"�py�	--versionz
 --version�r�rr1rr2zX.Y.exe --versionrt)r�r5r�r�r�r6)rXr�r0s   r/�test_py_default_short_argv0z(TestLauncher.test_py_default_short_argv0�s���
�[�[�)�
*�	R�=�
R���\�\�%�(�R��;�;��}�e�W�J�;O�;�P�D��$�$�%6��=Q�8R�S��$�$�W�d�3C�.D�E��$�$�%8�$�x�.�:N�:N�:P�Q�	R�R�
R�	R�	R�R�R��	R�	R�s#�B2�A%B&�
B2�&B/�+B2�2B;c���|jdgt��}d}|dj�D]-}tjd|�}|s�|jd�}n|j
d|�y)Nr�rrtz\s*-V:(.+?)\s+?\*\s+(.+)$r�r)r�rAr�r�r�r�r�)rXr0�defaultr�r�s     r/�test_py_default_in_listz$TestLauncher.test_py_default_in_list�sn���{�{�D�6�{�{�3������N�-�-�/�	�D����5�t�<�A���'�'�!�*���		�
	
���0�'�:r2c�F�|j�5\}}|jdg|��}|dj�D]F}tjd|�}|s�|jt
|�|jd��n|jd�|jdg|��}|dj�D]=}tjd|�}|s�|jd|jd��n|jd	�ddd�y#1swYyxYw)
Nr�rrtz
\s*\*\s+(.+)$r�zdid not find active venv pathr�zActive venvzdid not find active venv entry)	r�r�r�r�r�r�r#r��fail)rXr�r�r0r�r�s      r/�test_virtualenv_in_listz$TestLauncher.test_virtualenv_in_lists��
�^�^�
�	<��(�C��;�;��w�C�;�0�D��X��1�1�3�
;���H�H�-�t�4����$�$�S��]�A�G�G�A�J�?��	
;��	�	�9�:��;�;��v�3�;�/�D��X��1�1�3�
<���H�H�-�t�4����$�$�]�A�G�G�A�J�?��	
<��	�	�:�;�#	<�	<�	<�s�AD�BD�5D�D c��|j�5\}}|jgi|�ddi���}|jdgi|�ddi���}ddd�|jdj�t	��|j|dd�|jdj�t	|��|j|dd�y#1swY��xYw)NrzPythonTestSuite/3rz-V:PythonTestSuite/3rtzSearchInfo.lowPriorityTagr�)r�r�r�r6r#�assertNotEqual)rXr�r��data1�data2s     r/�test_virtualenv_with_envz%TestLauncher.test_virtualenv_with_envs���
�^�^�
�	i��(�C��K�K��(Q�3�(Q��=P�(Q�K�R�E��K�K�!7� 8�>g��>g�k�Sf�>g�K�h�E�	i�	
����x��.�.�0�#�h�-�@�����:�;�V�D����E�(�O�1�1�3�S��]�C����E�"=�>��G�	i�	i�s�7C�Cc�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
N�#! /usr/bin/python -prearg�-postargrr1rr2�X.Y.exe -prearg �	 -postargrt�r�r5r�r�r�r6�rXr�r0s   r/�test_py_shebangzTestLauncher.test_py_shebang"s���
�[�[�)�
*�	9����9�:�
9�f��{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	
9�
9��	9�	9��!�B*�B�B*�B'	�#B*�*B3c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! python -preargrYrr1rr2rZr[rtr\r]s   r/�test_python_shebangz TestLauncher.test_python_shebang*s���
�[�[�)�
*�	9����0�1�
9�V��{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	
9�
9��	9�	9�r_c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! /usr/bin/python2 -preargrYrr1rr2�X.Y-32.exe -prearg r[rtr\r]s   r/�test_py2_shebangzTestLauncher.test_py2_shebang2s���
�[�[�)�
*�	9����:�;�
9�v��{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G�����T�*:�%;�<����.�v�h�i�@�$�x�.�BV�BV�BX�Y�	
9�
9��	9�	9�r_c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! /usr/bin/python3 -preargrYrr1rr2�+X.Y-arm64.exe -X fake_arg_for_test -prearg r[rtr\r]s   r/�test_py3_shebangzTestLauncher.test_py3_shebang:s���
�[�[�)�
*�	9����:�;�
9�v��{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G������-=�(>�?����F�v�h�i�X�Z^�_g�Zh�Zn�Zn�Zp�q�	
9�
9��	9�	9�r_c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! /usr/bin/python -prearg
rYrr1rr2rZr[rtr\r]s   r/�test_py_shebang_nlzTestLauncher.test_py_shebang_nlBs���
�[�[�)�
*�	9����;�<�
9���{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	
9�
9��	9�	9�r_c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! /usr/bin/python2 -prearg
rYrr1rr2rcr[rtr\r]s   r/�test_py2_shebang_nlz TestLauncher.test_py2_shebang_nlJs���
�[�[�)�
*�	9����<�=�
9���{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G�����T�*:�%;�<����.�v�h�i�@�$�x�.�BV�BV�BX�Y�	
9�
9��	9�	9�r_c�l�|jt�5|jd�5}|j|dg�}ddd�ddd�|j	dd�|j	d|d�|j	d�d�|d	j��y#1swY�cxYw#1swY�gxYw)
Nz#! /usr/bin/python3 -prearg
rYrr1rr2rfr[rtr\r]s   r/�test_py3_shebang_nlz TestLauncher.test_py3_shebang_nlRs���
�[�[�)�
*�	9����<�=�
9���{�{�F�J�#7�8��
9�	9�	
���*�D�1E�,F�G������-=�(>�?����F�v�h�i�X�Z^�_g�Zh�Zn�Zn�Zp�q�	
9�
9��	9�	9�r_c�x�|jt�5|jd�5}|j|dgd|�d���}ddd�ddd�|j	dd�|j	d|d	�|j	d
�d�|dj��y#1swY�cxYw#1swY�gxYw)NrXrYz
"py.exe" "z
" -postargrJrr1rr2zX.Y.exe -prearg "rtr\r]s   r/�test_py_shebang_short_argv0z(TestLauncher.test_py_shebang_short_argv0Zs���
�[�[�)�
*�	_����9�:�
_�f��{�{�F�J�#7�
�6�(�R\�>]�{�^��
_�	_�	
���*�D�1E�,F�G�����$�'7�"8�9����,�V�H�J�?��h��AU�AU�AW�X�
_�
_��	_�	_�s"�B0�B$�B0�$B-	�)B0�0B9c���|jdjddg��5|jgdd��}ddd�|jdd�|jd	|d
�y#1swY�4xYw)Nrrzpython=3.999-64Tr)r�r�z3.999-64r2r�zSearchInfo.oldStyleTag)r��joinr�r�r�s  r/�test_py_handle_64_in_iniz%TestLauncher.test_py_handle_64_in_inicsx��
�[�[����L�2C�#D�E�
F�	K��;�;�r�d�c�;�J�D�	K�	
����T�*:�%;�<������&>�!?�@�		K�	K�s�A+�+A4c��ttj�j}|j	t
�5|j
d|�d��5}|j|dgdttj�j�dtjd���i��}ddd�ddd�|jtj�d�d�d	j��y#1swY�IxYw#1swY�MxYw�
N�#! /usr/bin/env z -preargrYrnrorz	 -prearg r[rt)
rr|r}�stemr�r5r�r�r~r�r�r�r6�rXrvr�r0s    r/�test_search_pathzTestLauncher.test_search_pathjs����C�N�N�#�(�(��
�[�[�)�
*�	����/��v�X�>�?�
�6��{�{��Z�(��D����$8�$?�$?�#@��"�)�)�F�BS�AT�!U�V�#���
�	�	
���C�N�N�+�9�V�H�I�F��X��H\�H\�H^�_�
�
��	�	��$�C4�AC(� C4�(C1	�-C4�4C=c��ttj�j}|j	t
�5|j
d|�d��5}|j|dgdttj�j�dtjd���i��}ddd�ddd�|jtj�d�d�d	j��y#1swY�IxYw#1swY�MxYwrt)
rr|r}r�r�r5r�r�r~r�r�r�r6)rXr�r�r0s    r/�test_search_path_exez!TestLauncher.test_search_path_exets����C�N�N�#�(�(��
�[�[�)�
*�	����/��v�X�>�?�
�6��{�{��Z�(��D����$8�$?�$?�#@��"�)�)�F�BS�AT�!U�V�#���
�	�	
���C�N�N�+�9�V�H�I�F��X��H\�H\�H^�_�
�
��	�	�ryc��|j�j}|jt�5|j	d|���5}|j|gd|j�j�dtjd���i��}ddd�ddd�|jd��dj��y#1swY�8xYw#1swY�<xYw)NrurnrorzX.Y.exe rt)r�rvr�r5r�r�r~r�r�r�r6rws    r/�test_recursive_search_pathz'TestLauncher.test_recursive_search_paths������ �%�%��
�[�[�)�
*�	����/��v�6�7�
�6��{�{��H��D�O�O�$5�$<�$<�#=�Q�r�y�y��?P�>Q�!R�S�#���
�	�	
���8�F�8�,�d�8�n�.B�.B�.D�E�

�
��	�	�s$�C�AC�C�C	�C�Cc�P�|jdgddid��}|dj�}	tjddgtjtj
�	�|j
d|�|j
d|�y#t$r|j
d
|�Y�0wxYw)Nz-V:3.10�PYLAUNCHER_ALWAYS_INSTALLr��orrtz
winget.exerI)rtruzms-windows-store://�9PJPW5LDXLZ5)r�r6r��
check_callr��STDOUT�assertInr^)rXr0�cmds   r/�test_installzTestLauncher.test_install�s����{�{�I�;�-H�#�,N�be�{�f���8�n�"�"�$��	-��!�!�<��"=�j�o�o�^h�^o�^o�p�
�M�M�,��,��
�
�n�c�*��!�	6��M�M�/��5�	6�s�6B�B%�$B%c��|jd�5}|j|g�}ddd�|jd��dj��y#1swY�0xYw)Nz#! C:/some_random_app -withargzC:\some_random_app -witharg rt)r�r�r�r6r]s   r/�test_literal_shebang_absolutez*TestLauncher.test_literal_shebang_absolute�s^��
�[�[�9�
:�	)�f��;�;��x�(�D�	)����+�F�8�4���N� � �"�	
�	)�	)�s�A�Ac���|jd�5}|j|g�}ddd�|jjj�d|��dj	��y#1swY�FxYw)Nz#! ..\some_random_app -withargz\some_random_app -witharg rt�r�r�r�r~r6r]s   r/�test_literal_shebang_relativez*TestLauncher.test_literal_shebang_relative�sn��
�[�[�:�
;�	)�v��;�;��x�(�D�	)�����}�}�#�#�$�$?��x�H���N� � �"�	
�	)�	)�s�A*�*A3c��|jd�5}|j|g�}ddd�|jdj�d|��dj	��|jd�5}|j|g�}ddd�|jd|j�d|��|dj	��y#1swY��xYw#1swY�IxYw)Nz#! "some random app" -witharg�"z\some random app" -witharg rtz#! some" random "app -withargr�r]s   r/�test_literal_shebang_quotedz(TestLauncher.test_literal_shebang_quoted�s���
�[�[�8�
9�	)�V��;�;��x�(�D�	)������
�
��:�6�(�C���N� � �"�	
�
�[�[�8�
9�	)�V��;�;��x�(�D�	)������
�
��:�6�(�C���N� � �"�	
�	)�	)��	)�	)�s�C�1C�C	�Cc���|jd�5}|j|g�}ddd�|jdj�d|��dj	��y#1swY�=xYw)Nz#! some\" random "app -withargr�z\some\ random app" -witharg rtr�r]s   r/�"test_literal_shebang_quoted_escapez/TestLauncher.test_literal_shebang_quoted_escape�si��
�[�[�:�
;�	)�v��;�;��x�(�D�	)������
�
��<�V�H�E���N� � �"�	
�	)�	)�s�A!�!A*c��|jt�5|jd�5}|j|g�}ddd�ddd�|j	d��dj��y#1swY�8xYw#1swY�<xYw)Nz#! test-command arg1zTEST_EXE.exe arg1 rt)r��TEST_PY_COMMANDSr�r�r�r6r]s   r/�test_literal_shebang_commandz)TestLauncher.test_literal_shebang_command�s���
�[�[�)�
*�	-����3�4�
-���{�{�F�8�,��
-�	-�	
��� ���)���N� � �"�	
�
-�
-��	-�	-�s!�A>�A2�A>�2A;	�7A>�>Bc���|jd�5}|j|g�}ddd�jdz}|j|�d|��dj	��y#1swY�AxYw)Nz#! /usr/bin/not-python arg1z/usr/bin/not-pythonz arg1 rt)r�r�r~r�r6)rXr�r0r�s    r/�%test_literal_shebang_invalid_templatez2TestLauncher.test_literal_shebang_invalid_template�sq��
�[�[�6�
7�	)�6��;�;��x�(�D�	)����!6�6������h�f�V�H�%���N� � �"�	
�	)�	)�s�A%�%A.N)0rgrhrir�r�r�r�r�r�rrrrrrrr r+r.r7r:r>rBrDrFrKrNrQrVr^rardrgrirkrmrorrrxr{r}r�r�r�r�r�r�r�rjr2r/r�r�s���O��O��1��1�
I�
:�
C��2 �D3�3�9�"3�
�K�	J�K�A�D�\�A�D�\�R�;�<�(	H�W�W�Z�r�W�Z�r�Y�A�`�	`�	F�+�
�
�

�
�
�
r2r�)&r�r4r�r�r�r�r|rzr�r��pathlibr�testr�platformr�r rr}�casefoldr*�prefixr�rrArqr"�lowerr5r�r1r;rCrPrRrl�TestCaser�)r,r-s00r/�<module>r�s�����	�	�
��
�������<�<�7��
�(�
�
�:�
;�;��
���>�>����%�%�h�&7�&7�&9�:�
�F�+�/�(��j�j�"+��
�,��j�j�".��
�/��j�j�"1�'=��
�?��c�j�j��
�3�B2�/��j�j�"%�.�.��
�	�C+
�	�\�%�)�,����9�9���)4�):�):�)<�=���A��1�2������q����=�����9�9������
*�"�$��3�3�(x �x �vs
�8�$�$�j�s
��U>s�)"F