Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_launcher.cpython-312.pyc

�

'Μg�n�
�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      ��//usr/local/lib/python3.12/test/test_launcher.pyr.z3create_registry_data.<locals>._create_registry_data\s�����e�T�"��#�#�D�#�.�$�!�K�K�M�D�A�q�)�$��1�5�*�/�.���s�
#����d�C��v�}�}�e�D��D�K�K�E�R�S�S�/�.�s�#B'�'B0)r")r(�datar,r-r.s    @r/�create_registry_datar1[s+���
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;lsP����
�_�_�
��	��.�.��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/rCrCvsb��
�
�
�� =� =�
=�F��D�z��
�^�^�D�#�f�
5�� ��y���7�6�����s�#��
5�
5�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�sm�����$�$�&��#�.�.�)�0�0�6�9�F��Y�Y�v�&�,�,�S�1���!�!�W�v�-�F��~�~�'��	2����
��%�%��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�j!d
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}|j1d�s9d|vr5|j3d�d|j3d�dj5���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�replacerqu��?z
++ COMMAND ++z++ STDOUT ++z++ STDERR ++�#�:rrxrtru)r�r�r��environr"�upperr�r�r�rsr�r�rtr��decoderur��
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�s����{�{��,�,�.�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��(�(�-�-�/�(�(��)�<�D�D�X�s�S�C�
�
�<�<�,�,������/�"��4�;�;�&��&�'��.�!��#�J��.�!��#�J��!�,�,�*;�;��/�/����t�{�{�>R�T�>R�TW�Y\�]�]����.����=��^�^�%�
�%���<�<��$����
�K�K���Q�����S�!1�!�!4�!;�!;�!=�=�%�	
�
�
��X����X�����MW��=�
�
��.
s&�K,�#K,�K2�BK8�
AL�8Lc��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/d-�Z0y.)/�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.setUpClasssT��
�
�
�f�6�6�?�
L�PS� ��i�0�M��?�?��'�'�(M�N�A��M�
L�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�HK� ��i�0�D�D�D�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_option6so��
�K�C��R����c�"��{�{�C�5�)��� � ��T�*;�%<�=�� � ��T�*@�%A�B�#�"�

�#�"�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_listBsQ���{�{�H�:�&��������N�-�-�/�D����5�t�<�A��$%�G�G�A�J��a�g�g�a�j�!�0�!�G�$�W�-�L�+�Q�|�!�z�,�q�/�4�/P�A�|�D�Q����G�9�A�c�U�+��*�3�/�
�>��s���
�J�J��W�I�X�.��5�
!�$)�;�;�=�@�=�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�rrrrNr�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�!�0�!�G�$�W�-�L�+�Q�|�!�z�,�q�/�4�/P�A�|�D�Q����G�9�A�c�U�+��&�s�+�M�:��W�")�*:�";�F�3�K���s��s�W�5J�-K�'K�K���
�
�J�J��W�I�X�.��5�!�"$)�;�;�=�@�=�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�rrrrr
)r�rr�rs   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.100rrrrr
z-V:3.100-32rrz-V:3.100-arm64z"X.Y-arm64.exe -X fake_arg_for_testrr�rs   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.100rrrrr
r�rs   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�rs   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�
PythonCorerr
�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�,�s���z/requires at least one 32-bit Python 3.x installrrr
r 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�
	
����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 installrrr
z2.)	r�r�r�rPr�r�r�r!r�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�sw��
�[�[�)�
*��;�;��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/r2rr3rr4�X.Y-32.exe -argrtr6r�s  r/�test_py2_defaultzTestLauncher.test_py2_default�sz��
�[�[�)�
*��;�;��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)	Nrr2rr3rr4�'X.Y-arm64.exe -X fake_arg_for_test -argrtr6r�s  r/�test_py3_defaultzTestLauncher.test_py3_default�sz��
�[�[�)�
*��;�;��f�~�.�D�+����*�D�1E�,F�G������-=�(>�?����B�D��N�DX�DX�DZ�[�	+�
*�r=c���|jdgt��}|jd|d�|jd|d�|jd|dj��y)	Nr2rrr3rr4r5rt�r��TEST_PY_ENVr�r8r�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/r2rrr3rr4r;rtrBr�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)
Nrr2rrr3rr4r?rtrBr�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�rr3rr4zX.Y.exe --versionrt)r�r7r�r�r�r8)rXr�r0s   r/�test_py_default_short_argv0z(TestLauncher.test_py_default_short_argv0�s���
�[�[�)�
*�=���\�\�%�(��;�;��}�e�W�J�;O�;�P�D��$�$�%6��=Q�8R�S��$�$�W�d�3C�.D�E��$�$�%8�$�x�.�:N�:N�:P�Q�	)�(�>�+�
*�(�(��+�
*�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�rCr�r�r�r�r�)rXr0�defaultr�r�s     r/�test_py_default_in_listz$TestLauncher.test_py_default_in_list�si���{�{�D�6�{�{�3������N�-�-�/�D����5�t�<�A���'�'�!�*���	0�
	
���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�?��	4��	�	�9�:��;�;��v�3�;�/�D��X��1�1�3���H�H�-�t�4����$�$�]�A�G�G�A�J�?��	4��	�	�:�;�#�
�
�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�r8r#�assertNotEqual)rXr�r��data1�data2s     r/�test_virtualenv_with_envz%TestLauncher.test_virtualenv_with_envs���
�^�^�
��(�C��K�K��(Q�3�(Q��=P�(Q�K�R�E��K�K�!7� 8�>g��>g�k�Sf�>g�K�h�E��	
����x��.�.�0�#�h�-�@�����:�;�V�D����E�(�O�1�1�3�S��]�C����E�"=�>��G��
�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�-postargrr3rr4�X.Y.exe -prearg �	 -postargrt�r�r7r�r�r�r8�rXr�r0s   r/�test_py_shebangzTestLauncher.test_py_shebang"s���
�[�[�)�
*����9�:�f��{�{�F�J�#7�8��;�+�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	;�:��+�
*��!�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 -preargr[rr3rr4r\r]rtr^r_s   r/�test_python_shebangz TestLauncher.test_python_shebang*s���
�[�[�)�
*����0�1�V��{�{�F�J�#7�8��2�+�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	2�1��+�
*�rac�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 -preargr[rr3rr4�X.Y-32.exe -prearg r]rtr^r_s   r/�test_py2_shebangzTestLauncher.test_py2_shebang2s���
�[�[�)�
*����:�;�v��{�{�F�J�#7�8��<�+�	
���*�D�1E�,F�G�����T�*:�%;�<����.�v�h�i�@�$�x�.�BV�BV�BX�Y�	<�;��+�
*�rac�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 -preargr[rr3rr4�+X.Y-arm64.exe -X fake_arg_for_test -prearg r]rtr^r_s   r/�test_py3_shebangzTestLauncher.test_py3_shebang:s���
�[�[�)�
*����:�;�v��{�{�F�J�#7�8��<�+�	
���*�D�1E�,F�G������-=�(>�?����F�v�h�i�X�Z^�_g�Zh�Zn�Zn�Zp�q�	<�;��+�
*�rac�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
r[rr3rr4r\r]rtr^r_s   r/�test_py_shebang_nlzTestLauncher.test_py_shebang_nlBs���
�[�[�)�
*����;�<���{�{�F�J�#7�8��=�+�	
���*�D�1E�,F�G�����$�'7�"8�9����+�F�8�9�=�t�H�~�?S�?S�?U�V�	=�<��+�
*�rac�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
r[rr3rr4rer]rtr^r_s   r/�test_py2_shebang_nlz TestLauncher.test_py2_shebang_nlJs���
�[�[�)�
*����<�=���{�{�F�J�#7�8��>�+�	
���*�D�1E�,F�G�����T�*:�%;�<����.�v�h�i�@�$�x�.�BV�BV�BX�Y�	>�=��+�
*�rac�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
r[rr3rr4rhr]rtr^r_s   r/�test_py3_shebang_nlz TestLauncher.test_py3_shebang_nlRs���
�[�[�)�
*����<�=���{�{�F�J�#7�8��>�+�	
���*�D�1E�,F�G������-=�(>�?����F�v�h�i�X�Z^�_g�Zh�Zn�Zn�Zp�q�	>�=��+�
*�rac�x�|jt�5|jd�5}|j|dgd|�d���}ddd�ddd�|j	dd�|j	d|d	�|j	d
�d�|dj��y#1swY�cxYw#1swY�gxYw)NrZr[z
"py.exe" "z
" -postargrLrr3rr4zX.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-64r4r�zSearchInfo.oldStyleTag)r��joinr�r�r�s  r/�test_py_handle_64_in_iniz%TestLauncher.test_py_handle_64_in_inicso��
�[�[����L�2C�#D�E�
F��;�;�r�d�c�;�J�D�G�	
����T�*:�%;�<������&>�!?�@�	G�
F�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 -preargr[rnrorz	 -prearg r]rt)
rr|r}�stemr�r7r�r�r~r�r�r�r8�rXrxr�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�MxYwrv)
rr|r}r�r�r7r�r�r~r�r�r�r8)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^�_�@�?��+�
*�r{c��|j�j}|jt�5|j	d|���5}|j|gd|j�j�dtjd���i��}ddd�ddd�|jd��dj��y#1swY�8xYw#1swY�<xYw)NrwrnrorzX.Y.exe rt)r�rxr�r7r�r�r~r�r�r�r8rys    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�+�	
���8�F�8�,�d�8�n�.B�.B�.D�E�
8�7��+�
*�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.exerK)rtruzms-windows-store://�9PJPW5LDXLZ5)r�r8r��
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�r8r_s   r/�test_literal_shebang_absolutez*TestLauncher.test_literal_shebang_absolute�sW��
�[�[�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~r8r_s   r/�test_literal_shebang_relativez*TestLauncher.test_literal_shebang_relative�sg��
�[�[�:�
;�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� � �"�	
�:�
9��:�
9�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�sb��
�[�[�:�
;�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�r8r_s   r/�test_literal_shebang_commandz)TestLauncher.test_literal_shebang_command�st��
�[�[�)�
*����3�4���{�{�F�8�,��5�+�	
��� ���)���N� � �"�	
�5�4��+�
*�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�r8)rXr�r0r�s    r/�%test_literal_shebang_invalid_templatez2TestLauncher.test_literal_shebang_invalid_template�sj��
�[�[�6�
7�6��;�;��x�(�D�8����!6�6������h�f�V�H�%���N� � �"�	
�8�
7�s�A%�%A.c�*�|jd�5}|j|gd��}ddd�d}dj�D�cgc]#}|jd�r|j	���%}}|j|g|�y#1swY�^xYwcc}w)Nz#! /usr/bin/env python3.99rrz # Search PATH for python3.99.exeruz
# Search PATH)r�r�r�r�r8r�)rXr�r0r�r�rs      r/�!test_shebang_executable_extensionz.TestLauncher.test_shebang_executable_extension�s���
�[�[�5�
6�&��;�;��x�3�;�?�D�7�3��+/��>�+D�+D�+F�7�+F�4��_�_�_�5��*�*�,�+F��7����&��6�*�7�
6��7s�B�(B�B
N)1rgrhrir�r�r�r�r�r�rr	rrrrrr"r-r0r9r<r@rDrFrHrMrPrSrXr`rcrfrirkrmrorqrtrzr}rr�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�rrCrsr"�lowerr7r�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 �v{+�8�$�$�j�{+��U>s�)"F

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists