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

�Ke
}��<�	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZmZmZmZmZmZddlmZmZmZddlZddlZddlmZmZ	ddl Z n
#e!$rdZ YnwxYwej"e	j#e	j$kpe	j%e	j&kd��Z'eserej(d���e��dd���Z)Gd�d	ej*��Z+Gd
�de+��Z,e'Gd�d
e+����Z-e.dkrej/��dSdS)�N)
�captured_stdout�captured_stderr�
requires_zlib�*skip_if_broken_multiprocessing_synchronize�verbose�requires_subprocess�
is_emscripten�is_wasi�requires_venv_with_pip�
TEST_HOME_DIR)�can_symlink�EnvironmentVarGuard�rmtree)�patch�Mockz:cannot run venv.create from within a venv on this platformz)venv is not available on Emscripten/WASI.c�.�tj|tjtj|���}|���\}}|jrHt
r%|r#t
|�dd����tj|j|||���||fS)N)�stdout�stderr�encoding�utf-8�backslashreplace)	�
subprocess�Popen�PIPE�communicate�
returncoder�print�decode�CalledProcessError)�cmdr�p�out�errs     �8/usr/local/apps/python3/lib/python3.11/test/test_venv.py�check_outputr%,s�����������	�	�	�A��}�}���H�C���|�)��	;�s�	;��#�*�*�W�&8�9�9�:�:�:��+�
�L�#�s�C�)�)�	)���8�O�c�8�eZdZ	dZd�Zd�Zd�Zd�Zdd�d�Zd	S)
�BaseTesti�c�<�tj�tj����|_tjdkrd|_d|_d|_	n,d|_ddtjdd�zf|_d	|_	tj}tj�
|��d
|_tjdkrGtj�|��r(tj�|��s	d|_dSd
|_dS)N�nt�Scripts��Lib�Include�bin�lib�python%d.%d��include����win32TF)�os�path�realpath�tempfile�mkdtemp�env_dir�name�bindirr0r3�sys�version_info�_base_executable�split�exe�platform�lexists�exists�cannot_link_exe)�self�
executables  r$�setUpzBaseTest.setUp>s����w�'�'��(8�(:�(:�;�;���
�7�d�?�?�#�D�K��D�H�$�D�L�L��D�K��}�s�/?����/C�C�D�D�H�$�D�L��)�
��7�=�=��,�,�R�0����L�G�#�#�����
�+�+�
$��G�N�N�:�.�.�
$�$(�D� � � �#(�D� � � r&c�.�t|j��dS�N)rr;�rGs r$�tearDownzBaseTest.tearDownQs���t�|�����r&c��t��5}t��5}||i|��ddd��n#1swxYwYddd��n#1swxYwY|���|���fSrK)rr�getvalue)rG�func�args�kwargs�output�errors      r$�run_with_capturezBaseTest.run_with_captureTs���
�
�
�	&�&� �"�"�
&�e���d�%�f�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&���� � �%�.�.�"2�"2�2�2s,�A
�	3�A
�7	�A
�7	�A
�
A�Ac�:�tjj|jg|�R�SrK)r6r7�joinr;)rGrQs  r$�get_env_filezBaseTest.get_env_fileZs���w�|�D�L�0�4�0�0�0�0r&r�rc��t|j|�d|���5}|���}ddd��n#1swxYwY|S)N�rrY)�openrX�read)rGrrQ�f�results     r$�get_text_file_contentszBaseTest.get_text_file_contents]s���
�#�$�#�T�*�C�(�
C�
C�
C�	�q��V�V�X�X�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
s�<�A�AN)	�__name__�
__module__�__qualname__�maxDiffrIrMrUrXr`�r&r$r(r(:sv������$��G�)�)�)�&���3�3�3�1�1�1�6=�������r&r(c	�J�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
d���Ze
d	���Ze
e
je��d
��d�����Zejdkrd
Zn,dddddejdd�zfddejdd�zdffZd�Zd�Zd�Zd�Zd�Zd�Ze
je��d
��d���Ze
d���Ze
je��d
��d���Ze
jejdkd ��d!���Z e
d"���Z!e
d#���Z"e
j#ejdkd$��d%���Z$e
jejd&kd'��d(���Z%d)�Z&e
j#ejdkd$��e
d*�����Z'dS)+�	BasicTestc�~�|j|�}|�tj�|����dSrK)rX�
assertTruer6r7�isdir)rGrQ�fns   r$rjzBasicTest.isdires7��
�T�
��
%�������
�
�b�)�)�*�*�*�*�*r&c��	t|j��|�tj|j��|���dSrK)rr;rU�venv�create�_check_output_of_default_createrLs r$�test_defaults_with_str_pathz%BasicTest.test_defaults_with_str_pathisK��	�	�t�|�������d�k�4�<�8�8�8��,�,�.�.�.�.�.r&c���	t|j��|�tjtj|j����|���dSrK)rr;rUrmrn�pathlib�PathrorLs r$�test_defaults_with_pathlib_pathz)BasicTest.test_defaults_with_pathlib_pathqsU��	�	�t�|�������d�k�7�<���+E�+E�F�F�F��,�,�.�.�.�.�.r&c�8�|�|j��|�|j��|j|j�|�d��}tjd��dkotjdkotj
dk}|r3|�tj�
|����n2|�tj�|����|�d��}tj}tj�|��}|�d|z|��|�dtj�tj��z|��tjd	krd
nd}dtj�d
|�d|j��}|�||��|�|j|j��}tj�|��sP|�|j��}	t1d|	z��t1dtj|	��z��|�tj�|��d|z��dS)N�lib64�P��posix�darwin�
pyvenv.cfgz	home = %szexecutable = %sr*�z	 --copiesz
command = z -m venvz --without-pip �Contents of %r:�    %r�File %r should exist.)rjr=r3r0rX�struct�calcsizer6r<r>rCrir7�islink�assertFalserEr`r@�dirname�assertInr8rHr;rBr�listdir)
rGr!�
conditions�datarHr7�copiesr rk�bds
          r$roz)BasicTest._check_output_of_default_createys5���
�
�4�;�����
�
�4�<� � � ���
�D�H������g�&�&����s�+�+�q�0�1�r�w�'�7I�1��|�x�/�	��	0��O�O�B�G�N�N�1�-�-�.�.�.�.����R�W�^�^�A�.�.�/�/�/��*�*�<�8�8���)�
��w���z�*�*���
�
�k�D�(�$�/�/�/��
�
�'��g�&�&�s�~�6�6�7�8<�	>�	>�	>��w��}�}���+��X�3�>�X�X�6�X�X�$�,�X�X���
�
�c�4� � � �
�
�
�t�{�D�H�
5�
5���w�~�~�b�!�!�	-��"�"�4�;�/�/�B��#�b�(�)�)�)��(�R�Z��^�^�+�,�,�,��������r�*�*�,C�b�,H�I�I�I�I�Ir&c��gd�}|D]�\}}t|j��|stj��}ntjd
i||dvrdndi��}t	��|_t	��|_|�|j|j��|�	d��}|sdD]}|�
|d|�������tjdkr|d	kr��|�
|d|������dS)N))NN)�symlinksz--copies)�with_pip�
--without-pip)�system_site_packages�--system-site-packages)�clear�--clear)�upgrade�	--upgrade)�upgrade_deps�--upgrade-deps)�prompt�--prompt)r�r�FTr{)r�r�r�r�r�z
command = .* r*r�re)rr;rm�
EnvBuilderr�upgrade_dependencies�
_setup_piprUrnr`�assertNotRegexr6r<�assertRegex)rG�attrs�attr�opt�br�s      r$�test_config_file_command_keyz&BasicTest.test_config_file_command_key�sS��	
�	
�	
���	?�	?�I�D�#��4�<� � � ��
S��O�%�%����O�S�S��d�.F�&F�&F�U�U�D�Q�S�S��%)�V�V�A�"��6�6�A�L��!�!�!�(�D�L�9�9�9��.�.�|�<�<�D��
?�6�F�F�C��'�'��.D�s�.D�.D�E�E�E�E�F���$���4��#3�#3��� � ��'=��'=�'=�>�>�>�>�%	?�	?r&c��tj�|j��d}t	|j��tj��}|�|j|j��|�	|j��}|�
d��}|�|jd|z��|�
d|��t	|j��tjd���}|�|j|j��|�	|j��}|�
d��}|�|jd��|�d|��t	|j��tjd	���}tj�tj����}|�|j|j��|�	|j��}|�
d��}|�|jd|z��|�d
|z|��dS)N�r{z(%s) z	prompt = z	My prompt)r�z(My prompt) zprompt = 'My prompt'
�.zprompt = '%s'
)r6r7rAr;rrmr�rUrn�ensure_directoriesr`�assertEqualr��assertNotInr��basename�getcwd)rG�env_name�builder�contextr��cwds      r$�test_promptzBasicTest.test_prompt�s����7�=�=���.�.�q�1���t�|�����/�#�#�����g�n�d�l�;�;�;��,�,�T�\�:�:���*�*�<�8�8��������8�);�<�<�<�����d�+�+�+��t�|�����/��5�5�5�����g�n�d�l�;�;�;��,�,�T�\�:�:���*�*�<�8�8��������8�8�8��
�
�.��5�5�5��t�|�����/��-�-�-���g���r�y�{�{�+�+�����g�n�d�l�;�;�;��,�,�T�\�:�:���*�*�<�8�8��������3��7�7�7��
�
�'�#�-�t�4�4�4�4�4r&c�����tj��}tjdkrdnd}tj�tj��d}tj	��5}tj�
tj�|||�����tjdkr<tj�
tj���������fd�}|�
|��}td|��5|�|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr5r+r/r�c
���tj�|d��|d<��|�ddddddg��dS)Nr�-m�pip�installr��
setuptools)r6r7�normcaser�)r rR�
expect_exerGs  ��r$�pip_cmd_checkerz<BasicTest.test_upgrade_dependencies.<locals>.pip_cmd_checker�s_�����)�)�#�a�&�1�1��A��� � ��"���!�#��$������r&zvenv.subprocess.check_output)rmr�r>rCr6r7rArHr9�TemporaryDirectoryr�rWr8r�rr�)rGr��bin_path�
python_exe�fake_env_dirr��fake_contextr�s`      @r$�test_upgrade_dependenciesz#BasicTest.test_upgrade_dependencies�s������/�#�#�� #��� 7� 7�9�9�U���W�]�]�3�>�2�2�1�5�
�
�
(�
*�
*�	;�l���)�)�����\�8�Z�@�@���J��|�w�&�&��W�-�-�b�g�.>�.>�z�.J�.J�K�K�
�

�

�

�

�

�

�#�5�5�l�C�C�L��5��G�G�
;�
;��,�,�\�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�/	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s7�,B6E�"E�8E�E	�E�E	�E�E �#E c���	t|j��|�tj|j��t
j�|j|j|j	��}|ddg}d|jfd|jfdtjfdtjffD]Z\}}d|z|d<t|��\}}|�|���|���|���[dS)N�-c�prefix�exec_prefix�base_prefix�base_exec_prefixzimport sys; print(sys.%s)r2)rr;rUrmrnr6r7rWr=rBr>r�r�r%r��strip�encode)rG�envpyr r��expectedr"r#s       r$�
test_prefixeszBasicTest.test_prefixes�s���	�	�t�|�������d�k�4�<�8�8�8�����T�\�4�;���A�A���d�D�!��
�t�|�$�
�D�L�)�
�C�O�,�
��!5�6�	!8�	E�	E��F�H�
1�6�9�C��F�#�C�(�(�H�C�����S�Y�Y�[�[�(�/�/�*;�*;�V�D�D�D�D�	E�	Er&c��	t|j��|�tj|jd���t
j�|j|j|j	��}|ddg}dddttj����fdtj
��fdtj��ffD]�\}}|�|��5d	|z|d
<t!|��\}}|�|���|���|��ddd��n#1swxYwY��dS)NF�r�r��zget_preferred_scheme("prefix")rm�zget_default_scheme()rm�is_python_build()�get_makefile_filename()�get_config_h_filename()�%import sysconfig; print(sysconfig.%s)r2�rr;rUrmrnr6r7rWr=rB�str�	sysconfig�is_python_build�get_makefile_filename�get_config_h_filename�subTestr%r�r�r��rGr�r �callr�r"r#s       r$�test_sysconfigzBasicTest.test_sysconfigs���	�	�t�|�������d�k�4�<�%��H�H�H�����T�\�4�;���A�A���d�D�!��
7�,�
 �#�i�&?�&A�&A�"B�"B�C�
&�	�(G�(I�(I�J�
&�	�(G�(I�(I�J�L�	F�	F�N�D�(����d�#�#�
F�
F�@�4�G��A��'��,�,���S�� � ������h�o�o�.?�.?��E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��	F�	F��AD;�;D?	�D?	zNeeds symlinksc��	t|j��|�tj|jd���t
j�|j|j|j	��}|ddg}dddttj����fdtj
��fdtj��ffD]�\}}|�|��5d	|z|d
<t!|��\}}|�|���|���|��ddd��n#1swxYwY��dS)NTr�r�r�r�r�r�r�r�r2r�r�s       r$�test_sysconfig_symlinksz!BasicTest.test_sysconfig_symlinkss���	�	�t�|�������d�k�4�<�$��G�G�G�����T�\�4�;���A�A���d�D�!��
7�,�
 �#�i�&?�&A�&A�"B�"B�C�
&�	�(G�(I�(I�J�
&�	�(G�(I�(I�J�L�	F�	F�N�D�(����d�#�#�
F�
F�@�4�G��A��'��,�,���S�� � ������h�o�o�.?�.?��E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��	F�	Fr�r5))r+)r.r,)r-�
site-packages)r/)r3)r0r0r1Nr2r�c�,�	|D]�}tjj|jg|�R�}tj|��tj�||��}t|d��5}|�d��ddd��n#1swxYwY��dS)N�wb�Still here?)r6r7rWr;�mkdirr\�write)rG�paths�filename�subdirs�drkr^s       r$�create_contentszBasicTest.create_contents>s���	��	(�	(�G����T�\�4�G�4�4�4�A��H�Q�K�K�K�����a��*�*�B��b�$���
(�1�����'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��		(�	(s�&B�B	�B	c���	|�|jd��tj|j��|jD]�}tjj|jg|dz�R�}|�t
j�	|����t|d��5}|�|���d��ddd��n#1swxYwY��tj
d���}|�|j��|jD]S}tjj|jg|dz�R�}|�t
j�	|�����TdS)N�foo)r��rbr�T�r�)r��ENV_SUBDIRSrmrnr;r6r7rWrirEr\r�r]r�r�)rGr�rkr^r�s     r$�test_overwrite_existingz!BasicTest.test_overwrite_existingJs���	�	
���T�-�u�5�5�5���D�L�!�!�!��'�	;�	;�G����d�l�B�g��.@�B�B�B�B��O�O�B�G�N�N�2�.�.�/�/�/��b�$���
;�1�� � ������>�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;���/��-�-�-�����t�|�$�$�$��'�	1�	1�G����d�l�B�g��.@�B�B�B�B����R�W�^�^�B�/�/�0�0�0�0�	1�	1s� )C�C	�C	c�v�tj|��D]�}tj�||��}tj�|��stj�|��rtj|���utj�|��rt|����dSrK)	r6r�r7rWr��isfile�removerjr)rGr7rks   r$�clear_directoryzBasicTest.clear_directory\s����*�T�"�"�	�	�B�����d�B�'�'�B��w�~�~�b�!�!�
�R�W�^�^�B�%7�%7�
��	�"�
�
�
�
�����r�"�"�
��r�
�
�
��	�	r&c�t�|jdd�D]�}tjj|jg|�R�}t|d��5}|�d��ddd��n#1swxYwY|�ttftj|j��|�|j����dS)N�r�r&)
r�r6r7rWr;r\r��assertRaises�
ValueError�OSErrorrmrnr�)rGr�rkr^s    r$�test_unoverwritable_failsz#BasicTest.test_unoverwritable_failsds����%�b�q�b�)�	/�	/�E����d�l�3�U�3�3�3�B��b�$���
�1��������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����z�7�3�T�[�$�,�O�O�O�� � ���.�.�.�.�	/�	/s�A � A$	�'A$	c��	dD�]@}tj|���}|�|j|j��|�|j��|�|j��|j|j�|�	|j|j
��}tj�
|��sP|�	|j��}td|z��tdtj|��z��|�tj�
|��d|z����BdS)N�FT)r�r}r~r)rmr�rUrnr;rjr=r3r0rXrBr6r7rErr�ri)rGr�r�rkr�s     r$�test_upgradezBasicTest.test_upgradems)��	�%�	N�	N�G��o�g�6�6�6�G��!�!�'�.�$�,�?�?�?��J�J�t�{�#�#�#��J�J�t�|�$�$�$��D�J���!�!��"�"�4�;���9�9�B��7�>�>�"�%�%�
1��&�&�t�{�3�3���'�"�,�-�-�-��h���B���/�0�0�0��O�O�B�G�N�N�2�.�.�0G�"�0L�M�M�M�M�	N�	Nr&c���	dD]c\}}tjd|���}|�|j��|�d��}|�d|z|���ddS)N))T�true)F�falseT)r�r�r{z"include-system-site-packages = %s
)rmr�rnr;r`r�)rG�ssp�sr�r�s     r$�test_isolationzBasicTest.test_isolation�s���	�9�	K�	K�F�C���o�D�s�K�K�K�G��N�N�4�<�(�(�(��.�.�|�<�<�D��M�M�?�!�C�T�J�J�J�J�		K�	Kr&c��	dD]�}tjd|���}|�|j��|�|j|j��}|rl|jr3|�tj
�|������|�tj
�|������dS)Nr�T�r�r�)
rmr�rnr;rXr=rBrFr�r6r7r�ri)rG�uslr�rks    r$�test_symlinkingzBasicTest.test_symlinking�s���	�!�
	8�
	8�C��o�D�3�?�?�?�G��N�N�4�<�(�(�(��"�"�4�;���9�9�B��
8��'�8��$�$�R�W�^�^�B�%7�%7�8�8�8�8��O�O�B�G�N�N�2�$6�$6�7�7�7��
	8�
	8r&c��	t|j��|�tj|j��t
j�t
j�|j��|j	|j
��}t|ddg��\}}|�|�
��|�����dS)Nr��!import sys; print(sys.executable))rr;rUrmrnr6r7rWr8r=rBr%r�r�r��rGr�r"r#s    r$�test_executablezBasicTest.test_executable�s���	�	�t�|�������d�k�4�<�8�8�8�����R�W�-�-�d�l�;�;�!�[�$�(�4�4�����/�!1�2�2���S���������e�l�l�n�n�5�5�5�5�5r&c���	t|j��tjdd���}|�|j��t
j�t
j�|j��|j	|j
��}t|ddg��\}}|�|�
��|�����dS)NTrr�r�rr;rmr�rnr6r7rWr8r=rBr%r�r�r��rGr�r�r"r#s     r$�test_executable_symlinksz"BasicTest.test_executable_symlinks�s���	�	�t�|�����/��t�<�<�<�����t�|�$�$�$�����R�W�-�-�d�l�;�;�!�[�$�(�4�4�����/�!1�2�2���S���������e�l�l�n�n�5�5�5�5�5r&r*zonly relevant on Windowsc�6�	t|j��tj�tj�|j��d��}t
jd���}|�|��tj�||j	d��}tj�||j	|j
��}t|d|j
ddgd�	��\}}|�|�
��d
��dS)NuϼўТλФЙTr�zactivate.bat�&r�zprint(0)�oemrY�0)rr;r6r7rWr8rmr�rnr=rBr%r�r�)rGr;r��activater�r"r#s       r$�test_unicode_in_batch_filez$BasicTest.test_unicode_in_batch_file�s���	�	�t�|�����'�,�,�r�w�/�/���=�=�~�N�N���/��-�-�-�����w�����7�<�<����n�E�E������W�d�k�4�8�<�<���
�s�D�H�d�J�7��
�
�
���S�	
��������c�*�*�*�*�*r&c���	t��t|j��|�tj|j��tj�tj�	|j��|j
|j��}t|ddg��\}}|�
|���d�����dS)Nr�zrfrom multiprocessing import Pool; pool = Pool(1); print(pool.apply_async("Python".lower).get(3)); pool.terminate()�python)rrr;rUrmrnr6r7rWr8r=rBr%r�r�r�r	s    r$�test_multiprocessingzBasicTest.test_multiprocessing�s���	�	3�4�4�4��t�|�������d�k�4�<�8�8�8�����R�W�-�-�d�l�;�;�!�[�$�(�4�4�����
�! �!�!���S�
	
��������h�o�o�&7�&7�8�8�8�8�8r&c��	t��t|j��|�tj|j��tj�tj�	|j��|j
|j��}tj�td��}tj||g��dS)Nz_test_venv_multiprocessing.py)rrr;rUrmrnr6r7rWr8r=rBrr�
check_call)rGr��scripts   r$�test_multiprocessing_recursionz(BasicTest.test_multiprocessing_recursion�s���	�	3�4�4�4��t�|�������d�k�4�<�8�8�8�����R�W�-�-�d�l�;�;�!�[�$�(�4�4������m�-L�M�M����u�f�o�.�.�.�.�.r&znot relevant on Windowsc���tjd��}|�|�d��t|j��tjd���}|�|j��tj	�
|j|jd��}tj	�
|jd��}t|d��5}|�
d|�d	���ddd��n#1swxYwYt||g��\}}|�|d
�����|�|d
�����dS)N�bashzbash required for this testTr�rztest_strict.sh�wzset -euo pipefail
source z
deactivate
r|)�shutil�which�skipTestrr;rmr�rnr6r7rWr=r\r�r%r�r�)rGrr�r�test_scriptr^r"r#s        r$�%test_deactivate_with_strict_bash_optsz/BasicTest.test_deactivate_with_strict_bash_opts�s{���|�F�#�#���<��M�M�7�8�8�8��t�|�����/��-�-�-�����t�|�$�$�$��7�<�<���d�k�:�F�F���g�l�l�4�<�1A�B�B��
�+�s�
#�
#�	$�q�
�G�G�#�&�#�#�#�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$� ��{� 3�4�4���S�����b�i�i�k�k�*�*�*�����b�i�i�k�k�*�*�*�*�*s�C5�5C9�<C9rzzonly relevant on macOSc��t|j��tj��}|�|j��t
j�t
j�|j��|j	|j
��}t|ddg��\}}|�|�
��d�����dS)Nr�z5import os; print("__PYVENV_LAUNCHER__" in os.environ)�Falserr
s     r$�test_macos_envzBasicTest.test_macos_envs����t�|�����/�#�#�����t�|�$�$�$�����R�W�-�-�d�l�;�;�!�[�$�(�4�4�����C�!E�F�F���S���������g�n�n�&6�&6�7�7�7�7�7r&c��	t|j��|jtjz}|�t
tj|��|�t
tjtj	|����dSrK)
rr;r6�pathsepr�r�rmrnrrrs)rG�bad_itempaths  r$�test_pathsep_errorzBasicTest.test_pathsep_errorsk��	�	�t�|�����|�b�j�0�����*�d�k�<�@�@�@����*�d�k�7�<��3M�3M�N�N�N�N�Nr&c	��	t|j��tj}tj�tj����}|�	t|��tj�
||j��}t	j|��tjtj|��tj�
|||jd��}t	j|��tj�
|d��}dtjdd�z}tj�
|||��}g}tjD�]�}	|	�d��rStj�|	��r3tj|	tj�
||�����ktj�tj�
|	d����r�t	j|	��D]�}
|
dkr�	tj�
|	|
��}tj�|��rtj||���^tj�|��r3tj|tj�
||
��������o|�|	�����tj�
||j|j��ddd	|jg}tj�
|��}
t;jd
��}|rt;j��rFtj� tj�!tj����}tj"dkrd}nd
}tGj$|d|
||i���tj�
|j|j|j��}|dddg}tK|��\}}|�&|�'��|v��dS)Nr�zos.pyzpython%d%d.zipr2z.zipr�r�rmr��LIBDIRrz�DYLD_LIBRARY_PATH�LD_LIBRARY_PATH�
PYTHONPATH)�envz-Sr�zimport sys; print(sys.path))(rr;r>�
platlibdirr6r7r8r9r:�
addCleanuprWr=r�r�copy2rHr0�makedirsr?�endswithr��copyfiler��copyrj�copytree�appendrBr(r��get_config_varr��abspathr�rCrrr%rir�)rGr1�non_installed_dirr=�libdir�landmark�
stdlib_zip�zip_landmark�'additional_pythonpath_for_non_installed�eachpathr<rkr �
pythonpath�ld_library_path�ld_library_path_envr�r"r#s                   r$�%test_zippath_from_non_installed_posixz/BasicTest.test_zippath_from_non_installed_posixs���	�	�t�|�����^�
��G�,�,�X�-=�-?�-?�@�@������ 1�2�2�2�����/���=�=��
��������S�^�V�,�,�,�����/��T�X�a�[�I�I��
��F�����7�<�<���0�0��%��(8��!��(<�<�
��w�|�|�$5�$.�$.�0�0��35�/���	�	�H�� � ��(�(�
��7�>�>�(�+�+�E��O� �����%6�
�C�C�E�E�E����������X�w� ?� ?�@�@�
��J�x�0�0�H�H�D���.�.� �����h��5�5�B��w�~�~�b�)�)�H���B��/�/�/�/�����r�*�*�H����B�G�L�L���,F�,F�G�G�G��H�8�>�>�������w�|�|�-�t�{�D�H�E�E�����|�	���Z�_�_�3�5�5�
�
$�2�8�<�<���	O�)�";�"=�"=�	O� �g�o�o�b�g�o�o�c�n�.M�.M�N�N�O��<�8�#�#�"5���"3����c�#/��#6��#I�	J�	J�	J�	J�����T�\�4�;���A�A���d�D�"?�@����$�$���S�����+�+�-�-��4�5�5�5�5�5r&)(rarbrcrjrprtror�r�r��requireVenvCreater�r��unittest�
skipUnlessr
r�r>rCr�r?r�r�r�r�r�rrr
rr6r<rrr�skipIfr#r&r*rFrer&r$rgrgbsd������)�+�+�+�/�/�/�/�/�/�J�J�J�8?�?�?�>5�5�5�8;�;�;�<�E�E���E�$�F�F���F�*��X������(8�9�9�F�F�:�9���F�*�|�w���
���
���
�M�C�$4�R�a�R�$8�8�9�
�M�C�$4�R�a�R�$8�8�/�J�
��
(�
(�
(�1�1�1�$���/�/�/�N�N�N�*K�K�K��X������(8�9�9�8�8�:�9�8�.�
6�
6���
6��X������(8�9�9�6�6�:�9�6��X����D��*D�E�E�+�+�F�E�+� �9�9���9�(�/�/���/��X�_�R�W��_�&?�@�@�+�+�A�@�+�$�X�����1�3K�L�L�	8�	8�M�L�	8�O�O�O��X�_�R�W��_�&?�@�@��F6�F6���A�@�F6�F6�F6r&rgc�t�eZdZ	d�Zd�Zd�Zd�Zd�Zej	d���Z
e��d���ZdS)	�
EnsurePipTestc��tj�tj�|j��|j|j��}t|ddg��\}}|�d��}|�	|d��|�d��}|�	|�
��d��dS)Nr�z1try:
 import pip
except ImportError:
 print("OK")�latin-1r|�OK)r6r7rWr8r;r=rBr%rr�r�r	s    r$�assert_pip_not_installedz&EnsurePipTest.assert_pip_not_installedis�������R�W�-�-�d�l�;�;�!�[�$�(�4�4�����B�!D�E�E���S��j�j��#�#������b�!�!�!��j�j��#�#����������d�+�+�+�+�+r&c��t|j��|�tj|j��|���dSrK�rr;rUrmrnrPrLs r$�test_no_pip_by_defaultz$EnsurePipTest.test_no_pip_by_defaultvsD���t�|�������d�k�4�<�8�8�8��%�%�'�'�'�'�'r&c��t|j��|�tj|jd���|���dS)NF)r�rRrLs r$�test_explicit_no_pipz"EnsurePipTest.test_explicit_no_pip{sI���t�|�������d�k�4�<�%��H�H�H��%�%�'�'�'�'�'r&c�2�ttjd��5}|�|���d��ddd��n#1swxYwY|�tj�tj����dS)Nr�r&)r\r6�devnullr�r]rir7rE)rGr^s  r$�test_devnullzEnsurePipTest.test_devnull�s���
�"�*�d�
#�
#�	,�q����Q�V�V�X�X�s�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	
�������r�z�2�2�3�3�3�3�3s�)A�A�Ac��t|j��t��5}d|d<d|d<tj��5}||d<d}d}d}|fD]�\}}t
j�||��}	tj|	��t
j�|	|��}
t|
d	��5}|�
|��ddd��n#1swxYwY��|���5|�tj|j|d
���ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYt
j�t
j�|j��|j|j��}t%|dd
ddddddg	��\}
}|�d��}|�|d��|
�d��}
d�t-j����}|�|
dt1|���|��tj|j���d��}|�||
��t��5}|���5d|d<t%|dd
dddddg��\}
}ddd��n#1swxYwYddd��n#1swxYwY|�d��}t7jdd|t6j���}|�|���d��|
�d��}
|�d|
��|�d|
��|s|���dSdS)N�ignore�PYTHONWARNINGS�1�PIP_NO_INSTALL�HOMEz[global]
no-install=1)r�zpip.ini)z.pipzpip.confrT)r�r�z-Wzignore::DeprecationWarningzignore::ImportWarningz-Ir�r�z	--versionrNr|zpip {}zensurepip._uninstallzl^(WARNING: )?The directory .* or its parent directory is not owned or is not writable by the current user.*$)�flagszSuccessfully uninstalled pipz#Successfully uninstalled setuptools) rr;rr9r�r6r7rWr�r\r��nicer_errorrUrmrnr8r=rBr%rr��format�	ensurepip�version�len�fsencoder��re�sub�	MULTILINE�rstriprP)rGr��envvars�home_dir�
bad_config�win_location�posix_locationr��fname�dirpath�fpathr^r�r"r#�expected_versionr;s                 r$�do_test_with_pipzEnsurePipTest.do_test_with_pip�s7���t�|����
 �
"�
"�!	9�g�)1�G�$�%�),�G�$�%��,�.�.�
9�(�"*����5�
� 2��!5��'5�&7�,�,�N�G�U� �g�l�l�8�W�=�=�G��H�W�%�%�%��G�L�L��%�8�8�E��e�S�)�)�,�Q����
�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,��
�%�%�'�'�9�9��)�)�$�+�t�|�?S�37�*�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�
9�
9�
9�!	9�!	9�!	9�!	9�!	9�!	9�!	9�!	9�!	9�!	9�!	9����!	9�!	9�!	9�!	9�F����R�W�-�-�d�l�;�;�T�[�$�(�S�S�����.J��,�d��U�K�!)�*�*���S�
�j�j��#�#������b�!�!�!��j�j��#�#��#�?�?�9�+<�+>�+>�?�?������3�c�"2�3�3�3�4�6F�G�G�G��+�d�l�+�+�2�2�9�=�=���
�
�g�s�#�#�#�
!�
"�
"�	3�g��!�!�#�#�
3�
3�-5��(�)�'���6��1�4��0�)2�3�3���S�	
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��j�j��#�#���f�N�OQ����.�.�.��	
��������r�*�*�*��j�j��#�#���
�
�4�c�:�:�:��
�
�;�S�A�A�A�$�	,��)�)�+�+�+�+�+�	,�	,s��E�A8E�9C	�E�C
�E�"C
�#E�;)D0�$E�0D4�4E�7D4�8E�;E�E	�E�E	�E�E"�%E"�2L
� K3�'L
�3K7	�7L
�:K7	�;L
�
L�Lc#�K�		dV�dS#tj$rb}|jpd�d���}|jpd�d���}|�|�d|�d|����Yd}~dSd}~wwxYw)Nr&�replace)�errorsz

**Subprocess Output**
z

**Subprocess Error**
)rrrSrr�fail)rG�excr"r#s    r$r`zEnsurePipTest.nicer_error�s�����	�		��E�E�E�E�E���,�	�	�	��:�$��,�,�I�,�>�>�C��:�$��,�,�I�,�>�>�C��I�I��/�/�*-�/�/�),�/�/�
�
�
�
�
�
�
�
�
�����	���s��A<�AA7�7A<c�Z�|�d��|�d��dS)NFT)rsrLs r$�
test_with_pipzEnsurePipTest.test_with_pip�s0�����e�$�$�$����d�#�#�#�#�#r&N)
rarbrcrPrSrUrXrs�
contextlib�contextmanagerr`rrzrer&r$rLrLfs�������/�
,�
,�
,�(�(�(�
(�(�(�
4�4�4�W,�W,�W,�r�������$����$�$���$�$�$r&rL�__main__rK)0r{rbr6�os.pathrrrfrr�rr>r�r9�test.supportrrrrrrr	r
rr�test.support.os_helperr
rrrHrm�
unittest.mockrr�ctypes�ImportErrorrIr�r�r@rHrG�SkipTestr%�TestCaser(rgrLra�mainrer&r$�<module>r�s������������	�	�	�	���������	�	�	�	�
�
�
�
�
�
�
�
�����
�
�
�
���������A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�N�M�M�M�M�M�M�M�M�M���������%�%�%�%�%�%�%�%���M�M�M�M������
�F�F�F�����
(�H�'��J�#�/�!�.�
��s�~�-�@�B�B��
�I�G�I�
�(�
�G�
H�
H�H�����������&�&�&�&�&�x� �&�&�&�PB6�B6�B6�B6�B6��B6�B6�B6�H�R$�R$�R$�R$�R$�H�R$�R$���R$�j�z����H�M�O�O�O�O�O��s�%A*�*A4�3A4