
    dafm                     \   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZ ddlZddl Z ddl!m"Z"m#Z# 	 ddl$Z$ ejL                  e
jN                  e
jP                  k(  xs e
jR                  e
jT                  k7  d      Z+eser ejX                  d       e       dd       Z- G d	 d
ej\                        Z/ G d de/      Z0e+ G d de/             Z1e2dk(  r ejf                          yy# e%$ r dZ$Y w xY w)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TESTFNFakePath)patchMockz:cannot run venv.create from within a venv on this platformz)venv is not available on Emscripten/WASI.c                 <   t        j                  | t         j                  t         j                  |      }|j                         \  }}|j                  rEt
        r|rt        |j                  dd             t        j                  |j                  | ||      ||fS )N)stdoutstderrencodingutf-8backslashreplace)	
subprocessPopenPIPEcommunicate
returncoder   printdecodeCalledProcessError)cmdr   pouterrs        )/root/Python-3.12.4/Lib/test/test_venv.pycheck_outputr(   .   s    	A }}HC||s#**W&89:++LL#sC) 	)8O    c                   8    e Zd ZdZdZd Zd Zd Zd Zddd	Z	y
)BaseTestzBase class for venv tests.i  c                 F   t         j                  j                  t        j                               | _        t         j                  dk(  rd| _        d| _        d| _	        n+d| _        ddt        j                  d d z  f| _        d	| _	        t        j                  }t         j                  j                  |      d
   | _        t        j                  dk(  rFt         j                  j!                  |      r't         j                  j#                  |      sd| _        y d| _        y )NntScriptsLibIncludebinlibpython%d.%d   includewin32TF)ospathrealpathtempfilemkdtempenv_dirnamebindirr3   r6   sysversion_info_base_executablesplitexeplatformlexistsexistscannot_link_exe)self
executables     r'   setUpzBaseTest.setUp@   s    ww''(8(8(:;77d?#DKDH$DLDK}s/?/?/CCDDH$DL))
77==,R0LLG#
+GGNN:.#'D #(D r)   c                 .    t        | j                         y N)r   r>   rJ   s    r'   tearDownzBaseTest.tearDownS   s    t||r)   c                     t               5 }t               5 } ||i | d d d        d d d        j                         j                         fS # 1 sw Y   1xY w# 1 sw Y   5xY wrN   )r   r   getvalue)rJ   funcargskwargsoutputerrors         r'   run_with_capturezBaseTest.run_with_captureV   sd     	&& " &ed%f%&	&  %.."222& &	& 	&s!   A	AAA	AA$c                 V    t        j                  j                  | j                  g| S rN   )r9   r:   joinr>   )rJ   rT   s     r'   get_env_filezBaseTest.get_env_file\   s    ww||DLL0400r)   r   r   c                    t         | j                  | d|      5 }|j                         }d d d        |S # 1 sw Y   S xY w)Nrr\   )openr[   read)rJ   r   rT   fresults        r'   get_text_file_contentszBaseTest.get_text_file_contents_   sC    #$##T*C(C 	qVVXF		s	   7AN)
__name__
__module____qualname____doc__maxDiffrL   rP   rX   r[   rc    r)   r'   r+   r+   <   s(    $G)&31 6= r)   r+   c            	       4   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
ed	        Zed
        Ze ej                   e       d      d               Zej&                  dk(  rdZn,dddddej*                  dd z  fddej*                  dd z  dffZd Zd Zd Zd Zd Zd Z ej                   e       d      d        Zed        Z ej                   e       d      d        Z ej                  ej@                  d k(  d!      d"        Z!ed#        Z"ed$        Z# ejH                  ej@                  d k(  d%      d&        Z% ej                  ej&                  d'k(  d(      d)        Z&d* Z' ejH                  ej@                  d k(  d%      ed+               Z(d, Z)d- Z*y).	BasicTestzTest venv module functionality.c                 ~     | j                   | }| j                  t        j                  j	                  |             y rN   )r[   
assertTruer9   r:   isdir)rJ   rT   fns      r'   rn   zBasicTest.isdirg   s-    T%b)*r)   c                     t        | j                         | j                  t        j                  | j                         | j                          y)zQ
        Test the create function with default arguments and a str path.
        N)r   r>   rX   venvcreate_check_output_of_default_createrO   s    r'   test_defaults_with_str_pathz%BasicTest.test_defaults_with_str_pathk   s4     	t||dkk4<<8,,.r)   c                     t        | j                         | j                  t        j                  t        | j                               | j                          y)zW
        Test the create function with default arguments and a path-like path.
        N)r   r>   rX   rq   rr   r   rs   rO   s    r'   test_defaults_with_pathlikez%BasicTest.test_defaults_with_pathlikes   s9     	t||dkk8DLL+AB,,.r)   c                 J   | j                  | j                         | j                  | j                          | j                   | j                    | j	                  d      }t        j                  d      dk(  xr( t        j                  dk(  xr t        j                  dk7  }|r/| j                  t        j                  j                  |             n.| j                  t        j                  j                  |             | j!                  d      }t        j"                  }t        j                  j%                  |      }| j'                  d|z  |       | j'                  dt        j                  j)                  t        j*                        z  |       t        j                  d	k(  rd
nd}dt        j*                   d| d| j,                   }| j'                  ||       | j	                  | j                  | j.                        }t        j                  j                  |      sJ| j	                  | j                        }	t1        d|	z         t1        dt        j2                  |	      z         | j                  t        j                  j                  |      d|z         y )Nlib64P   posixdarwin
pyvenv.cfgz	home = %szexecutable = %sr-    z	 --copiesz
command = z -m venvz --without-pip Contents of %r:    %rFile %r should exist.)rn   r@   r6   r3   r[   structcalcsizer9   r?   rA   rF   rm   r:   islinkassertFalserH   rc   rC   dirnameassertInr;   rK   r>   rE   r    listdir)
rJ   r$   
conditionsdatarK   r:   copiesr#   ro   bds
             r'   rs   z)BasicTest._check_output_of_default_create{   s   

4;;

4<< 

DHHg&s+q0 1rww'7I 1||x/ 	OOBGGNN1-.RWW^^A./**<8))
wwz*kD($/'gg&&s~~678<	>ww}+3>>*(6(/$,,Xc4 t{{DHH5ww~~b!""4;;/B#b()(RZZ^+,r*,Cb,HIr)   c                    g d}|D ]  \  }}t        | j                         |st        j                         }nt        j                  d
i ||dv rdndi}t	               |_        t	               |_        | j                  |j                  | j                         | j                  d      }|sdD ]  }| j                  |d|         t        j                  dk(  r|d	k(  r| j                  |d|         y )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   ri   )r   r>   rq   
EnvBuilderr   upgrade_dependencies
_setup_piprX   rr   rc   assertNotRegexr9   r?   assertRegex)rJ   attrsattroptbr   s         r'   test_config_file_command_keyz&BasicTest.test_config_file_command_key   s    	
  	?ID#4<< OO%OO Sd.F&FUDQS%)VA"6AL!!!((DLL9..|<D6 FC''se.DEF $4#3  -u'=>%	?r)   c                    t         j                  j                  | j                        d   }t	        | j                         t        j                         }| j                  |j                  | j                         |j                  | j                        }| j                  d      }| j                  |j                  d|z         | j                  d|       t	        | j                         t        j                  d      }| j                  |j                  | j                         |j                  | j                        }| j                  d      }| j                  |j                  d       | j                  d|       t	        | j                         t        j                  d	      }t         j                  j                  t        j                                }| j                  |j                  | j                         |j                  | j                        }| j                  d      }| j                  |j                  d|z         | j                  d
|z  |       y )N   r}   z(%s) z	prompt = z	My prompt)r   z(My prompt) zprompt = 'My prompt'
.zprompt = '%s'
)r9   r:   rD   r>   r   rq   r   rX   rr   ensure_directoriesrc   assertEqualr   assertNotInr   basenamegetcwd)rJ   env_namebuildercontextr   cwds         r'   test_promptzBasicTest.test_prompt   s   77==.q1t||//#gnndll;,,T\\:**<88);<d+t||//5gnndll;,,T\\:**<88.5t||//-ggryy{+gnndll;,,T\\:**<837'#-t4r)   c                     t        j                         }t        j                  dk(  rdnd}t        j
                  j                  t        j                        d   }t        j                         5 }t        j
                  j                  t        j
                  j                  |||            t        j                  dk(  r<t        j
                  j                  t        j
                  j                               fd}|j                  |      }t        d|      5  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr8   r.   r2   r   c           	          t         j                  j                  | d         | d<   j                  | dddddg       y )Nr   -mpipinstallr   )r9   r:   normcaser   )r#   rU   
expect_exerJ   s     r'   pip_cmd_checkerz<BasicTest.test_upgrade_dependencies.<locals>.pip_cmd_checker   sG    ))#a&1A  "!#
r)   zvenv.subprocess.check_output)rq   r   rA   rF   r9   r:   rD   rK   r<   TemporaryDirectoryr   rZ   r;   r   r   r   )rJ   r   bin_path
python_exefake_env_dirr   fake_contextr   s   `      @r'   test_upgrade_dependenciesz#BasicTest.test_upgrade_dependencies   s   //# # 79UWW]]3>>215
((* 	;l))\8Z@J ||w&WW--bgg.>.>z.JK
 #55lCL5G ;,,\:;-	; 	;,; ;-	; 	;s%   2B1E#E5EE	EEc                 l   t        | j                         | j                  t        j                  | j                         t
        j                  j                  | j                  | j                  | j                        }|ddg}d| j                  fd| j                  fdt        j                  fdt        j                  ffD ]p  \  }}d|z  |d<   t        |      \  }}| j                  t        j                   |j#                         j%                               t        j                   |      |       r y)	z>
        Test that the prefix values are as expected.
        -cNprefixexec_prefixbase_prefixbase_exec_prefixzimport sys; print(sys.%s)r5   )r   r>   rX   rq   rr   r9   r:   rZ   r@   rE   rA   r   r   r(   r   pathlibPathstripr!   )rJ   envpyr#   r   expectedr%   r&   s          r'   test_prefixeszBasicTest.test_prefixes   s     	t||dkk4<<8T\\4;;AdD!t||$DLL)COO,!5!56	!8 	=FH
 169CF#C(HCW\\#))+*<*<*>?$\\(3V=	=r)   c                    t        | j                         | j                  t        j                  | j                  d       t
        j                  j                  | j                  | j                  | j                        }|ddg}dddt        t        j                               fdt        j                         fd	t        j                         ffD ]d  \  }}| j                  |      5  d
|z  |d<   t!        |      \  }}| j#                  |j%                         |j'                         |       ddd       f y# 1 sw Y   qxY w)R
        Test that the sysconfig functions work in a virtual environment.
        Fr   r   Nzget_preferred_scheme("prefix")rq   zget_default_scheme()rq   is_python_build()get_makefile_filename()get_config_h_filename()%import sysconfig; print(sysconfig.%s)r5   r   r>   rX   rq   rr   r9   r:   rZ   r@   rE   str	sysconfigis_python_buildget_makefile_filenameget_config_h_filenamesubTestr(   r   r   encoderJ   r   r#   callr   r%   r&   s          r'   test_sysconfigzBasicTest.test_sysconfig  s   
 	t||dkk4<<%HT\\4;;AdD! 7, #i&?&?&A"BC&	(G(G(IJ&	(G(G(IJL 	FND( d# F@4GA',S  hoo.?EF F	FF F   )AD::E	zNeeds symlinksc                    t        | j                         | j                  t        j                  | j                  d       t
        j                  j                  | j                  | j                  | j                        }|ddg}dddt        t        j                               fdt        j                         fd	t        j                         ffD ]d  \  }}| j                  |      5  d
|z  |d<   t!        |      \  }}| j#                  |j%                         |j'                         |       ddd       f y# 1 sw Y   qxY w)r   Tr   r   Nr   r   r   r   r   r   r5   r   r   s          r'   test_sysconfig_symlinksz!BasicTest.test_sysconfig_symlinks  s    	t||dkk4<<$GT\\4;;AdD! 7, #i&?&?&A"BC&	(G(G(IJ&	(G(G(IJL 	FND( d# F@4GA',S  hoo.?EF F	FF Fr   r8   ))r.   )r1   r/   )r0   site-packages)r2   )r6   )r3   r3   r4   Nr5   r   c                 4   |D ]  }t        j                  j                  | j                  g| }t        j                  |       t         j                  j                  ||      }t        |d      5 }|j                  d       ddd        y# 1 sw Y   xY w)zn
        Create some files in the environment which are unrelated
        to the virtual environment.
        wb   Still here?N)r9   r:   rZ   r>   mkdirr_   write)rJ   pathsfilenamesubdirsdro   ra   s          r'   create_contentszBasicTest.create_contents@  s~    
  	(GT\\4G4AHHQKa*Bb$ (1'( (		(( (s   1BB	c                    | j                  | j                  d       t        j                  | j                         | j                  D ]  }t        j                  j                  | j                  g|dz    }| j                  t
        j                  j                  |             t        |d      5 }| j                  |j                         d       ddd        t        j                  d      }|j                  | j                         | j                  D ]]  }t        j                  j                  | j                  g|dz    }| j                  t
        j                  j                  |             _ y# 1 sw Y   =xY w)zE
        Test creating environment in an existing directory.
        foo)r   rbr   NTr   )r   ENV_SUBDIRSrq   rr   r>   r9   r:   rZ   rm   rH   r_   r   r`   r   r   )rJ   r   ro   ra   r   s        r'   test_overwrite_existingz!BasicTest.test_overwrite_existingL  s#    	T--u5DLL!'' 	;GdllBg.@BBOOBGGNN2./b$ ;1  >:; ;	; //-t||$'' 	1GdllBg.@BBRWW^^B/0	1; ;s   2!E;;F	c                 v   t        j                  |      D ]  }t         j                  j                  ||      }t         j                  j	                  |      st         j                  j                  |      rt        j                  |       wt         j                  j                  |      st        |        y rN   )	r9   r   r:   rZ   r   isfileremovern   r   )rJ   r:   ro   s      r'   clear_directoryzBasicTest.clear_directory^  so    **T" 	BdB'Bww~~b!RWW^^B%7		"r"r
	r)   c                    | j                   d d D ]  }t        j                  j                  | j                  g| }t        |d      5 }|j                  d       d d d        | j                  t        t        ft        j                  | j                         | j                  | j                          y # 1 sw Y   \xY w)N   r   r)   )r   r9   r:   rZ   r>   r_   r   assertRaises
ValueErrorOSErrorrq   rr   r   )rJ   r   ro   ra   s       r'   test_unoverwritable_failsz#BasicTest.test_unoverwritable_failsf  s    %%bq) 	/Edll3U3Bb$ 1z73T[[$,,O  .	/ s   	B66B?	c                    dD ]O  }t        j                  |      }| j                  |j                  | j                         | j                  | j                         | j                  | j                          | j
                  | j                    | j                  | j                  | j                        }t        j                  j                  |      sJ| j                  | j                        }t        d|z         t        dt        j                  |      z         | j!                  t        j                  j                  |      d|z         R y)zC
        Test upgrading an existing environment directory.
        FT)r   r   r   r   N)rq   r   rX   rr   r>   rn   r@   r6   r3   r[   rE   r9   r:   rH   r    r   rm   )rJ   r   r   ro   r   s        r'   test_upgradezBasicTest.test_upgradeo  s     % 	NGoog6G!!'..$,,?JJt{{#JJt||$DJJ!""4;;9B77>>"%&&t{{3'",-hB/0OOBGGNN2.0G"0LM	Nr)   c                     dD ]]  \  }}t        j                  d|      }|j                  | j                         | j	                  d      }| j                  d|z  |       _ y)z:
        Test isolation from system site-packages
        ))Ttrue)FfalseT)r   r   r}   z"include-system-site-packages = %s
N)rq   r   rr   r>   rc   r   )rJ   sspsr   r   s        r'   test_isolationzBasicTest.test_isolation  s]     9 	KFCooDsKGNN4<<(..|<DMM?!CTJ		Kr)   c                    dD ]  }t        j                  d|      }|j                  | j                         | j	                  | j
                  | j                        }|s^| j                  r/| j                  t        j                  j                  |             | j                  t        j                  j                  |              y)z3
        Test symlinking works as expected
        r   Tr   r   N)rq   r   rr   r>   r[   r@   rE   rI   r   r9   r:   r   rm   )rJ   uslr   ro   s       r'   test_symlinkingzBasicTest.test_symlinking  s    
 ! 	8CooD3?GNN4<<(""4;;9B '' $$RWW^^B%78OOBGGNN2$67	8r)   c                    t        | j                         | j                  t        j                  | j                         t
        j                  j                  t
        j                  j                  | j                        | j                  | j                        }t        |ddg      \  }}| j                  |j                         |j                                y)D
        Test that the sys.executable value is as expected.
        r   !import sys; print(sys.executable)N)r   r>   rX   rq   rr   r9   r:   rZ   r;   r@   rE   r(   r   r   r   rJ   r   r%   r&   s       r'   test_executablezBasicTest.test_executable  s    
 	t||dkk4<<8RWW--dll;![[$((4/!1 2Selln5r)   c                    t        | j                         t        j                  dd      }|j	                  | j                         t
        j                  j                  t
        j                  j                  | j                        | j                  | j                        }t        |ddg      \  }}| j                  |j                         |j                                y)r  Tr  r   r  Nr   r>   rq   r   rr   r9   r:   rZ   r;   r@   rE   r(   r   r   r   rJ   r   r   r%   r&   s        r'   test_executable_symlinksz"BasicTest.test_executable_symlinks  s    
 	t||//t<t||$RWW--dll;![[$((4/!1 2Selln5r)   r-   zonly relevant on Windowsc                 H   t        | j                         t        j                  j	                  t        j                  j                  | j                        d      }t        j                  d      }|j                  |       t        j                  j	                  || j                  d      }t        j                  j	                  || j                  | j                        }t        |d| j                  ddgd	      \  }}| j                  |j                         d
       y)z0
        Test handling of Unicode paths
        u   ϼўТλФЙTr   zactivate.bat&r   zprint(0)oemr\   0N)r   r>   r9   r:   rZ   r;   rq   r   rr   r@   rE   r(   r   r   )rJ   r>   r   activater   r%   r&   s          r'   test_unicode_in_batch_filez$BasicTest.test_unicode_in_batch_file  s    
 	t||'',,rww//=~N//-w77<<nEWdkk488<sDHHdJ7
S 	c*r)   c                    t                t        | j                         | j                  t        j
                  | j                         t        j                  j                  t        j                  j                  | j                        | j                  | j                        }t        |ddg      \  }}| j                  |j                         dj                                y)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)r   r   r>   rX   rq   rr   r9   r:   rZ   r;   r@   rE   r(   r   r   r   r  s       r'   test_multiprocessingzBasicTest.test_multiprocessing  s     	34t||dkk4<<8RWW--dll;![[$((4!  !S
 	hoo&78r)   c                    t                t        | j                         | j                  t        j
                  | j                         t        j                  j                  t        j                  j                  | j                        | j                  | j                        }t        j                  j                  t        d      }t        j                  |d|g       y)zG
        Test that the multiprocessing is able to spawn itself
        z_test_venv_multiprocessing.py-IN)r   r   r>   rX   rq   rr   r9   r:   rZ   r;   r@   rE   r   r   
check_call)rJ   r   scripts      r'   test_multiprocessing_recursionz(BasicTest.test_multiprocessing_recursion  s    
 	34t||dkk4<<8RWW--dll;![[$((4m-LMudF34r)   znot relevant on Windowsc                    t        j                  d      }|| j                  d       t        | j                         t        j                  d      }|j                  | j                         t        j                  j                  | j                  | j                  d      }t        j                  j                  | j                  d      }t        |d      5 }|j                  d| d	       d d d        t        ||g      \  }}| j                  |d
j!                                | j                  |d
j!                                y # 1 sw Y   ZxY w)Nbashzbash required for this testTr   r  ztest_strict.shwzset -euo pipefail
source z
deactivate
r~   )shutilwhichskipTestr   r>   rq   r   rr   r9   r:   rZ   r@   r_   r   r(   r   r   )rJ   r#  r   r  test_scriptra   r%   r&   s           r'   %test_deactivate_with_strict_bash_optsz/BasicTest.test_deactivate_with_strict_bash_opts  s   ||F#<MM78t||//-t||$77<<dkk:Fggll4<<1AB+s# 	$qGG &Z (## $	$  { 34Sbiik*biik*	$ 	$s   E		Er|   zonly relevant on macOSc                    t        | j                         t        j                         }|j	                  | j                         t
        j                  j                  t
        j                  j                  | j                        | j                  | j                        }t        |ddg      \  }}| j                  |j                         dj                                y )Nr   z5import os; print("__PYVENV_LAUNCHER__" in os.environ)Falser  r  s        r'   test_macos_envzBasicTest.test_macos_env  s    t||//#t||$RWW--dll;![[$((4C!E FSgnn&67r)   c                    t        | j                         | j                  t        j                  z   }| j	                  t
        t        j                  |       | j	                  t
        t        j                  t        |             y)zn
        Test that venv creation fails when the target directory contains
        the path separator.
        N)	r   r>   r9   pathsepr   r   rq   rr   r   )rJ   bad_itempaths     r'   test_pathsep_errorzBasicTest.test_pathsep_error  sS    
 	t||||bjj0*dkk<@*dkk8L3IJr)   c           	      	   t        | j                         t        j                  }t        j
                  j                  t        j                               }| j                  t         |       t        j
                  j                  || j                        }t	        j                  |       t        j                  t        j                  |       t        j
                  j                  ||| j                   d         }t	        j"                  |       t        j
                  j                  |d      }dt        j$                  dd z  }t        j
                  j                  |||      }g }t        j
                  D ]  }	|	j'                  d      rUt        j
                  j)                  |	      s5t        j*                  |	t        j
                  j                  ||             jt        j
                  j)                  t        j
                  j                  |	d            rt	        j,                  |	      }
t/        |	|
      }|
D ]  }||v r|dk(  rt        j
                  j                  |	|      }t        j
                  j)                  |      rt        j0                  ||       dt        j
                  j3                  |      st        j4                  |t        j
                  j                  ||      t.                |j7                  |	        t        j
                  j                  || j                  | j8                        d	d
d| j                  g}t        j:                  j                  |      }t=        j>                  d      }|rt=        j@                         rJt        j
                  jC                  t        j
                  jE                  t        j                              }t        jF                  dk(  rd}nd}d|||i}t        jH                  jK                  d      x}r||d<   tM        jN                  ||       t        j
                  j                  | j                  | j                  | j8                        }|dddg}tQ        |      \  }}| jS                  |jU                         |v        y)zr
        Test that when create venv from non-installed python, the zip path
        value is as expected.
        r   zos.pyzpython%d%d.zipNr5   z.zipr   )ignorer   rq   r   LIBDIRr|   DYLD_LIBRARY_PATHLD_LIBRARY_PATH
PYTHONPATHASAN_OPTIONS)envz-Sr   zimport sys; print(sys.path))+r   r>   rA   
platlibdirr9   r:   r;   r<   r=   
addCleanuprZ   r@   r   r%  copy2rK   r3   makedirsrB   endswithr   copyfiler   r   copyrn   copytreeappendrE   r.  r   get_config_varr   abspathr   rF   environgetr   r  r(   rm   r   )rJ   r9  non_installed_dirr@   libdirlandmark
stdlib_zipzip_landmark'additional_pythonpath_for_non_installedeachpathnamesignored_namesr?   ro   r#   
pythonpathld_library_pathld_library_path_env	child_envasan_optionsr   r%   r&   s                          r'   %test_zippath_from_non_installed_posixz/BasicTest.test_zippath_from_non_installed_posix  sp    	t|| ^^
GG,,X-=-=-?@ 12/=
S^^V,/TXXa[I
F77<<0%(8(8!(<<
ww||$5$.$.0 35/  	H  (77>>(+OO %6
CE Xw ?@

8, 6x G! 
GD}, . h5Bww~~b)B/r*BGGLL,F/EG
G 8>>+	. ww||-t{{DHHE||	 ZZ__35

 $228<)";";"= ggoobggoocnn.MNO<<8#"5"3j#_
	 ::>>.99<9(4In%cy1T\\4;;A dD"?@$S++-45r)   c                 j   t        j                  | j                        }t        |       | j                  ^\  }}||z  dz  }t        j                  |       t        |d      5 }t        |d      D ]+  \  }}d| }| j                  |j                  d      |       - 	 ddd       y# 1 sw Y   yxY w)z
        Test that the `activate` shell script contains no CR LF.
        This is relevant for Cygwin, as the Windows build might have
        converted line endings accidentally.
        r  r   r   zCR LF found in line s   
N)r   r   r>   r   r   rq   rr   r_   	enumerater   r=  )	rJ   venv_dirscripts_dir_script_pathr   ilineerror_messages	            r'   .test_activate_shell_script_has_no_dos_newlinesz8BasicTest.test_activate_shell_script_has_no_dos_newliness  s     <<-x"..+,z9H+t$ 	H$VQ/ H4"6qc :  w!7GH	H 	H 	Hs   $;B))B2c                    t         j                  j                  }t        j                  dk(  r~dt
        t
        fdt        j                         t        j                         fg}dd l}t        j                  d      }|rcg |d||fd|j                  |      |j                  |      f}n6dt
        t
        fdt        j                         t        j                         fg}|D ]X  \  }}}| j                  | d|       5  |r| j                   |||             n| j                   |||             d d d        Z y # 1 sw Y   exY w)Nr8   Tr   ProgramFilesF-)rq   r   
_same_pathrA   rF   r   lowerupper_winapir9   getenvGetShortPathNameGetLongPathNamer   rm   r   )rJ   	same_pathtestsre  	progfilesr^   path1path2s           r'   test_venv_same_pathzBasicTest.test_venv_same_path  s>   OO..	<<7" vv&v||~v||~6E 		.1I9i0 733I>@W@WXa@bc vv&7E  % 	>OAueq01 >OOIeU$;<$$Yue%<=	> >	>> >s   4E  E		)+rd   re   rf   rg   rn   rt   rv   rs   r   r   r   requireVenvCreater   r   unittest
skipUnlessr   r   rA   rF   r   rB   r   r   r   r   r   r  r
  r  r  r9   r?   r  r  r!  skipIfr)  r,  r0  rT  r^  rn  ri   r)   r'   rk   rk   d   sU   )+//J8?>58;: = =& F F* X(89F : F* ||w
 MC$4$4Ra$889MC$4$4Ra$88/J

(1$/N*K X(898 :8. 
6 
6 X(896 :6 XD*DE+ F+  9 9( 5 5 X__RWW_&?@+ A+$ X13KL	8 M	8K X__RWW_&?@Q6  AQ6fH >r)   rk   c                       e Zd ZdZd Zd Zd Zd Zd Ze	j                  d        Z e        ed      d	               Zy
)EnsurePipTestz%Test venv module installation of pip.c                    t         j                  j                  t         j                  j                  | j                        | j
                  | j                        }t        |ddg      \  }}|j                  d      }| j                  |d       |j                  d      }| j                  |j                         d       y )Nr   z1try:
 import pip
except ImportError:
 print("OK")latin-1r~   OK)r9   r:   rZ   r;   r>   r@   rE   r(   r!   r   r   r  s       r'   assert_pip_not_installedz&EnsurePipTest.assert_pip_not_installed  s    RWW--dll;![[$((4B!D ES jj#b!jj#d+r)   c                     t        | j                         | j                  t        j                  | j                         | j                          y rN   r   r>   rX   rq   rr   rx  rO   s    r'   test_no_pip_by_defaultz$EnsurePipTest.test_no_pip_by_default  s2    t||dkk4<<8%%'r)   c                     t        | j                         | j                  t        j                  | j                  d       | j                          y )NF)r   rz  rO   s    r'   test_explicit_no_pipz"EnsurePipTest.test_explicit_no_pip  s7    t||dkk4<<%H%%'r)   c                    t        t        j                  d      5 }| j                  |j	                         d       d d d        | j                  t        j                  j                  t        j                               y # 1 sw Y   FxY w)Nr   r)   )r_   r9   devnullr   r`   rm   r:   rH   )rJ   ra   s     r'   test_devnullzEnsurePipTest.test_devnull  s^    
 "**d# 	,qQVVXs+	, 	rzz23	, 	,s   !BB
c                    t        | j                         t               5 }d|d<   d|d<   t        j                         5 }||d<   d}d}d}|fD ]  \  }}t
        j                  j                  ||      }	t        j                  |	       t
        j                  j                  |	|      }
t        |
d	      5 }|j                  |       d d d         | j                         5  | j                  t        j                  | j                  |d
       d d d        d d d        d d d        t
        j                  j                  t
        j                  j                  | j                        | j                   | j"                        }t%        |ddddddddg	      \  }}|j'                  d      }| j)                  |d       |j'                  d      }dj+                  t-        j.                               }| j)                  |d t1        |       |       t        j2                  | j                        j'                  d      }| j5                  ||       t               5 }| j                         5  d|d<   t%        |dddddddg      \  }}d d d        d d d        |j'                  d      }t7        j8                  dd|t6        j:                        }| j)                  |j=                         d       |j'                  d      }| j5                  d|       |s| j?                          y y # 1 sw Y   xY w# 1 sw Y   %xY w# 1 sw Y   *xY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr2  PYTHONWARNINGS1PIP_NO_INSTALLHOMEz[global]
no-install=1)r   zpip.ini)z.pipzpip.confr$  T)r   r   z-Wzignore::DeprecationWarningzignore::ImportWarningr  r   r   z	--versionrv  r~   zpip {}zensurepip._uninstallzl^(WARNING: )?The directory .* or its parent directory is not owned or is not writable by the current user.*$)flagszSuccessfully uninstalled pip) r   r>   r   r<   r   r9   r:   rZ   r   r_   r   nicer_errorrX   rq   rr   r;   r@   rE   r(   r!   r   format	ensurepipversionlenfsencoder   resub	MULTILINErstriprx  )rJ   r   envvarshome_dir
bad_configwin_locationposix_locationr   fnamedirpathfpathra   r   r%   r&   expected_versionr>   s                    r'   do_test_with_pipzEnsurePipTest.do_test_with_pip  s,   t|| " !	9g )1G$% ),G$% ,,. 9("*5
  2!5'5&7 ,NGU ggll8W=GHHW%GGLL%8EeS) ,Q
+, ,	, %%' 9))$++t||?S37 * 99#9!	9F RWW--dll;T[[$((S.J,dUK!) *S
 jj#b!jj##??9+<+<+>?3c"2346FG++dll+229=gs#
 !" 	3g!!# 3 -5()'6140)2 3S	3	3 jj# ff NOQ. 	r* jj#4c: $))+ $u, ,
9 9#9 9!	9 !	9l3 3	3 	3sw   MA6L?5L%	L?!.L2L?MM%*MM%%L/*L?2L<7L??M		MMM"	M%%M.c              #     K   	 d y# t         j                  $ rc}|j                  xs dj                  d      }|j                  xs dj                  d      }| j                  | d| d|        Y d}~yd}~ww xY ww)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**
)r   r"   rV   r!   r   fail)rJ   excr%   r&   s       r'   r  zEnsurePipTest.nicer_error  s     		,, 	::$,,I,>C::$,,I,>CII% **- /)),/ 	s+   B	 BA?AA:5B:A??Bcpuc                 H    | j                  d       | j                  d       y )NFT)r  rO   s    r'   test_with_pipzEnsurePipTest.test_with_pip0  s      	e$d#r)   N)rd   re   rf   rg   rx  r{  r}  r  r  
contextlibcontextmanagerr  r
   r   r  ri   r)   r'   rt  rt    s^    /
,(
(
4V,p  $ u$  $r)   rt  __main__rN   )4rg   r  r  r9   os.pathr   r  r%  r   r   rA   r   r<   test.supportr   r   r   r   r   r   r	   r
   r   r   r   test.support.os_helperr   r   r   r   r   rp  rq   unittest.mockr   r   ctypesImportErrorrq  r   r   rC   rK   ro  SkipTestr(   TestCaser+   rk   rt  rd   mainri   r)   r'   <module>r     sE     	   	    
  E E E E
6 6   % (H''JJ#//! .
s~~-@B 
 G
(

G
HH &x   &P{> {>z R$H R$ R$j zHMMO m  Fs   ,D! !D+*D+