Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_venv.cpython-311.opt-1.pyc

�

SԚg���J�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZmZmZmZmZmZmZmZmZmZmZddlmZmZmZddlZddlZddl m!Z!m"Z"	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�de.��Z/e*Gd
�de.����Z0e1dkrej2��dSdS)z|
Test harness for the venv module.

Copyright (C) 2011-2012 Vinay Sajip.
Licensed to the PSF under a contributor agreement.
�N)�captured_stdout�captured_stderr�*skip_if_broken_multiprocessing_synchronize�verbose�requires_subprocess�
is_emscripten�is_wasi�requires_venv_with_pip�
TEST_HOME_DIR�requires_resource�copy_python_src_ignore)�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     �+/usr/local/lib/python3.11/test/test_venv.py�check_outputr&.s�����������	�	�	�A��}�}���H�C���|�)��	;�s�	;��#�*�*�W�&8�9�9�:�:�:��+�
�L�#�s�C�)�)�	)���8�O�c�@�eZdZdZdZd�Zd�Zd�Zd�Zdd�d	�Z	d
�Z
dS)�BaseTestzBase class for venv tests.i�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�bindirr1r4�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<�rHs r%�tearDownzBaseTest.tearDownSs���t�|�����r'c��t��5}t��5}||i|��ddd��n#1swxYwYddd��n#1swxYwY|���|���fSrL)rr�getvalue)rH�func�args�kwargs�output�errors      r%�run_with_capturezBaseTest.run_with_captureVs���
�
�
�	&�&� �"�"�
&�e���d�%�f�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&���� � �%�.�.�"2�"2�2�2s,�A
�	3�A
�7	�A
�7	�A
�
A�Ac�:�tjj|jg|�R�SrL)r7r8�joinr<)rHrRs  r%�get_env_filezBaseTest.get_env_file\s���w�|�D�L�0�4�0�0�0�0r'r�rc��t|j|�d|���5}|���}ddd��n#1swxYwY|S)N�rrZ)�openrY�read)rHrrR�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�Ac�j�|�|��s|�d|�d|����dSdS)NzString z does not end with )�endswith�fail)rH�string�tails   r%�assertEndsWithzBaseTest.assertEndsWithdsL�����t�$�$�	G��I�I�E��E�E�T�E�E�F�F�F�F�F�	G�	Gr'N)�__name__�
__module__�__qualname__�__doc__�maxDiffrJrNrVrYrarg�r'r%r)r)<s�������$�$��G�)�)�)�&���3�3�3�1�1�1�6=������
G�G�G�G�Gr'r)c	��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ed	���Zed
���Z
eeje��d��d�����Zejd
krdZn,dddddejdd�zfddejdd�zdffZd�Zd�Zd�Zd�Zd�Zd�Zeje��d��d���Zed���Zeje��d��d���Zeje j!d kd!��d"���Z"eje j!d kd!��d#���Z#eje j!d kd$��d%���Z$eje j!d kd$��d&���Z%ed'���Z&ed(���Z'eje j!d kd)��d*���Z(ejejd+kd,��d-���Z)d.�Z*eje j!d kd)��ed/�����Z+dS)0�	BasicTestzTest venv module functionality.c�~�|j|�}|�tj�|����dSrL)rY�
assertTruer7r8�isdir)rHrR�fns   r%rrzBasicTest.isdirks7��
�T�
��
%�������
�
�b�)�)�*�*�*�*�*r'c��t|j��|�tj|j��|���dS)zQ
        Test the create function with default arguments and a str path.
        N)rr<rV�venv�create�_check_output_of_default_createrMs r%�test_defaults_with_str_pathz%BasicTest.test_defaults_with_str_pathosF��	�t�|�������d�k�4�<�8�8�8��,�,�.�.�.�.�.r'c���t|j��|�tjtj|j����|���dS)zZ
        Test the create function with default arguments and a pathlib.Path path.
        N)rr<rVrurv�pathlib�PathrwrMs r%�test_defaults_with_pathlib_pathz)BasicTest.test_defaults_with_pathlib_pathwsP��	�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.)rrr>r4r1rY�struct�calcsizer7r=r?rDrqr8�islink�assertFalserFrarA�dirname�assertInr9rIr<rCr�listdir)
rHr"�
conditions�datarIr8�copiesr!rs�bds
          r%rwz)BasicTest._check_output_of_default_creates5���
�
�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�rm)rr<ru�
EnvBuilderr�upgrade_dependencies�
_setup_piprVrvra�assertNotRegexr7r=�assertRegex)rH�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'
)r7r8rBr<rrur�rVrv�ensure_directoriesra�assertEqualr��assertNotInr��basename�getcwd)rH�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)Nr6r,r0r�c
���tj�|d��|d<��|�ddddddg��dS)Nr�-m�pip�installr��
setuptools)r7r8�normcaser�)r!rS�
expect_exerHs  ��r%�pip_cmd_checkerz<BasicTest.test_upgrade_dependencies.<locals>.pip_cmd_checker�s_�����)�)�#�a�&�1�1��A��� � ��"���!�#��$������r'zvenv.subprocess.check_output)rur�r?rDr7r8rBrIr:�TemporaryDirectoryr�rXr9r�rr�)rHr��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�8�t|j��|�tj|j��t
j�|j|j|j	��}|ddg}d|jfd|jfdtjfdtjffD]~\}}d|z|d<t|��\}}|�tj|��������tj|��|���dS)	z>
        Test that the prefix values are as expected.
        �-cN�prefix�exec_prefix�base_prefix�base_exec_prefixzimport sys; print(sys.%s)r3)rr<rVrurvr7r8rXr>rCr?r�r�r&r�rzr{�stripr)rH�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�	=�	=��F�H�
1�6�9�C��F�#�C�(�(�H�C�����W�\�#�)�)�+�+�*<�*<�*>�*>�?�?�$�\�(�3�3�V�
=�
=�
=�
=�	=�	=r'c��t|j��|�tj|jd���t
j�|j|j|j	��}|ddg}dddttj����fdtj
��fd	tj��ffD]�\}}|�|��5d
|z|d<t!|��\}}|�|���|���|��ddd��n#1swxYwY��dS)�R
        Test that the sysconfig functions work in a virtual environment.
        F�r�r�N�zget_preferred_scheme("prefix")ru�zget_default_scheme()ru�is_python_build()�get_makefile_filename()�get_config_h_filename()�%import sysconfig; print(sysconfig.%s)r3�rr<rVrurvr7r8rXr>rC�str�	sysconfig�is_python_build�get_makefile_filename�get_config_h_filename�subTestr&r�r��encode�rHr�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
��fd	tj��ffD]�\}}|�|��5d
|z|d<t!|��\}}|�|���|���|��ddd��n#1swxYwY��dS)r�Tr�r�Nr�r�r�r�r�r�r3r�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�r6))r,)r/r-)r.�
site-packages)r0)r4)r1r1r2Nr3r�c�*�|D]�}tjj|jg|�R�}tj|��tj�||��}t|d��5}|�d��ddd��n#1swxYwY��dS)zn
        Create some files in the environment which are unrelated
        to the virtual environment.
        �wb�Still here?N)r7r8rXr<�mkdirr]�write)rH�paths�filename�subdirs�drsr_s       r%�create_contentszBasicTest.create_contentsEs���
�	(�	(�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)zE
        Test creating environment in an existing directory.
        �foo)r��rbr�NT�r�)r��ENV_SUBDIRSrurvr<r7r8rXrqrFr]r�r^r�r�)rHr�rsr_r�s     r%�test_overwrite_existingz!BasicTest.test_overwrite_existingQs���	
���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|����dSrL)	r7r�r8rXr��isfile�removerrr)rHr8rss   r%�clear_directoryzBasicTest.clear_directorycs����*�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�r7r8rXr<r]r��assertRaises�
ValueError�OSErrorrurvr�)rHr�rsr_s    r%�test_unoverwritable_failsz#BasicTest.test_unoverwritable_failsks����%�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)zC
        Test upgrading an existing environment directory.
        �FT)r�r�r�r�N)rur�rVrvr<rrr>r4r1rYrCr7r8rFrr�rq)rHr�r�rsr�s     r%�test_upgradezBasicTest.test_upgradets$��%�	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)z:
        Test isolation from system site-packages
        ))T�true)F�falseT)r�r�r�z"include-system-site-packages = %s
N)rur�rvr<rar�)rH�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)z3
        Test symlinking works as expected
        rT�r�r�N)
rur�rvr<rYr>rCrGr�r7r8r�rq)rH�uslr�rss    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)�D
        Test that the sys.executable value is as expected.
        r��!import sys; print(sys.executable)N)rr<rVrurvr7r8rXr9r>rCr&r�r�r��rHr�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)rTr
r�rN�rr<rur�rvr7r8rXr9r>rCr&r�r�r��rHr�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+z&contains invalid characters on Windowsc��t|j��tjd��}|�|�d��d}t
j�t
j�|j��|��}tj
d���}|�|��t
j�||jd��}t
j�|jd��}t|d	��5}|�d
tj|���d���ddd��n#1swxYwYt#||g��\}}	|���}
|�|���|
dv��|�|
d
|�����dS)zK
        Test that the template strings are quoted properly (bash)
        �bashN�bash required for this test�
"';&&$e|'"Tr��activateztest_special_chars.sh�w�source �r
python -c 'import sys; print(sys.executable)'
python -c 'import os; print(os.environ["VIRTUAL_ENV"])'
deactivate
rr��rr<�shutil�which�skipTestr7r8rXr9rur�rvr>r]r��shlex�quoter&�
splitlinesrqr�rg)rHrr�r<r�r�test_scriptr_r#r$�liness           r%�test_special_chars_bashz!BasicTest.test_special_chars_bash�s���
	�t�|�����|�F�#�#���<��M�M�7�8�8�8�!���'�,�,�r�w�/�/���=�=�x�H�H���/��-�-�-�����w�����7�<�<����j�A�A���g�l�l�4�<�1H�I�I��
�+�s�
#�
#�	$�q�
�G�G�#�e�k�(�3�3�#�#�#�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
 ��{� 3�4�4���S���� � ��������)�)�U�1�X�5�6�6�6����E�!�H�h�o�o�&7�&7�8�8�8�8�8s�	,E�E�Ec���t|j��tjd��ptjd��}|�|�d��d}t
j�t
j�|j��|��}tj
d���}|�|��t
j�||jd��}t
j�|jd	��}t|d
��5}|�dtj|���d���ddd��n#1swxYwYt#||g��\}}	|���}
|�|���|
d
v��|�|
d|�����dS)zJ
        Test that the template strings are quoted properly (csh)
        �tcsh�cshNzcsh required for this testrTr�zactivate.cshztest_special_chars.cshrrr rr�r!)rHr-r�r<r�rr(r_r#r$r)s           r%�test_special_chars_cshz BasicTest.test_special_chars_csh�s���
	�t�|�����l�6�"�"�9�f�l�5�&9�&9���;��M�M�6�7�7�7�!���'�,�,�r�w�/�/���=�=�x�H�H���/��-�-�-�����w�����7�<�<����n�E�E���g�l�l�4�<�1I�J�J��
�+�s�
#�
#�	$�q�
�G�G�#�e�k�(�3�3�#�#�#�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
 ��k� 2�3�3���S���� � ��������)�)�U�1�X�5�6�6�6����E�!�H�h�o�o�&7�&7�8�8�8�8�8s�,E�E�Ezonly relevant on Windowsc
�J�t|j��d}tj�tj�|j��|��}t
jd���}|�|��tj�||j	d��}tj�|jd��}t|d��5}|�d|�d|j�d	|j�d
���ddd��n#1swxYwYt|g��\}}|���}	|�|���|	dv��|�|	d
|�����dS)zO
        Test that the template strings are quoted properly on Windows
        z'&&^$eTr��activate.batztest_special_chars.batrz@echo off
"z" & z* -c "import sys; print(sys.executable)" & z> -c "import os; print(os.environ['VIRTUAL_ENV'])" & deactivateNrr�)rr<r7r8rXr9rur�rvr>r]r�rCr&r'rqr�rg)
rHr�r<r�r�
test_batchr_r#r$r)s
          r%�test_special_chars_windowsz$BasicTest.test_special_chars_windows�s���
	�t�|�������'�,�,�r�w�/�/���=�=�x�H�H���/��-�-�-�����w�����7�<�<����n�E�E���W�\�\�$�,�0H�I�I�
�
�*�c�
"�
"�	"�a�
�G�G�!� �!�!��x�!�!��x�!�!�!�
"�
"�
"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"� ���-�-���S���� � ��������)�)�U�1�X�5�6�6�6����E�!�H�h�o�o�&7�&7�8�8�8�8�8s�*D�D�Dc�4�t|j��tj�tj�|j��d��}t
jd���}|�|��tj�||j	d��}tj�||j	|j
��}t|d|j
ddgd�	��\}}|�|�
��d
��dS)z0
        Test handling of Unicode paths
        uϼўТλФЙTr�r0�&r�zprint(0)�oemrZ�0N)rr<r7r8rXr9rur�rvr>rCr&r�r�)rHr<r�rr�r#r$s       r%�test_unicode_in_batch_filez$BasicTest.test_unicode_in_batch_files���
	�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)zA
        Test that the multiprocessing is able to spawn.
        r�zrfrom multiprocessing import Pool; pool = Pool(1); print(pool.apply_async("Python".lower).get(3)); pool.terminate()�pythonN)rrr<rVrurvr7r8rXr9r>rCr&r�r�r�rs    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|d|g��dS)zG
        Test that the multiprocessing is able to spawn itself
        z_test_venv_multiprocessing.py�-IN)rrr<rVrurvr7r8rXr9r>rCrr�
check_call)rHr��scripts   r%�test_multiprocessing_recursionz(BasicTest.test_multiprocessing_recursion8s���
	3�4�4�4��t�|�������d�k�4�<�8�8�8�����R�W�-�-�d�l�;�;�!�[�$�(�4�4������m�-L�M�M����u�d�F�3�4�4�4�4�4r'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)NrrTr�rztest_strict.shrzset -euo pipefail
source z
deactivate
r�)r"r#r$rr<rur�rvr7r8rXr>r]r�r&r�r�)rHrr�rr(r_r#r$s        r%�%test_deactivate_with_strict_bash_optsz/BasicTest.test_deactivate_with_strict_bash_optsFs{���|�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�<C9r�zonly 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)�Falserrs     r%�test_macos_envzBasicTest.test_macos_envYs����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	|����dS)zn
        Test that venv creation fails when the target directory contains
        the path separator.
        N)
rr<r7�pathsepr�rrurvrzr{)rH�bad_itempaths  r%�test_pathsep_errorzBasicTest.test_pathsep_erroresf��
	�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|	��}
t/|	|
��}|
D]�}||vr�|dkr�tj�
|	|��}
tj�|
��rtj|
|���ctj�|
��r:tj|
tj�
||��t.��������|�|	�����tj�
||j|j��d	d
d|jg}tj�
|��}t=jd��}|rt=j ��rFtj�!tj�"tj����}tj#d
krd}nd}tIj%|d|||i���tj�
|j|j|j��}|dddg}tM|��\}}|�'|�(��|v��dS)zr
        Test that when create venv from non-installed python, the zip path
        value is as expected.
        r�zos.pyzpython%d%d.zipNr3z.zipr�)�ignorer�rur��LIBDIRr��DYLD_LIBRARY_PATH�LD_LIBRARY_PATH�
PYTHONPATH)�envz-Sr�zimport sys; print(sys.path)))rr<r?�
platlibdirr7r8r9r:r;�
addCleanuprXr>r�r"�copy2rIr1�makedirsr@rcr��copyfiler�r
�copyrr�copytree�appendrCrFr��get_config_varr��abspathr�rDrr=r&rqr�)rHrP�non_installed_dirr>�libdir�landmark�
stdlib_zip�zip_landmark�'additional_pythonpath_for_non_installed�eachpath�names�
ignored_namesr=rsr!�
pythonpath�ld_library_path�ld_library_path_envr�r#r$s                     r%�%test_zippath_from_non_installed_posixz/BasicTest.test_zippath_from_non_installed_posixos���	�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� ?� ?�@�@�
��
�8�,�,�� 6�x�� G� G�
�!�
G�
G�D��}�,�,� ���.�.� �����h��5�5�B��w�~�~�b�)�)�G���B��/�/�/�/�����r�*�*�G����B�G�L�L���,F�,F�/E�G�G�G�G��
G�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'),rhrirjrkrrrxr|rwr�r�r��requireVenvCreater�r��unittest�
skipUnlessrr�r?rDr�r@r�r�r�rrrrrr�skipIfr7r=r*r.r2r7r:r?rArDrHrfrmr'r%rorohs�������)�)�+�+�+�/�/�/�/�/�/�J�J�J�8?�?�?�>5�5�5�8;�;�;�<�=�=���=�&�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�_�R�W��_�&N�O�O�9�9�P�O�9�2�X�_�R�W��_�&N�O�O�9�9�P�O�9�2�X����D��*D�E�E�9�9�F�E�9�,�X����D��*D�E�E�+�+�F�E�+� �9�9���9�(�5�5���5��X�_�R�W��_�&?�@�@�+�+�A�@�+�$�X�����1�3K�L�L�	8�	8�M�L�	8�O�O�O��X�_�R�W��_�&?�@�@��L6�L6���A�@�L6�L6�L6r'roc��eZdZdZd�Zd�Zd�Zd�Zd�Ze	j
d���Ze��e
d��d	�����Zd
S)�
EnsurePipTestz%Test venv module installation of pip.c��tj�tj�|j��|j|j��}t|ddg��\}}|�d��}|�	|d��|�d��}|�	|�
��d��dS)Nr�z1try:
 import pip
except ImportError:
 print("OK")�latin-1r��OK)r7r8rXr9r<r>rCr&rr�r�rs    r%�assert_pip_not_installedz&EnsurePipTest.assert_pip_not_installed�s�������R�W�-�-�d�l�;�;�!�[�$�(�4�4�����B�!D�E�E���S��j�j��#�#������b�!�!�!��j�j��#�#����������d�+�+�+�+�+r'c��t|j��|�tj|j��|���dSrL�rr<rVrurvrprMs r%�test_no_pip_by_defaultz$EnsurePipTest.test_no_pip_by_default�sD���t�|�������d�k�4�<�8�8�8��%�%�'�'�'�'�'r'c��t|j��|�tj|jd���|���dS)NF)r�rrrMs 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]r7�devnullr�r^rqr8rF)rHr_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)NrJ�PYTHONWARNINGS�1�PIP_NO_INSTALL�HOMEz[global]
no-install=1)r�zpip.ini)z.pipzpip.confrT)r�r�z-Wzignore::DeprecationWarningzignore::ImportWarningr<r�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<rr:r�r7r8rXr�r]r��nicer_errorrVrurvr9r>rCr&rr��format�	ensurepip�version�len�fsencoder��re�sub�	MULTILINE�rstriprp)rHr��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)z�
        Capture output from a failed subprocess for easier debugging.

        The output this handler produces can be a little hard to read,
        but at least it has all the details.
        Nr'�replace)�errorsz

**Subprocess Output**
z

**Subprocess Error**
)rr rTrrrd)rH�excr#r$s    r%rzEnsurePipTest.nicer_error<s�����		��E�E�E�E�E���,�	�	�	��:�$��,�,�I�,�>�>�C��:�$��,�,�I�,�>�>�C��I�I��/�/�*-�/�/�),�/�/�
�
�
�
�
�
�
�
�
�����	���s�
�A;�AA6�6A;�cpuc�Z�|�d��|�d��dS)NFT)r�rMs r%�
test_with_pipzEnsurePipTest.test_with_pipOs2��	
���e�$�$�$����d�#�#�#�#�#r'N)rhrirjrkrprsrurxr��
contextlib�contextmanagerrr
rr�rmr'r%rlrl�s�������/�/�
,�
,�
,�(�(�(�
(�(�(�
4�4�4�W,�W,�W,�r�������$������u���$�$�����$�$�$r'rl�__main__rL)3rkr�r�r7�os.pathrzr�r"r�rr?r�r:r%�test.supportrrrrrrr	r
rrr
�test.support.os_helperrrrrhru�
unittest.mockrr�ctypes�ImportErrorrir�r�rArIrg�SkipTestr&�TestCaser)rorlrh�mainrmr'r%�<module>r�s������������	�	�	�	���������	�	�	�	�
�
�
�
�
�
�
�
�����
�
�
�
�������������E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�
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�����������*G�*G�*G�*G�*G�x� �*G�*G�*G�XU	6�U	6�U	6�U	6�U	6��U	6�U	6�U	6�n�S$�S$�S$�S$�S$�H�S$�S$���S$�l�z����H�M�O�O�O�O�O��s�,A1�1A;�:A;

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