HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/__pycache__/test_launcher.cpython-311.pyc
�

��Vc�`�
��ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZejdkre
jd���ddlZdZej����d�����rdZd	d
ddejd
d�d�dejdd�d�dejddd�d�ddejid�d�iZeddd���Zd�dgd�e���D�����Zd�Zd �Zd!�Zd"�Z Gd#�d$��Z!Gd%�d&��Z"Gd'�d(e
j#e"��Z$dS))�N)�Path)�support�win32ztest only applies to Windowszpy.exez_d.exezpy_d.exe�PythonTestSuitezPython 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�ignored�PythonTestSuite/3.100zPythonTestSuite/3.100-32zPythonTestSuite/3.100-arm64)�	PY_PYTHON�
PY_PYTHON2�
PY_PYTHON3�
�
[defaults]c�V�g|]&\}}|dd�����d|����'S)�N�=)�lower��.0�k�vs   �&D:\Python311\Lib\test\test_launcher.py�
<listcomp>r!Is:��=�=�=���A��1�2�2�����������=�=�=�c�`���fd��|���D]\}}�|||���dS)Nc���t|t��rXtj||��5}|���D]\}}�|||���	ddd��dS#1swxYwYdSt|t
��r$tj||dtj|��dStd�	|�����)Nz&don't know how to create data for '{}')
�
isinstance�dict�winreg�CreateKeyEx�items�str�
SetValueEx�REG_SZ�	TypeError�format)�root�key�value�hkeyrr�_create_registry_datas      �r r3z3create_registry_data.<locals>._create_registry_dataNs����e�T�"�"�		T��#�D�#�.�.�
6�$�!�K�K�M�M�6�6�D�A�q�)�)�$��1�5�5�5�5�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�
6�
6���s�
#�
#�	T���d�C��v�}�e�D�D�D�D�D��D�K�K�E�R�R�S�S�Ss�(A"�"A&�)A&)r))r/�datarrr3s    @r �create_registry_datar5Ms`���
T�
T�
T�
T�
T��
�
���*�*���1���d�A�q�)�)�)�)�*�*r"c#�K�tj��D]?}	tj||��V��#t$r}|jdkrYd}~dS�d}~wwxYwdS)Ni)�	itertools�countr'�EnumKey�OSError�winerror)r/�i�exs   r �	enum_keysr>^s�����
�_�
�
����	��.��q�)�)�)�)�)�)���	�	�	��{�c�!�
�������������	�����s�1�
A�A�
A�Ac��tjtjz}t|��D]c}tj|||���5}t|t
|����ddd��n#1swxYwYtj||���ddS)N��access)r'�	KEY_WRITE�KEY_ENUMERATE_SUB_KEYS�list�OpenKey�delete_registry_datar>�	DeleteKey)r/�keys�ACCESSr0r2s     r rFrFhs���
�
�� =�
=�F��D�z�z�$�$��
�^�D�#�f�
5�
5�
5�	8�� ��y����7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8����s�#�#�#�#�$�$s�A,�,A0	�3A0	c	�*�d|�d�}tjdftjtjftjtjffD]N\}}	tjtj||tj|z�����dS#t$rY�KwxYwdS)NzSoftware\Python\PythonCore\z\InstallPathrr@TF)	r'�HKEY_CURRENT_USER�HKEY_LOCAL_MACHINE�KEY_WOW64_64KEY�KEY_WOW64_32KEY�CloseKeyrE�KEY_READr:)�tagr0r/�flags    r �is_installedrSps���
:��
:�
:�
:�C�	�	!�1�%�	�	"�F�$:�;�	�	"�F�$:�;��	�	�
��d�
	��O�F�N�4��V�_�t�=S�T�T�T�U�U�U��4�4���	�	�	��D�	�����5s�
6B�
B�Bc� �eZdZd�Zd�Zd�ZdS)�
PreservePyInic�J�t|��|_||_d|_dS�N)r�path�content�
_preserved)�selfrXrYs   r �__init__zPreservePyIni.__init__�s!����J�J��	��������r"c��	|j���|_n#t$r
d|_YnwxYw|j�|jd���dS)Nzutf-16��encoding)rX�
read_bytesrZ�FileNotFoundError�
write_textrY�r[s r �	__enter__zPreservePyIni.__enter__�sg��	#�"�i�2�2�4�4�D�O�O�� �	#�	#�	#�"�D�O�O�O�	#�����	���T�\�H��=�=�=�=�=s�!�5�5c��|j�|j���dS|j�|j��dSrW)rZrX�unlink�write_bytes)r[�exc_infos  r �__exit__zPreservePyIni.__exit__�sD���?�	3��I���������I�!�!�$�/�2�2�2�2�2r"N)�__name__�
__module__�__qualname__r\rdri�r"r rUrUsA���������
>�>�>�3�3�3�3�3r"rUc�~�eZdZdZed���Zd�Zdd�Zd�Ze	j
dd	���Ze	j
d
���ZdS)
�
RunPyMixinNc��d}tj��r'ttj��jtz}n[tjd���	d��D]1}|r-t|��tz}|�
��rn�2d}|�r	tj|dgtj
tj
tj
dd���5}|j���t!|j�����d�d��d	}|j���|�d
��ddd��n#1swxYwYtj�|��sd}n#t0$rd}YnwxYw|s,t3jd�t�����|S)N�PATH�;�-h�ascii�ignore)�stdin�stdout�stderrr_�errorsr� ��
zcannot locate '{}' for test)�	sysconfig�is_python_buildr�sys�
executable�parent�PY_EXE�os�getenv�split�is_file�
subprocess�Popen�PIPErv�close�nextrw�
splitlines�
rpartition�read�wait�version�
startswithr:�unittest�SkipTestr.)�cls�py_exe�pr�s    r �find_pyzRunPyMixin.find_py�s������$�&�&�		��#�.�)�)�0�6�9�F�F��Y�v�&�&�,�,�S�1�1�
�
����!�!�W�W�v�-�F��~�~�'�'��������	�
��%��T�N�$�/�%�?�%�?�$�#�
������G�M�M�O�O�O�"�1�8�n�n�7�7�9�9�!�<�G�G��L�L�Q�O�G��H�M�M�O�O�O��F�F�2�J�J�J��������������������{�-�-�g�6�6�"�!�F����
�
�
�����
�����	��#�-�4�4�V�<�<���
��
s7�:F�B
E/�#F�/E3�3F�6E3�7$F�F+�*F+c�P�|js|���|_|jSrW)r�r�rcs r �
get_py_exezRunPyMixin.get_py_exe�s#���{�	)��,�,�.�.�D�K��{�r"Frc��
�|js|���|_hd��
i�
fd�tj���D���ddd��d�|pi���D���}|s
|jg|�}tj|||jt
jt
jt
j���5}|j�	��|�
d��|j����
dd	��}|j����
d
d	��}ddd��n#1swxYwY|j|krpt jrd|sbt%d��t%|jg|���t%d��t%|��t%d
��t%|��|r/|j|kr$tj|j|jg|�||���|�||j��d�|���D��}	||	d<||	d<|	S)N>rrr�VIRTUAL_ENVc�l��i|]0\}}|����v�|���|��1Srm��upper)rrrrus   �r �
<dictcomp>z%RunPyMixin.run_py.<locals>.<dictcomp>�s9���V�V�V���1�a�g�g�i�i�v�>U�V�q�w�w�y�y�!�V�V�Vr"�1)�PYLAUNCHER_DEBUG�PYLAUNCHER_DRYRUNc�>�i|]\}}|���|��Srmr�rs   r r�z%RunPyMixin.run_py.<locals>.<dictcomp>�s&��<�<�<���1�q�w�w�y�y�!�<�<�<r")�envr�rvrwrxr|�utf-8�replacertz
++ COMMAND ++z++ STDOUT ++z++ STDERR ++c���i|]b}|�d���d|v�|�d��d|�d��d�����cS)�#�:rr{)r��	partition�lstrip)r�ss  r r�z%RunPyMixin.run_py.<locals>.<dictcomp>�sx��
�
�
���<�<��$�$�
�*-���
�
�K�K����Q�����S�!1�!1�!�!4�!;�!;�!=�!=�
�
�
r"rwrx)r�r�r��environr)r�r�r�rvr�r�rwr��decoderx�
returncoder�verbose�print�CalledProcessError�assertEqualr�)r[�argsr��
allow_fail�expect_returncode�argvr��out�errr4rus          @r �run_pyzRunPyMixin.run_py�s�����{�	)��,�,�.�.�D�K�I�I�I��
�V�V�V�V��
�(8�(8�(:�(:�V�V�V�
� #�!$�
�
�
�=�<����(9�(9�(;�(;�<�<�<�	
���	(��K�'�$�'�D�
�
����{��/��?��?�

�
�
�	=��
�G�M�M�O�O�O�
�F�F�2�J�J�J��(�-�-�/�/�(�(��)�<�<�C��(�-�-�/�/�(�(��)�<�<�C�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�
�<�,�,�	���	��	��/�"�"�"��4�;�&��&�'�'�'��.�!�!�!��#�J�J�J��.�!�!�!��#�J�J�J��	>�!�,�*;�;�	>��/���t�{�>R�T�>R�TW�Y\�]�]�]����.���=�=�=�
�
��^�^�%�%�
�
�
��
��X����X���s�B	E�E�Ec��tj�d��}|stjd���tt
|��dz|��S)N�LOCALAPPDATAz5LOCALAPPDATA environment variable is missing or emptyzpy.ini)r�r��getr�r�rUr)r[rY�
local_appdatas   r �py_inizRunPyMixin.py_ini�sT���
���~�6�6�
��	8��#�%7�8�8�
8��T�-�0�0�8�;�W�E�E�Er"r�c#�K�ttjtj�����dz��}|�||���	|V�|���dS#|���wxYw)N)�dirz.pyr^)r�tempfile�mktempr��getcwdrbrf)r[rYr_�files    r �scriptzRunPyMixin.script�sr�����H�O��	���4�4�4�u�<�=�=������(��3�3�3�	��J�J�J��K�K�M�M�M�M�M��D�K�K�M�M�M�M���s�A+�+Bc#�^K�tj��dz}|�dd���|ttj��jz}|���	|dt|j��ifV�tj
|��dS#tj
|��wxYw)N�ScriptsT)�exist_ok�parentsr�)r�cwd�mkdirrr��name�touchr*r��shutil�rmtree)r[�venv�venv_exes   r �	fake_venvzRunPyMixin.fake_venvs������x�z�z�I�%���
�
�D�$�
�/�/�/��4���/�/�4�4��������	 ��]�C���,<�,<�=�=�=�=�=��M�$�������F�M�$�������s�&B�B,)NFrN)r�)
rjrkrlr��classmethodr�r�r�r��
contextlib�contextmanagerr�r�rmr"r roro�s�������
�F��&�&��[�&�P���
+�+�+�+�ZF�F�F����������� � ��� � � r"roc��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$S)%�TestLauncherc���tjtjd��5}t|t��ddd��n#1swxYwYt
jrtjd��}dSdS)N�Software\Pythonz!reg query HKCU\Software\Python /s)	r'�	CreateKeyrKr5�	TEST_DATArr�r��check_output)r�r0r�s   r �
setUpClasszTestLauncher.setUpClasss���
�
�f�6�8K�
L�
L�	1�PS� ��i�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��?�	O��'�(M�N�N�A�A�A�	O�	Os�A�A�	Ac���tjtjdtjtjz���5}t|t��ddd��dS#1swxYwYdS)Nr�r@)r'rErKrBrCrFr�)r�r0s  r �
tearDownClasszTestLauncher.tearDownClasss���
�^�F�4�6I�RX�Rb�ek�fC�SC�D�D�D�	1�HK� ��i�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�A�A �#A c��|�dg��}|�|jt|d����|�tj�d��d|d��dS)N�-0�argv0rzrr�)r�r�r�rrr�r��r[r4s  r �test_versionzTestLauncher.test_versionsn���{�{�D�6�"�"�������d�4��=�&9�&9�:�:�:������.�.�s�3�3�A�6��Y��H�H�H�H�Hr"c�j�|�dg��}|�d|d��dS)Nrs�TruezSearchInfo.help�r�r�r�s  r �test_help_optionzTestLauncher.test_help_option#s7���{�{�D�6�"�"�������&7�!8�9�9�9�9�9r"c��dD]�\}}}|�|��5|�|g��}|�||d��|�||d��ddd��n#1swxYwY��dS)N))r�r��False)�-0pr�r�)�--listr�r�)�--list-pathsr�r�zSearchInfo.listzSearchInfo.listPaths)�subTestr�r�)r[�opt�v1�v2r4s     r �test_list_optionzTestLauncher.test_list_option's���
�		C�		C�K�C��R����c�"�"�
C�
C��{�{�C�5�)�)��� � ��T�*;�%<�=�=�=�� � ��T�*@�%A�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��
		C�		Cs�AA9�9A=	�A=	c��
��|�dg��}i}i�|d���D]D}tjd|��}|r+|�d��||�d��<�Et
D]U}t
|�
�
fd��
D��}|D]}d|�d|��}�
|d	�|<���d|�d
�d���V�fd�|���D��}		|��|	��dS#tj
r$td��t|d���xYw)
Nr�rw�\s*(.+?)\s+?(\*\s+)?(.+)$r�c�J��g|]}t�|t���|�� Srm�r%r&�r�t�company_datas  �r r!z*TestLauncher.test_list.<locals>.<listcomp>=�,���Q�Q�Q�!�z�,�q�/�4�/P�/P�Q�A�Q�Q�Qr"�-V:�/r	�/ignoredc�$��i|]\}}|�v�	||��
Srmrm�rrr�expects   �r r�z*TestLauncher.test_list.<locals>.<dictcomp>C�(���@�@�@�4�1�a�A��K�@�!�Q�@�@�@r"�*** STDOUT ***)r�r��re�match�groupr��popr)�assertDictEqualrr�r�)r[r4�found�line�m�company�tagsrQ�arg�actualr�rs          @@r �	test_listzTestLauncher.test_list3s������{�{�H�:�&�&��������N�-�-�/�/�	/�	/�D���5�t�<�<�A��
/�$%�G�G�A�J�J��a�g�g�a�j�j�!�� �	6�	6�G�$�W�-�L�Q�Q�Q�Q�|�Q�Q�Q�D��
?�
?��+�G�+�+�c�+�+��*�3�/�
�>��s����J�J�.�W�.�.�.��5�5�5�5�@�@�@�@�5�;�;�=�=�@�@�@��	�� � ���0�0�0�0�0��	���
&��&�'�'�'��d�8�n�%�%�%����s�:D�3Ec	����|�dg��}i}i�|d���D]D}tjd|��}|r+|�d��||�d��<�Et
D]�}t
|��fd��D��}|D]�}d|�d|��}�|d	}		|	d
�|<	�|xxd|	dzz
cc<n#t$rYnwxYw�P#t$rGtt|	d��ttj
��jz���|<Y��wxYw��d|�d
�d���ވfd�|�
��D��}
	|��|
��dS#tjr$t#d��t#|d���xYw)Nr�rwr�rr�c�J��g|]}t�|t���|�� Srmr�r�s  �r r!z0TestLauncher.test_list_paths.<locals>.<listcomp>Vr�r"r�r�r
rrzrr�c�$��i|]\}}|�v�	||��
Srmrmrs   �r r�z0TestLauncher.test_list_paths.<locals>.<dictcomp>err"r)r�r�rrrr��KeyErrorr*rrr�r�rr)r	rr�r�)
r[r4r
rrr
rrQr�installrr�rs
           @@r �test_list_pathszTestLauncher.test_list_pathsLs/�����{�{�N�+�,�,��������N�-�-�/�/�	/�	/�D���5�t�<�<�A��
/�$%�G�G�A�J�J��a�g�g�a�j�j�!�� �	6�	6�G�$�W�-�L�Q�Q�Q�Q�|�Q�Q�Q�D��

W�

W��+�G�+�+�c�+�+��&�s�+�M�:��W�")�*:�";�F�3�K���s����s�W�5J�-K�'K�K������#�������������W�W�W�"%�d�7�4�=�&9�&9�D���<P�<P�<U�&U�"V�"V�F�3�K�K�K�W����
�J�J�.�W�.�.�.��5�5�5�5�@�@�@�@�5�;�;�=�=�@�@�@��	�� � ���0�0�0�0�0��	���
&��&�'�'�'��d�8�n�%�%�%����sC�;C2�C!� C2�!
C.�+C2�-C.�.C2�2AE�E�F�3G
c���d}|�d|�d�g��}|�d|d��|�||d��|�d|d��dS)	Nrr�r�r�
LaunchCommand�env.companyr�env.tagr��r[r
r4s   r �test_filter_to_companyz#TestLauncher.test_filter_to_companyns}��#���{�{�,�'�,�,�,�-�.�.������D��$9�:�:�:�����$�}�"5�6�6�6�����$�y�/�2�2�2�2�2r"c��d}|�d|�d�gtd������}|�d|d��|�||d	��|�d
|d��dS)Nrr�r�z3.0)r�r�rrrrr)r�r&r�rs   r �#test_filter_to_company_with_defaultz0TestLauncher.test_filter_to_company_with_defaultus���#���{�{�,�'�,�,�,�-�4�%�3H�3H�3H�{�I�I������D��$9�:�:�:�����$�}�"5�6�6�6�����$�y�/�2�2�2�2�2r"c��d}|�dg��}|�d|d��|�||d��|�d|d��|�dg��}|�d	|d��|�||d��|�d
|d��|�dg��}|�d|d��|�||d��|�d
|d��dS)Nrz-V:3.100rrrrrz
-V:3.100-3rrz
-V:3.100-az"X.Y-arm64.exe -X fake_arg_for_testrr�rs   r �test_filter_to_tagzTestLauncher.test_filter_to_tag|s7��#���{�{�K�=�)�)������D��$9�:�:�:�����$�}�"5�6�6�6�����$�y�/�2�2�2��{�{�M�?�+�+������t�O�'<�=�=�=�����$�}�"5�6�6�6�����T�)�_�5�5�5��{�{�M�?�+�+�����=�t�O�?T�U�U�U�����$�}�"5�6�6�6������Y��8�8�8�8�8r"c���d}|�d|�d�g��}|�d|d��|�||d��|�d|d��dS)	Nrr�z/3.1rrrrrr�rs   r �test_filter_to_company_and_tagz+TestLauncher.test_filter_to_company_and_tag�s}��#���{�{�/�'�/�/�/�0�1�1������D��$9�:�:�:�����$�}�"5�6�6�6�����$�y�/�2�2�2�2�2r"c�*�	|�dgd���}n'#tj$rtjd���wxYw|�d|d��|�|d�d��|d��dS)	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�7�D�D���,�	P�	P�	P��#�$N�O�O�O�	P��������t�M�':�;�;�;�����Y��2�2�4�8�8�$�y�/�J�J�J�J�Js��$?c���	|�dgd���}nO#tj$r=td�t	dd��D����stjd����wxYw|�d|d	��|�|d
�	d��|d
��|�|d
�
d��|d
��dS)
Nz-3-32Tr'c3�<K�|]}td|�d���V��dS)r)�-32N)rS)rr<s  r �	<genexpr>z6TestLauncher.test_search_major_3_32.<locals>.<genexpr>�s2����G�G�Q�|�K��K�K�K�0�0�G�G�G�G�G�Gr"��z/requires at least one 32-bit Python 3.x installr(rrr)r.)r�r�r��any�ranger�r�r�r*r��endswithr�s  r �test_search_major_3_32z#TestLauncher.test_search_major_3_32�s���	��;�;��y�T�;�:�:�D�D���,�	�	�	��G�G�%��2�,�,�G�G�G�G�G�
[��'�(Y�Z�Z�Z��	����	
����t�M�':�;�;�;�����Y��2�2�4�8�8�$�y�/�J�J�J�����Y��0�0��7�7��i��I�I�I�I�Is
��AA'c�L�	|�dgd���}n8#tj$r&td��st	jd���YnwxYw|�d|d��|�|d�d	��|d��dS)
N�-2Tr'z2.7z(requires at least one Python 2.x installr(rrz2.)	r�r�r�rSr�r�r�r*r�r�s  r �test_search_major_2z TestLauncher.test_search_major_2�s���	T��;�;��v�$�;�7�7�D�D���,�	T�	T�	T���&�&�
T��'�(R�S�S�S�
T�
T�	T����	
����t�M�':�;�;�;�����Y��2�2�4�8�8�$�y�/�J�J�J�J�Js��2A�Ac�b�|�t��5|�dg��}ddd��n#1swxYwY|�d|d��|�d|d��|�d|d�����dS)N�-argr�SearchInfo.companyr�SearchInfo.tag�X.Y.exe -argrw�r��TEST_PY_COMMANDSr�r��stripr�s  r �test_py_defaultzTestLauncher.test_py_default�s���
�[�[�)�
*�
*�	)�	)��;�;��x�(�(�D�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)����*�D�1E�,F�G�G�G�����$�'7�"8�9�9�9������h��)=�)=�)?�)?�@�@�@�@�@s�>�A�Ac�d�|�t��5|�ddg��}ddd��n#1swxYwY|�d|d��|�d|d��|�d|d�����dS)	Nr7r:rr;rr<�X.Y-32.exe -argrwr>r�s  r �test_py2_defaultzTestLauncher.test_py2_default�s���
�[�[�)�
*�
*�	/�	/��;�;��f�~�.�.�D�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/����*�D�1E�,F�G�G�G�����T�*:�%;�<�<�<����*�D��N�,@�,@�,B�,B�C�C�C�C�C��?�A�Ac�d�|�t��5|�ddg��}ddd��n#1swxYwY|�d|d��|�d|d��|�d|d�����dS)	Nr&r:rr;rr<�'X.Y-arm64.exe -X fake_arg_for_test -argrwr>r�s  r �test_py3_defaultzTestLauncher.test_py3_default�s���
�[�[�)�
*�
*�	/�	/��;�;��f�~�.�.�D�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/����*�D�1E�,F�G�G�G������-=�(>�?�?�?����B�D��N�DX�DX�DZ�DZ�[�[�[�[�[rEc��|�dgt���}|�d|d��|�d|d��|�d|d�����dS)	Nr:rrr;rr<r=rw�r��TEST_PY_ENVr�r@r�s  r �test_py_default_envz TestLauncher.test_py_default_env�s~���{�{�F�8��{�5�5�����*�D�1E�,F�G�G�G�����$�'7�"8�9�9�9������h��)=�)=�)?�)?�@�@�@�@�@r"c��|�ddgt���}|�d|d��|�d|d��|�d|d	�����dS)
Nr7r:rrr;rr<rCrwrJr�s  r �test_py2_default_envz!TestLauncher.test_py2_default_env�s����{�{�D�&�>�{�{�;�;�����*�D�1E�,F�G�G�G�����T�*:�%;�<�<�<����*�D��N�,@�,@�,B�,B�C�C�C�C�Cr"c��|�ddgt���}|�d|d��|�d|d��|�d|d	�����dS)
Nr&r:rrr;rr<rGrwrJr�s  r �test_py3_default_envz!TestLauncher.test_py3_default_env�s����{�{�D�&�>�{�{�;�;�����*�D�1E�,F�G�G�G������-=�(>�?�?�?����B�D��N�DX�DX�DZ�DZ�[�[�[�[�[r"c��|�dgt���}d}|d���D]0}tjd|��}|r|�d��}n�1|�d|��dS)Nr�rrwz\s*-V:(.+?)\s+?\*\s+(.+)$r�r)r�rKr�rrrr�)r[r4�defaultrrs     r �test_py_default_in_listz$TestLauncher.test_py_default_in_list�s����{�{�D�6�{�{�3�3������N�-�-�/�/�	�	�D���5�t�<�<�A��
��'�'�!�*�*����
�	
���0�'�:�:�:�:�:r"c��|���5\}}|�dg|���}|d���D]Q}tjd|��}|r8|�t
|��|�d����n�R|�d��|�dg|���}|d���D]D}tjd|��}|r+|�d|�d����n�E|�d	��ddd��dS#1swxYwYdS)
Nr�rrwz
\s*\*\s+(.+)$r�zdid not find active venv pathr�zActive venvzdid not find active venv entry)	r�r�r�rrr�r*r�fail)r[r�r�r4rrs      r �test_virtualenv_in_listz$TestLauncher.test_virtualenv_in_list�s���
�^�^�
�
�	<��(�C��;�;��w�C�;�0�0�D��X��1�1�3�3�
;�
;���H�-�t�4�4�����$�$�S��]�]�A�G�G�A�J�J�?�?�?��E���	�	�9�:�:�:��;�;��v�3�;�/�/�D��X��1�1�3�3�
<�
<���H�-�t�4�4�����$�$�]�A�G�G�A�J�J�?�?�?��E���	�	�:�;�;�;�#	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�D)E�E�Ec�6�|���5\}}|�gi|�ddi����}|�dgi|�ddi����}ddd��n#1swxYwY|�|d���t	|����|�|dd��|�|d���t	|����|�|dd��dS)NrzPythonTestSuite/3rz-V:PythonTestSuite/3rwzSearchInfo.lowPriorityTagr�)r�r�r�r@r*�assertNotEqual)r[r�r��data1�data2s     r �test_virtualenv_with_envz%TestLauncher.test_virtualenv_with_env�s`��
�^�^�
�
�	i��(�C��K�K��(Q�3�(Q��=P�(Q�(Q�K�R�R�E��K�K�!7� 8�>g��>g�k�Sf�>g�>g�K�h�h�E�	i�	i�	i�	i�	i�	i�	i�	i�	i�	i�	i����	i�	i�	i�	i�	
����x��.�.�0�0�#�h�-�-�@�@�@�����:�;�V�D�D�D����E�(�O�1�1�3�3�S��]�]�C�C�C����E�"=�>��G�G�G�G�Gs�?A � A$�'A$c���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
N�#! /usr/bin/python -prearg�-postargrr;rr<�X.Y.exe -prearg �	 -postargrw�r�r?r�r�r�r@�r[r�r4s   r �test_py_shebangzTestLauncher.test_py_shebangsX��
�[�[�)�
*�
*�	9�	9����9�:�:�
9�f��{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G�����$�'7�"8�9�9�9����=�F�=�=�=�t�H�~�?S�?S�?U�?U�V�V�V�V�V�4�A,�A�	A,�A	�A,�A	�A,�,A0�3A0c���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
Nz#! /usr/bin/python2 -preargr^rr;rr<�X.Y-32.exe -prearg r`rwrarbs   r �test_py2_shebangzTestLauncher.test_py2_shebangsX��
�[�[�)�
*�
*�	9�	9����:�;�;�
9�v��{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G�����T�*:�%;�<�<�<����@�v�@�@�@�$�x�.�BV�BV�BX�BX�Y�Y�Y�Y�Yrdc���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
Nz#! /usr/bin/python3 -preargr^rr;rr<�+X.Y-arm64.exe -X fake_arg_for_test -prearg r`rwrarbs   r �test_py3_shebangzTestLauncher.test_py3_shebangs[��
�[�[�)�
*�
*�	9�	9����:�;�;�
9�v��{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G������-=�(>�?�?�?����X�v�X�X�X�Z^�_g�Zh�Zn�Zn�Zp�Zp�q�q�q�q�qrdc���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
Nz#! /usr/bin/python -prearg
r^rr;rr<r_r`rwrarbs   r �test_py_shebang_nlzTestLauncher.test_py_shebang_nlsX��
�[�[�)�
*�
*�	9�	9����;�<�<�
9���{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G�����$�'7�"8�9�9�9����=�F�=�=�=�t�H�~�?S�?S�?U�?U�V�V�V�V�Vrdc���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
Nz#! /usr/bin/python2 -prearg
r^rr;rr<rfr`rwrarbs   r �test_py2_shebang_nlz TestLauncher.test_py2_shebang_nl sX��
�[�[�)�
*�
*�	9�	9����<�=�=�
9���{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G�����T�*:�%;�<�<�<����@�v�@�@�@�$�x�.�BV�BV�BX�BX�Y�Y�Y�Y�Yrdc���|�t��5|�d��5}|�|dg��}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d��|�d|�d�|d	�����dS)
Nz#! /usr/bin/python3 -prearg
r^rr;rr<rir`rwrarbs   r �test_py3_shebang_nlz TestLauncher.test_py3_shebang_nl(s[��
�[�[�)�
*�
*�	9�	9����<�=�=�
9���{�{�F�J�#7�8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
���*�D�1E�,F�G�G�G������-=�(>�?�?�?����X�v�X�X�X�Z^�_g�Zh�Zn�Zn�Zp�Zp�q�q�q�q�qrdc���|�t��5|�d��5}|�|dgd|�d����}ddd��n#1swxYwYddd��n#1swxYwY|�d|d��|�d|d	��|�d
|�d�|d�����dS)Nr]r^z
"py.exe" "z
" -postarg)r�rr;rr<zX.Y.exe -prearg "rwrarbs   r �test_py_shebang_short_argv0z(TestLauncher.test_py_shebang_short_argv00s���
�[�[�)�
*�
*�	_�	_����9�:�:�
_�f��{�{�F�J�#7�>]�6�>]�>]�>]�{�^�^��
_�
_�
_�
_�
_�
_�
_�
_�
_�
_�
_����
_�
_�
_�
_�	_�	_�	_�	_�	_�	_�	_�	_�	_�	_�	_����	_�	_�	_�	_�	
���*�D�1E�,F�G�G�G�����$�'7�"8�9�9�9����?�V�?�?�?��h��AU�AU�AW�AW�X�X�X�X�Xs4�A2�A�A2�A	�A2�"A	�#A2�2A6�9A6c�*�|�d�ddg����5|�gdd���}ddd��n#1swxYwY|�d|d��|�d	|d
��dS)Nrrzpython=3.999-64T�g)r�r�z3.999-64r<r�zSearchInfo.oldStyleTag)r��joinr�r�r�s  r �test_py_handle_64_in_iniz%TestLauncher.test_py_handle_64_in_ini9s���
�[�[����L�2C�#D�E�E�
F�
F�	K�	K��;�;�r�d�c�;�J�J�D�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	
����T�*:�%;�<�<�<������&>�!?�@�@�@�@�@s�A�A�Ac� �ttj��j}|�t
��5|�d|�d���5}|�|dgdttj��j�dtj
d����i���}ddd��n#1swxYwYddd��n#1swxYwY|�tj�d|�d�|d	�����dS�
N�#! /usr/bin/env z -preargr^rqrrrz	 -prearg r`rw)
rrr��stemr�r?r�r�r�r�r�r�r@�r[rzr�r4s    r �test_search_pathzTestLauncher.test_search_path@sz���C�N�#�#�(��
�[�[�)�
*�
*�	�	����>��>�>�>�?�?�
�6��{�{��Z�(��D���$8�$8�$?�!U�!U�"�)�F�BS�BS�!U�!U�V�#����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���C�N�F�F�V�F�F�F��X��H\�H\�H^�H^�_�_�_�_�_�6�C�AB.�"C�.B2	�2C�5B2	�6C�C	�C	c� �ttj��j}|�t
��5|�d|�d���5}|�|dgdttj��j�dtj
d����i���}ddd��n#1swxYwYddd��n#1swxYwY|�tj�d|�d�|d	�����dSrx)
rrr�r�r�r?r�r�r�r�r�r�r@)r[r�r�r4s    r �test_search_path_exez!TestLauncher.test_search_path_exeJsz���C�N�#�#�(��
�[�[�)�
*�
*�	�	����>��>�>�>�?�?�
�6��{�{��Z�(��D���$8�$8�$?�!U�!U�"�)�F�BS�BS�!U�!U�V�#����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���C�N�F�F�V�F�F�F��X��H\�H\�H^�H^�_�_�_�_�_r}c���|���j}|�t��5|�d|����5}|�|gd|���j�dtjd����i���}ddd��n#1swxYwYddd��n#1swxYwY|�	d|��|d�
����dS)NryrqrrrzX.Y.exe rw)r�rzr�r?r�r�r�r�r�r�r@r{s    r �test_recursive_search_pathz'TestLauncher.test_recursive_search_pathUsj����� � �%��
�[�[�)�
*�
*�	�	����6��6�6�7�7�
�6��{�{��H��D�O�O�$5�$5�$<�!R�!R�r�y��?P�?P�!R�!R�S�#����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���,�F�,�,�d�8�n�.B�.B�.D�.D�E�E�E�E�Es6�B9�
A	B"�B9�"B&	�&B9�)B&	�*B9�9B=�B=c�r�|�dgddid���}|d���}	tjddgtjtj�	��|�d|��n&#t$r|�d
|��YnwxYw|�d|��dS)Nz-V:3.10�PYLAUNCHER_ALWAYS_INSTALLr��o)r�r�rwz
winget.exez	--version)rwrxzms-windows-store://�9PJPW5LDXLZ5)r�r@r��
check_callr��STDOUT�assertInra)r[r4�cmds   r �test_installzTestLauncher.test_install`s����{�{�I�;�-H�#�,N�be�{�f�f���8�n�"�"�$�$��	-��!�<��"=�j�o�^h�^o�p�p�p�p�
�M�M�,��,�,�,�,��!�	6�	6�	6��M�M�/��5�5�5�5�5�	6����
	
�
�
�n�c�*�*�*�*�*s�-A;�; B�BN)'rjrkrlr�r�r�r�r�r�rrrr r"r$r+r5r8rArDrHrLrNrPrSrVr[rcrgrjrlrnrprrrvr|rr�r�rmr"r r�r�
s��������O�O��[�O��1�1��[�1�
I�I�I�
:�:�:�
C�
C�
C����2 � � �D3�3�3�3�3�3�9�9�9�"3�3�3�K�K�K�	J�	J�	J�K�K�K�A�A�A�D�D�D�\�\�\�A�A�A�D�D�D�\�\�\�;�;�;�<�<�<�(	H�	H�	H�W�W�W�Z�Z�Z�r�r�r�W�W�W�Z�Z�Z�r�r�r�Y�Y�Y�A�A�A�`�`�`�	`�	`�	`�	F�	F�	F�+�+�+�+�+r"r�)%r�r7r�rr�r�rr}r��textwrapr��pathlibr�testr�platformr�r'r�r��casefoldr4�prefixr�r&rKrur)r?r5r>rFrSrUro�TestCaser�rmr"r �<module>r�s�����������	�	�	�	�	�	�	�	�
�
�
�
�����
�
�
�
������������������������������<�7��<�
�(�
�:�
;�
;�;��
�
�
�
���>�����%�%�h�&7�&7�&9�&9�:�:��
�F�
�*�/�(��j�"+���
�
�,��j�".���
�
�/��j�"1�'=���
�
�?��c�j��
�
�3��!
�	�H�d�%�)�,������9�9���=�=��):�):�)<�)<�=�=�=�����*�*�*�"���$�$�$����3�3�3�3�3�3�3�3�(w �w �w �w �w �w �w �w �t_+�_+�_+�_+�_+�8�$�j�_+�_+�_+�_+�_+r"