
    ;e0                        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	 G d dej                  Z G d d          Z G d deej                  Ze j         e	j                    fd            Z G d	 d
eej                  Zd e	j                    z   Z G d deej                  Z G d deej                  Zedk    r ej                     dS dS )    Nc                   &    e Zd Zd Zd Zd Zd ZdS )TestPackagesc                     t           j                            ||          }t          |d                                           d S )Nwb)ospathjoinopenclose)self	directoryfilenamefullnames       */usr/lib/python3.11/test/test_ensurepip.pytouchzTestPackages.touch   s9    7<<	844Xt""$$$$$    c                    t          j                    5 }|                     |d           |                     |d           t          j        j                            t          dd           5  t          j        j                            t          d|          5  |                     t          j	                    d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz pip-1.2.3b1-py2.py3-none-any.whl"setuptools-49.1.3-py3-none-any.whl	_PACKAGES_WHEEL_PKG_DIRz1.2.3b1)
tempfileTemporaryDirectoryr   unittestmockpatchobject	ensurepipassertEqualversion)r   tmpdirs     r   test_versionzTestPackages.test_version   s   (** 	AfJJvABBBJJvCDDD-%,,YTJJ A A-%,,Y8H&QQA A  !2!4!4i@@@A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AsZ   AC;,,C#(C C#CC#CC#C;#C'	'C;*C'	+C;;C?C?c                    t           j        j                            t          dd           5  t           j        j                            t          dd           5  t	          j                    }|                     t          j        t	          j                               d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    |d         j
                   | 	                    |d         j
                   d S )Nr   r   pip
setuptools)r   r   r   r   r   _get_packagesr   _PIP_VERSIONr   assertIsNotNone
wheel_name)r   packagess     r   test_get_packages_no_dirz%TestPackages.test_get_packages_no_dir   sz   m!((KFF 	J 	Jm!((4DdKK	J 	J .00H Y3Y5F5H5HIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Xe_7888Xl3>?????s6   ,C AB)C )B-	-C 0B-	1C  CCc                    d}d}t          j                    5 }|                     ||           |                     ||           |                     |d           t          j        j                            t          dd           5  t          j        j                            t          d|          5  t          j                    }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    |d         j
        d           | 	                    |d         j        t          j                            ||                     | 	                    |d         j
        d	           | 	                    |d         j        t          j                            ||                     | 	                    t          |          ddg           d d d            d S # 1 swxY w Y   d S )
Nr   zpip-20.2.2-py2.py3-none-any.whlz!wheel-0.34.2-py2.py3-none-any.whlr   r   r$   z49.1.3r#   z20.2.2)r   r   r   r   r   r   r   r   r%   r   r   
wheel_pathr   r   r	   sorted)r   setuptools_filenamepip_filenamer    r)   s        r   test_get_packages_with_dirz'TestPackages.test_get_packages_with_dir)   s   B8(** 	FfJJv2333JJv|,,,JJvBCCC-%,,YTJJ 5 5-%,,Y8H&QQ5 5$2445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Xl3;XFFFXl3>W\\&2EFFH H HXe_4h???Xe_7W\\&,??A A A VH--|/DEEE%	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs[   A.G&,C)2CC)CC)CC)G&)C-	-G&0C-	1C(G&&G*-G*N)__name__
__module____qualname__r   r!   r*   r0    r   r   r   r      s[        % % %A A A@ @ @F F F F Fr   r   c                       e Zd Zd ZdS )EnsurepipMixinc                    t           j                            d          }|                                | _        d| j        _        |                     |j                   t          j	        }t           j                            d          }|                                }t          j
        |_
        |                     |j                   ||_	        t          j        |_        t          j                                        x| _        |_        d S )Nzensurepip._run_pipr   zensurepip.os)r   r   r   startrun_pipreturn_value
addCleanupstopr   devnulllistdirr   environcopy
os_environ)r   run_pip_patchreal_devnullos_patch
patched_oss        r   setUpzEnsurepipMixin.setUpE   s     ++,@AA$**,,$%!*+++ z=&&~66^^%%
Z
&&&)
'
/1z/@/@@*,,,r   N)r1   r2   r3   rF   r4   r   r   r6   r6   C   s(        A A A A Ar   r6   c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestBootstrapc           	      "   t          j                     | j                            ddddt          j        j        ddgt          j        j                   | j        j        d         d         }|                     t          |          d	           d S 
Ninstall--no-cache-dir
--no-index--find-linksr$   r#   r         )
r   	bootstrapr9   assert_called_once_withr   r   ANY	call_argsr   len)r   additional_pathss     r   test_basic_bootstrappingz&TestBootstrap.test_basic_bootstrappingY   s    ,,+\>!< M	
 	
 	
  <1!4Q7-..22222r   c                     t          j        d           | j                            ddddt          j        j        dddd	g	t          j        j                   d S )
Nz	/foo/bar/)rootrK   rL   rM   rN   z--rootr$   r#   r   rQ   r9   rR   r   r   rS   r   s    r   test_bootstrapping_with_rootz*TestBootstrap.test_bootstrapping_with_rootg   sd    ----,,+\>!8[e
 M	
 	
 	
 	
 	
r   c           
          t          j        d           | j                            ddddt          j        j        ddd	gt          j        j                   d S )
NT)userrK   rL   rM   rN   z--userr$   r#   rZ   r[   s    r   test_bootstrapping_with_userz*TestBootstrap.test_bootstrapping_with_users   sa    &&&&,,+\>!8\5 M	
 	
 	
 	
 	
r   c           
          t          j        d           | j                            ddddt          j        j        ddd	gt          j        j                   d S )
NT)upgraderK   rL   rM   rN   z	--upgrader$   r#   rZ   r[   s    r   test_bootstrapping_with_upgradez-TestBootstrap.test_bootstrapping_with_upgrade~   sa    D)))),,+\>!;e M	
 	
 	
 	
 	
r   c           
          t          j        d           | j                            ddddt          j        j        ddd	gt          j        j                   d S )
NrO   	verbosityrK   rL   rM   rN   -vr$   r#   rZ   r[   s    r   #test_bootstrapping_with_verbosity_1z1TestBootstrap.test_bootstrapping_with_verbosity_1   sa    a((((,,+\>!4u M	
 	
 	
 	
 	
r   c           
          t          j        d           | j                            ddddt          j        j        ddd	gt          j        j                   d S )
NrP   rd   rK   rL   rM   rN   -vvr$   r#   rZ   r[   s    r   #test_bootstrapping_with_verbosity_2z1TestBootstrap.test_bootstrapping_with_verbosity_2   sa    a((((,,+\>!5, M	
 	
 	
 	
 	
r   c           
          t          j        d           | j                            ddddt          j        j        ddd	gt          j        j                   d S )
N   rd   rK   rL   rM   rN   -vvvr$   r#   rZ   r[   s    r   #test_bootstrapping_with_verbosity_3z1TestBootstrap.test_bootstrapping_with_verbosity_3   sa    a((((,,+\>!6< M	
 	
 	
 	
 	
r   c                 n    t          j                     |                     | j        d         d           d S )NENSUREPIP_OPTIONSrK   r   rQ   r   rA   r[   s    r   'test_bootstrapping_with_regular_installz5TestBootstrap.test_bootstrapping_with_regular_install   s5    )<=yIIIIIr   c                 r    t          j        d           |                     | j        d         d           d S )NT)
altinstallrp   rt   rq   r[   s    r   #test_bootstrapping_with_alt_installz1TestBootstrap.test_bootstrapping_with_alt_install   s:    t,,,,)<=|LLLLLr   c                 f    t          j        d           |                     d| j                   d S )NT)default_piprp   )r   rQ   assertNotInrA   r[   s    r   #test_bootstrapping_with_default_pipz1TestBootstrap.test_bootstrapping_with_default_pip   s5    ----,do>>>>>r   c                     |                      t                    5  t          j        dd           d d d            n# 1 swxY w Y   |                     | j        j                   d S )NT)rt   rw   )assertRaises
ValueErrorr   rQ   assertFalser9   calledr[   s    r   $test_altinstall_default_pip_conflictz2TestBootstrap.test_altinstall_default_pip_conflict   s    z** 	C 	C4TBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C,-----s   >AAc                 v    d| j         d<   t          j                     |                     d| j                    d S Nztest fodderPIP_THIS_SHOULD_GO_AWAY)rA   r   rQ   rx   r[   s    r   &test_pip_environment_variables_removedz4TestBootstrap.test_pip_environment_variables_removed   s@     6C122DODDDDDr   c                     t          j                     |                     | j        d         t          j                   d S NPIP_CONFIG_FILE)r   rQ   r   rA   r   r=   r[   s    r   test_pip_config_file_disabledz+TestBootstrap.test_pip_config_file_disabled   s9     	):;RZHHHHHr   N)r1   r2   r3   rW   r\   r_   rb   rg   rj   rn   rr   ru   ry   r   r   r   r4   r   r   rH   rH   W   s        3 3 3

 

 

	
 	
 	
	
 	
 	
	
 	
 	
	
 	
 	
	
 	
 	
J J JM M M? ? ?. . .
E E EI I I I Ir   rH   c              #   \   K    d }n G  fdd          } |            }t                      }t          j                            d|          }|t          j        d<   	 |V  ||u rt          j        d= d S |t          j        d<   d S # ||u rt          j        d= n|t          j        d<   w xY w)Nc                       e Zd Z ZdS )fake_pip.<locals>.FakePipN)r1   r2   r3   __version__)r   s   r   FakePipr      s        !KKKr   r   r#   )r   sysmodulesget)r   r#   r   sentinelorig_pips   `    r   fake_pipr      s      	" 	" 	" 	" 	" 	" 	" 	" 	" 	"giixxH{uh//HCK*			xE"""!)CK xE""!)CK))))s    B #B+c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestUninstallc                     t          d           5  t          j                     d d d            n# 1 swxY w Y   |                     | j        j                   d S )N)r   r   _uninstall_helperr}   r9   r~   r[   s    r   )test_uninstall_skipped_when_not_installedz7TestUninstall.test_uninstall_skipped_when_not_installed   s    d^^ 	* 	*')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*,-----s   044c                    t          d          5  t          j                                        5 }t	          j                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                                                }|                     d|           | 	                    | j
        j                   d S )Nznot a valid versionz!only uninstall a matching version)r   testsupportcaptured_stderrr   r   getvaluestripassertInr}   r9   r~   )r   stderrwarnings      r   5test_uninstall_skipped_with_warning_for_wrong_versionzCTestUninstall.test_uninstall_skipped_with_warning_for_wrong_version   s,   +,, 	. 	.--// .6+---. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. //##))++97CCC,-----s4   A&AA&A	A&A	A&&A*-A*c                     t                      5  t          j                     d d d            n# 1 swxY w Y   | j                            g d           d S )N	uninstall-y--disable-pip-version-checkr#   r$   r   r   r   r9   rR   r[   s    r   test_uninstallzTestUninstall.test_uninstall   s    ZZ 	* 	*')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	,,  	
 	
 	
 	
 	
   /33c                     t                      5  t          j        d           d d d            n# 1 swxY w Y   | j                            g d           d S )NrO   rd   )r   r   r   rf   r#   r$   r   r[   s    r   test_uninstall_with_verbosity_1z-TestUninstall.test_uninstall_with_verbosity_1       ZZ 	5 	5'!4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	,,  	
 	
 	
 	
 	
   155c                     t                      5  t          j        d           d d d            n# 1 swxY w Y   | j                            g d           d S )NrP   rd   )r   r   r   ri   r#   r$   r   r[   s    r   test_uninstall_with_verbosity_2z-TestUninstall.test_uninstall_with_verbosity_2  r   r   c                     t                      5  t          j        d           d d d            n# 1 swxY w Y   | j                            g d           d S )Nrl   rd   )r   r   r   rm   r#   r$   r   r[   s    r   test_uninstall_with_verbosity_3z-TestUninstall.test_uninstall_with_verbosity_3  r   r   c                     d| j         d<   t                      5  t          j                     d d d            n# 1 swxY w Y   |                     d| j                    d S r   )rA   r   r   r   rx   r[   s    r   r   z4TestUninstall.test_pip_environment_variables_removed  s     6C12ZZ 	* 	*')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*2DODDDDDs   9= =c                     t                      5  t          j                     d d d            n# 1 swxY w Y   |                     | j        d         t
          j                   d S r   )r   r   r   r   rA   r   r=   r[   s    r   r   z+TestUninstall.test_pip_config_file_disabled  s     ZZ 	* 	*')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*):;RZHHHHHr   N)r1   r2   r3   r   r   r   r   r   r   r   r   r4   r   r   r   r      s        . . .
. . .	
 	
 	
	
 	
 	
	
 	
 	
	
 	
 	
E E EI I I I Ir   r   zpip c                        e Zd Zd Zd Zd ZdS )TestBootstrappingMainFunctionc                    t           j                                        5 }|                     t                    5  t          j        dg           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                                                }| 	                    |t                     |                     | j        j                   d S Nz	--version)r   r   captured_stdoutr{   
SystemExitr   _mainr   r   r   EXPECTED_VERSION_OUTPUTr}   r9   r~   r   stdoutresults      r   test_bootstrap_versionz4TestBootstrappingMainFunction.test_bootstrap_version-  s6   \))++ 	/v"":.. / /.../ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ""((**!8999,-----s4   A3AA3A 	 A3#A 	$A33A7:A7c           	      P   t          j        g           }| j                            ddddt          j        j        ddgt          j        j                   | j        j        d         d         }|                     t          |          d	           |                     |d           d S rJ   )
r   r   r9   rR   r   r   rS   rT   r   rU   )r   	exit_coderV   s      r   rW   z6TestBootstrappingMainFunction.test_basic_bootstrapping5  s    OB''	,,+\>!< M	
 	
 	
  <1!4Q7-..222A&&&&&r   c                 r    d| j         _        t          j        g           }|                     |d           d S NrP   )r9   r:   r   r   r   r   r   s     r   test_bootstrapping_error_codez;TestBootstrappingMainFunction.test_bootstrapping_error_codeD  s7    $%!OB''	A&&&&&r   N)r1   r2   r3   r   rW   r   r4   r   r   r   r   +  sA        . . .' ' '' ' ' ' 'r   r   c                        e Zd Zd Zd Zd ZdS )TestUninstallationMainFunctionc                    t           j                                        5 }|                     t                    5  t
          j                            dg           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                	                                }| 
                    |t                     |                     | j        j                   d S r   )r   r   r   r{   r   r   
_uninstallr   r   r   r   r   r}   r9   r~   r   s      r   test_uninstall_versionz5TestUninstallationMainFunction.test_uninstall_versionL  s=   \))++ 	:v"":.. : :$**K=999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ""((**!8999,-----s4   A>!A'A>'A+	+A>.A+	/A>>BBc                     t                      5  t          j                            g           }d d d            n# 1 swxY w Y   | j                            g d           |                     |d           d S )Nr   r   )r   r   r   r   r9   rR   r   r   s     r   test_basic_uninstallz3TestUninstallationMainFunction.test_basic_uninstallT  s    ZZ 	7 	7!,22266I	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	,,  	
 	
 	
 	A&&&&&s    ;??c                     t                      5  d| j        _        t          j                            g           }d d d            n# 1 swxY w Y   |                     |d           d S r   )r   r9   r:   r   r   r   r   r   s     r   test_uninstall_error_codez8TestUninstallationMainFunction.test_uninstall_error_codea  s    ZZ 	7 	7()DL%!,22266I	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	A&&&&&s   ,AAAN)r1   r2   r3   r   r   r   r4   r   r   r   r   J  sA        . . .' ' '' ' ' ' 'r   r   __main__)
contextlibr   os.pathr   r   test.supportr   r   unittest.mockr   ensurepip._uninstallTestCaser   r6   rH   contextmanagerr   r   r   r   r   r   r1   mainr4   r   r   <module>r      s#       				  



                  2F 2F 2F 2F 2F8$ 2F 2F 2FjA A A A A A A A(oI oI oI oI oINH$5 oI oI oIb &Y&(( * * * *$II II II II IINH$5 II II II\ !#49#4#6#66 ' ' ' ' 'NH4E ' ' '>' ' ' ' '^X5F ' ' '< zHMOOOOO r   