
    z%i\                     N   	 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 d dl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jD                  e	jF                  e	jH                  k(  xs e	jJ                  e	jL                  k7  d      Z'eser ejP                  d       e       dd       Z) G d d	ejT                        Z+ G d
 de+      Z,e' G d de+             Z-e.dk(  r ej^                          yy# e!$ r dZ Y w xY w)    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)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                 <   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        B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_venv.pycheck_outputr%   -   s    	A }}HC||s#**W&89:++LL#sC) 	)8O    c                   6    e Zd Z	 dZd Zd Zd Zd ZdddZy	)
BaseTesti  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bindirr0   r3   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;   rG   s    r$   tearDownzBaseTest.tearDownR   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rK   )r   r   getvalue)rG   funcargskwargsoutputerrors         r$   run_with_capturezBaseTest.run_with_captureU   sd     	&& " &ed%f%&	&  %.."222& &	& 	&s!   A	AAA	AA$c                 V    t        j                  j                  | j                  g| S rK   )r6   r7   joinr;   )rG   rQ   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rrY   )openrX   read)rG   r   rQ   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__maxDiffrI   rM   rU   rX   r`    r&   r$   r(   r(   ;   s(    $G)&31 6= r&   r(   c            	       ,   e 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jF                  ej>                  dk(  d$      d%        Z$ ej                  ej$                  d&k(  d'      d(        Z%d) Z& ejF                  ej>                  dk(  d$      e
d*               Z'd+ Z(y),	BasicTestc                 ~     | j                   | }| j                  t        j                  j	                  |             y rK   )rX   
assertTruer6   r7   isdir)rG   rQ   fns      r$   rj   zBasicTest.isdirf   s-    T%b)*r&   c                     	 t        | j                         | j                  t        j                  | j                         | j                          y rK   )r   r;   rU   venvcreate_check_output_of_default_createrL   s    r$   test_defaults_with_str_pathz%BasicTest.test_defaults_with_str_pathj   s9    	 	t||dkk4<<8,,.r&   c                     	 t        | j                         | j                  t        j                  t        j                  | j                               | j                          y rK   )r   r;   rU   rm   rn   pathlibPathro   rL   s    r$   test_defaults_with_pathlib_pathz)BasicTest.test_defaults_with_pathlib_pathr   sB    	 	t||dkk7<<+EF,,.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.)rj   r=   r3   r0   rX   structcalcsizer6   r<   r>   rC   ri   r7   islinkassertFalserE   r`   r@   dirnameassertInr8   rH   r;   rB   r   listdir)
rG   r!   
conditionsdatarH   r7   copiesr    rk   bds
             r$   ro   z)BasicTest._check_output_of_default_createz   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   re   )r   r;   rm   
EnvBuilderr   upgrade_dependencies
_setup_piprU   rn   r`   assertNotRegexr6   r<   assertRegex)rG   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'
)r6   r7   rA   r;   r   rm   r   rU   rn   ensure_directoriesr`   assertEqualr   assertNotInr   basenamegetcwd)rG   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)Nr5   r+   r/   r   c           	          t         j                  j                  | d         | d<   j                  | dddddg       y )Nr   -mpipinstallr   )r6   r7   normcaser   )r    rR   
expect_exerG   s     r$   pip_cmd_checkerz<BasicTest.test_upgrade_dependencies.<locals>.pip_cmd_checker   sG    ))#a&1A  "!#
r&   zvenv.subprocess.check_output)rm   r   r>   rC   r6   r7   rA   rH   r9   TemporaryDirectoryr   rW   r8   r   r   r   )rG   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                 "   	 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 ]J  \  }}d|z  |d<   t        |      \  }}| j                  |j                         |j!                         |       L y )N-cprefixexec_prefixbase_prefixbase_exec_prefixzimport sys; print(sys.%s)r2   )r   r;   rU   rm   rn   r6   r7   rW   r=   rB   r>   r   r   r%   r   stripencode)rG   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 	EFH
 169CF#C(HCSYY[(//*;VD	E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)NFr   r   zget_preferred_scheme("prefix")rm   zget_default_scheme()rm   is_python_build()get_makefile_filename()get_config_h_filename()%import sysconfig; print(sysconfig.%s)r2   r   r;   rU   rm   rn   r6   r7   rW   r=   rB   str	sysconfigis_python_buildget_makefile_filenameget_config_h_filenamesubTestr%   r   r   r   rG   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)NTr   r   r   r   r   r   r   r   r2   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   r5   ))r+   )r.   r,   )r-   site-packages)r/   )r3   )r0   r0   r1   Nr2   r   c                 6   	 |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)Nwb   Still here?)r6   r7   rW   r;   mkdirr\   write)rG   pathsfilenamesubdirsdrk   r^   s          r$   create_contentszBasicTest.create_contents>  s    	  	(GT\\4G4AHHQKa*Bb$ (1'( (		(( (s   2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)Nfoo)r   rbr   Tr   )r   ENV_SUBDIRSrm   rn   r;   r6   r7   rW   ri   rE   r\   r   r]   r   r   )rG   r   rk   r^   r   s        r$   test_overwrite_existingz!BasicTest.test_overwrite_existingJ  s(   	 	T--u5DLL!'' 	;GdllBg.@BBOOBGGNN2./b$ ;1  >:; ;	; //-t||$'' 	1GdllBg.@BBRWW^^B/0	1; ;s   3!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 rK   )	r6   r   r7   rW   r   isfileremoverj   r   )rG   r7   rk   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   r6   r7   rW   r;   r\   r   assertRaises
ValueErrorOSErrorrm   rn   r   )rG   r   rk   r^   s       r$   test_unoverwritable_failsz#BasicTest.test_unoverwritable_failsd  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 )NFT)r   r}   r~   r   )rm   r   rU   rn   r;   rj   r=   r3   r0   rX   rB   r6   r7   rE   r   r   ri   )rG   r   r   rk   r   s        r$   test_upgradezBasicTest.test_upgradem  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 )N))Ttrue)FfalseT)r   r   r{   z"include-system-site-packages = %s
)rm   r   rn   r;   r`   r   )rG   sspsr   r   s        r$   test_isolationzBasicTest.test_isolation  sb    	 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 )Nr   Tr   r   )rm   r   rn   r;   rX   r=   rB   rF   r   r6   r7   r   ri   )rG   uslr   rk   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 )Nr   !import sys; print(sys.executable))r   r;   rU   rm   rn   r6   r7   rW   r8   r=   rB   r%   r   r   r   rG   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 )NTr  r   r  r   r;   rm   r   rn   r6   r7   rW   r8   r=   rB   r%   r   r   r   rG   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                 J   	 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 )Nu   ϼўТλФЙTr   zactivate.bat&r   zprint(0)oemrY   0)r   r;   r6   r7   rW   r8   rm   r   rn   r=   rB   r%   r   r   )rG   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 )Nr   zrfrom multiprocessing import Pool; pool = Pool(1); print(pool.apply_async("Python".lower).get(3)); pool.terminate()python)r   r   r;   rU   rm   rn   r6   r7   rW   r8   r=   rB   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                  ||g       y )Nz_test_venv_multiprocessing.py)r   r   r;   rU   rm   rn   r6   r7   rW   r8   r=   rB   r   r   
check_call)rG   r   scripts      r$   test_multiprocessing_recursionz(BasicTest.test_multiprocessing_recursion  s    	 	34t||dkk4<<8RWW--dll;![[$((4m-LMufo.r&   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;   rm   r   rn   r6   r7   rW   r=   r\   r   r%   r   r   )rG   r  r   r  test_scriptr^   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rz   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        j                  |             y rK   )
r   r;   r6   pathsepr   r   rm   rn   rr   rs   )rG   bad_itempaths     r$   test_pathsep_errorzBasicTest.test_pathsep_error  s\    	 	t||||bjj0*dkk<@*dkk7<<3MNr&   c           	      X	   	 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,                  |	      D ]  }
|
dk(  r	t        j
                  j                  |	|
      }t        j
                  j)                  |      rt        j.                  ||       _t        j
                  j1                  |      st        j2                  |t        j
                  j                  ||
              s|j5                  |	        t        j
                  j                  || j                  | j6                        ddd	| j                  g}t        j8                  j                  |      }t;        j<                  d
      }|rt;        j>                         rJt        j
                  jA                  t        j
                  jC                  t        j                              }t        jD                  dk(  rd}nd}d|||i}t        jF                  jI                  d      x}r||d<   tK        jL                  ||       t        j
                  j                  | j                  | j                  | j6                        }|dddg}tO        |      \  }}| jQ                  |jS                         |v        y )Nr   zos.pyzpython%d%d.zipr2   z.zipr   r   rm   r   LIBDIRrz   DYLD_LIBRARY_PATHLD_LIBRARY_PATH
PYTHONPATHASAN_OPTIONS)envz-Sr   zimport sys; print(sys.path))*r   r;   r>   
platlibdirr6   r7   r8   r9   r:   
addCleanuprW   r=   r   r  copy2rH   r0   makedirsr?   endswithr   copyfiler   copyrj   copytreeappendrB   r'  r   get_config_varr   abspathr   rC   environgetr   r  r%   ri   r   )rG   r1  non_installed_dirr=   libdirlandmark
stdlib_zipzip_landmark'additional_pythonpath_for_non_installedeachpathr<   rk   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  sS   	 	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 ?@JJx0 HD. h5Bww~~b)B/r*BGGLL,FGH 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                 l   	 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)Nr  r   r   zCR LF found in line s   
)rr   rs   r;   r   r   rm   rn   r\   	enumerater   r5  )	rG   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_newlinesk  s    	
 <<-x"..+,z9H+t$ 	H$VQ/ H4"6qc :  w!7GH	H 	H 	Hs   %;B**B3))ra   rb   rc   rj   rp   rt   ro   r   r   r   requireVenvCreater   r   unittest
skipUnlessr   r   r>   rC   r   r?   r   r   r   r   r   r  r  r	  r  r6   r<   r  r  r  skipIfr"  r%  r)  rJ  rT  re   r&   r$   rg   rg   c   sR   )+//J8?>58;: E E$ 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( / / X__RWW_&?@+ A+$ X13KL	8 M	8O X__RWW_&?@K6  AK6ZHr&   rg   c                       e Zd Z	 d Zd Zd Zd Zd Zej                  d        Z
 e        ed      d               Zy	)
EnsurePipTestc                    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)r6   r7   rW   r8   r;   r=   rB   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 rK   r   r;   rU   rm   rn   r^  rL   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   r`  rL   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\   r6   devnullr   r]   ri   r7   rE   )rG   r^   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)Nignore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::ImportWarningz-Ir   r   z	--versionr\  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   r9   r   r6   r7   rW   r   r\   r   nicer_errorrU   rm   rn   r8   r=   rB   r%   r   r   format	ensurepipversionlenfsencoder   resub	MULTILINErstripr^  )rG   r   envvarshome_dir
bad_configwin_locationposix_locationr   fnamedirpathfpathr^   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)Nr&   replace)errorsz

**Subprocess Output**
z

**Subprocess Error**
)r   r   rS   r   r   fail)rG   excr"   r#   s       r$   rn  zEnsurePipTest.nicer_error  s     			,, 	::$,,I,>C::$,,I,>CII% **- /)),/ 	s+   B
 BB AA;6B;B  Bcpuc                 H    | j                  d       | j                  d       y )NFT)r  rL   s    r$   test_with_pipzEnsurePipTest.test_with_pip
  s      	e$d#r&   N)ra   rb   rc   r^  ra  rc  rf  r  
contextlibcontextmanagerrn  r
   r   r  re   r&   r$   rZ  rZ  {  s^    /
,(
(
4V,p  $ u$  $r&   rZ  __main__rK   )0r  rp  r6   os.pathrr   rt  r  r   r   r>   r   r9   test.supportr   r   r   r   r   r   r	   r
   r   r   test.support.os_helperr   r   r   rV  rm   unittest.mockr   r   ctypesImportErrorrW  r   r   r@   rH   rU  SkipTestr%   TestCaser(   rg   rZ  ra   mainre   r&   r$   <module>r     s=     	   	    
  - - -
 N M   % (H''JJ#//! .
s~~-@B 
 G
(

G
HH &x   &PVH VHp R$H R$ R$j zHMMO c  Fs   %D D$#D$