
    daf-                        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.                          yy)    Nc                   $    e Zd Zd Zd Zd Zd Zy)TestPackagesc                 x    t         j                  j                  ||      }t        |d      j	                          y )Nwb)ospathjoinopenclose)self	directoryfilenamefullnames       ./root/Python-3.12.4/Lib/test/test_ensurepip.pytouchzTestPackages.touch   s)    77<<	84Xt""$    c                    t        j                         5 }| j                  |d       t        j                  j
                  j                  t        dd       5  t        j                  j
                  j                  t        d|      5  | j                  t        j                         d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz pip-1.2.3b1-py2.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--%%,,YTJ A--%%,,Y8H&QA  !2!2!4i@A A	A 	AA A A A	A 	As<   AC0C%C,C4CC
CC	CC&c                    t         j                  j                  j                  t        dd       5  t         j                  j                  j                  t        dd       5  t	        j
                         }| j                  t        j                  t	        j                                d d d        d d d        | j                  d   j                         y # 1 sw Y   0xY w# 1 sw Y   4xY w)Nr   r   pip)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   s    mm!!((KF 	Jmm!!((4DdK	J ..0H Y33Y5F5F5HI	J 	J 	Xe_778	J 	J 	J 	Js$   0C" AC'C"C	C""C+c                    d}t        j                         5 }| j                  ||       | j                  |d       t        j                  j
                  j                  t        dd       5  t        j                  j
                  j                  t        d|      5  t        j                         }d d d        d d d        | j                  d   j                  d       | j                  |d   j                  t        j                  j                  ||             | j                  t        |      dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzpip-20.2.2-py2.py3-none-any.whlz!wheel-0.34.2-py2.py3-none-any.whlr   r   r"   z20.2.2)r   r   r   r   r   r   r   r   r#   r   r   
wheel_pathr   r   r	   sorted)r   pip_filenamer   r'   s       r   test_get_packages_with_dirz'TestPackages.test_get_packages_with_dir'   s   8((* 	8fJJv|,JJvBC--%%,,YTJ 5--%%,,Y8H&Q5$2245 5 Xe_44h?Xe_77WW\\&,?A VH-w7	8 	8
5 5 5 5	8 	8s=   AE+0EE0E8B EE
EE	EE"N)__name__
__module____qualname__r   r    r(   r-    r   r   r   r      s    %A
98r   r   c                       e Zd Zd Zy)EnsurepipMixinc                 .   t         j                  j                  d      }|j                         | _        d| j                  _        | j                  |j                         t        j                  }t         j                  j                  d      }|j                         }t        j                  |_
        | j                  |j                         ||_	        t        j                  |_        t        j                  j                         x| _        |_        y )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.setUp>   s     ++,@A$**,$%!**+ zz==&&~6^^%
ZZ
&)
''
/1zz/@@*,r   N)r.   r/   r0   rC   r1   r   r   r3   r3   <   s    Ar   r3   c                   Z    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y)TestBootstrapc                 >   t        j                          | j                  j                  ddddt        j
                  j                  dgt        j
                  j                         | j                  j                  d   d   }| j                  t        |      d       y Ninstall--no-cache-dir
--no-index--find-linksr"   r      )
r   	bootstrapr6   assert_called_once_withr   r   ANY	call_argsr   len)r   additional_pathss     r   test_basic_bootstrappingz&TestBootstrap.test_basic_bootstrappingR   s    ,,+\>!!5 MM	
  <<11!4Q7-.2r   c           
          t        j                  d       | j                  j                  ddddt        j
                  j                  dddgt        j
                  j                         y )	Nz	/foo/bar/)rootrH   rI   rJ   rK   z--rootr"   r   rM   r6   rN   r   r   rO   r   s    r   test_bootstrapping_with_rootz*TestBootstrap.test_bootstrapping_with_root`   sT    -,,+\>!!8[
 MM	
r   c           	          t        j                  d       | j                  j                  ddddt        j
                  j                  ddgt        j
                  j                         y )	NT)userrH   rI   rJ   rK   z--userr"   rV   rW   s    r   test_bootstrapping_with_userz*TestBootstrap.test_bootstrapping_with_userl   sQ    &,,+\>!!8U MM	
r   c           	          t        j                  d       | j                  j                  ddddt        j
                  j                  ddgt        j
                  j                         y )	NT)upgraderH   rI   rJ   rK   z	--upgrader"   rV   rW   s    r   test_bootstrapping_with_upgradez-TestBootstrap.test_bootstrapping_with_upgradew   sQ    D),,+\>!!; MM	
r   c           	          t        j                  d       | j                  j                  ddddt        j
                  j                  ddgt        j
                  j                         y )	NrL   	verbosityrH   rI   rJ   rK   -vr"   rV   rW   s    r   #test_bootstrapping_with_verbosity_1z1TestBootstrap.test_bootstrapping_with_verbosity_1   sQ    a(,,+\>!!4 MM	
r   c           	          t        j                  d       | j                  j                  ddddt        j
                  j                  ddgt        j
                  j                         y )	N   r`   rH   rI   rJ   rK   -vvr"   rV   rW   s    r   #test_bootstrapping_with_verbosity_2z1TestBootstrap.test_bootstrapping_with_verbosity_2   sQ    a(,,+\>!!5% MM	
r   c           	          t        j                  d       | j                  j                  ddddt        j
                  j                  ddgt        j
                  j                         y )	N   r`   rH   rI   rJ   rK   -vvvr"   rV   rW   s    r   #test_bootstrapping_with_verbosity_3z1TestBootstrap.test_bootstrapping_with_verbosity_3   sQ    a(,,+\>!!65 MM	
r   c                 j    t        j                          | j                  | j                  d   d       y )NENSUREPIP_OPTIONSrH   r   rM   r   r>   rW   s    r   'test_bootstrapping_with_regular_installz5TestBootstrap.test_bootstrapping_with_regular_install   s(    )<=yIr   c                 n    t        j                  d       | j                  | j                  d   d       y )NT)
altinstallrm   rq   rn   rW   s    r   #test_bootstrapping_with_alt_installz1TestBootstrap.test_bootstrapping_with_alt_install   s*    t,)<=|Lr   c                 h    t        j                  d       | j                  d| j                         y )NT)default_piprm   )r   rM   assertNotInr>   rW   s    r   #test_bootstrapping_with_default_pipz1TestBootstrap.test_bootstrapping_with_default_pip   s%    -,doo>r   c                     | j                  t              5  t        j                  dd       d d d        | j	                  | j
                  j                         y # 1 sw Y   /xY w)NT)rq   rt   )assertRaises
ValueErrorr   rM   assertFalser6   calledrW   s    r   $test_altinstall_default_pip_conflictz2TestBootstrap.test_altinstall_default_pip_conflict   sQ    z* 	C4TB	C,,-	C 	Cs   AA%c                     d| j                   d<   t        j                          | j                  d| j                          y Nztest fodderPIP_THIS_SHOULD_GO_AWAY)r>   r   rM   ru   rW   s    r   &test_pip_environment_variables_removedz4TestBootstrap.test_pip_environment_variables_removed   s5     6C122DOODr   c                     t        j                          | j                  | j                  d   t        j
                         y NPIP_CONFIG_FILE)r   rM   r   r>   r   r:   rW   s    r   test_pip_config_file_disabledz+TestBootstrap.test_pip_config_file_disabled   s.     	):;RZZHr   N)r.   r/   r0   rS   rX   r[   r^   rc   rg   rk   ro   rr   rv   r|   r   r   r1   r   r   rE   rE   P   sG    3

	
	
	
	
	
JM?.
EIr   rE   c              #   p   K    d }n G  fdd      } |       }t               }t        j                  j                  d|      }|t        j                  d<   	 | ||u rt        j                  d= y |t        j                  d<   y # ||u rt        j                  d= w |t        j                  d<   w xY ww)Nc                       e Zd ZW  Zy)fake_pip.<locals>.FakePipN)r.   r/   r0   __version__)r   s   r   FakePipr      s    !Kr   r   r"   )r   sysmodulesget)r   r"   r   sentinelorig_pips   `    r   fake_pipr      s     	" 	"ixH{{uh/HCKK*	xE"!)CKK xE"!)CKKs   AB6B *B6+B33B6c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestUninstallc                     t        d       5  t        j                          d d d        | j                  | j                  j
                         y # 1 sw Y   /xY w)N)r   r   _uninstall_helperrz   r6   r{   rW   s    r   )test_uninstall_skipped_when_not_installedz7TestUninstall.test_uninstall_skipped_when_not_installed   sB    d^ 	*'')	*,,-	* 	*s   AAc                 |   t        d      5  t        j                  j                         5 }t	        j
                          d d d        d d d        j                         j                         }| j                  d|       | j                  | j                  j                         y # 1 sw Y   gxY w# 1 sw Y   kxY w)Nznot a valid versionz!only uninstall a matching version)r   testsupportcaptured_stderrr   r   getvaluestripassertInrz   r6   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,,-	. .	. 	.s"   B2B& B2&B/	+B22B;c                     t               5  t        j                          d d d        | j                  j	                  g d       y # 1 sw Y   'xY w)N	uninstall-y--disable-pip-version-checkr"   r   r   r   r6   rN   rW   s    r   test_uninstallzTestUninstall.test_uninstall   sA    Z 	*'')	* 	,,	
	* 	*s   AAc                     t               5  t        j                  d       d d d        | j                  j	                  g d       y # 1 sw Y   'xY w)NrL   r`   )r   r   r   rb   r"   r   rW   s    r   test_uninstall_with_verbosity_1z-TestUninstall.test_uninstall_with_verbosity_1   C    Z 	5''!4	5 	,,	
	5 	5   AAc                     t               5  t        j                  d       d d d        | j                  j	                  g d       y # 1 sw Y   'xY w)Nre   r`   )r   r   r   rf   r"   r   rW   s    r   test_uninstall_with_verbosity_2z-TestUninstall.test_uninstall_with_verbosity_2   r   r   c                     t               5  t        j                  d       d d d        | j                  j	                  g d       y # 1 sw Y   'xY w)Nri   r`   )r   r   r   rj   r"   r   rW   s    r   test_uninstall_with_verbosity_3z-TestUninstall.test_uninstall_with_verbosity_3  sC    Z 	5''!4	5 	,,	
	5 	5r   c                     d| j                   d<   t               5  t        j                          d d d        | j	                  d| j                          y # 1 sw Y   &xY wr~   )r>   r   r   r   ru   rW   s    r   r   z4TestUninstall.test_pip_environment_variables_removed  sO     6C12Z 	*'')	*2DOOD	* 	*s   AAc                     t               5  t        j                          d d d        | j                  | j                  d   t
        j                         y # 1 sw Y   7xY wr   )r   r   r   r   r>   r   r:   rW   s    r   r   z+TestUninstall.test_pip_config_file_disabled  sH     Z 	*'')	*):;RZZH	* 	*s   AAN)r.   r/   r0   r   r   r   r   r   r   r   r   r1   r   r   r   r      s,    .
.


	
EIr   r   zpip c                       e Zd Zd Zd Zd Zy)TestBootstrappingMainFunctionc                    t         j                  j                         5 }| j                  t              5  t        j                  dg       d d d        d d d        j                         j                         }| j                  |t               | j                  | j                  j                         y # 1 sw Y   kxY w# 1 sw Y   oxY wNz	--version)r   r   captured_stdoutrx   
SystemExitr   _mainr   r   r   EXPECTED_VERSION_OUTPUTrz   r6   r{   r   stdoutresults      r   test_bootstrap_versionz4TestBootstrappingMainFunction.test_bootstrap_version#  s    \\))+ 	/v"":. /./	/ "((*!89,,-	/ /	/ 	/s"   CB6C6B?	;CCc                 d   t        j                  g       }| j                  j                  ddddt        j
                  j                  dgt        j
                  j                         | j                  j                  d   d   }| j                  t        |      d       | j                  |d       y rG   )
r   r   r6   rN   r   r   rO   rP   r   rQ   )r   	exit_coderR   s      r   rS   z6TestBootstrappingMainFunction.test_basic_bootstrapping+  s    OOB'	,,+\>!!5 MM	
  <<11!4Q7-.2A&r   c                 t    d| j                   _        t        j                  g       }| j	                  |d       y Nre   )r6   r7   r   r   r   r   r   s     r   test_bootstrapping_error_codez;TestBootstrappingMainFunction.test_bootstrapping_error_code:  s,    $%!OOB'	A&r   N)r.   r/   r0   r   rS   r   r1   r   r   r   r   !  s    .''r   r   c                       e Zd Zd Zd Zd Zy)TestUninstallationMainFunctionc                    t         j                  j                         5 }| j                  t              5  t
        j                  j                  dg       d d d        d d d        j                         j                         }| j                  |t               | j                  | j                  j                         y # 1 sw Y   kxY w# 1 sw Y   oxY wr   )r   r   r   rx   r   r   
_uninstallr   r   r   r   r   rz   r6   r{   r   s      r   test_uninstall_versionz5TestUninstallationMainFunction.test_uninstall_versionB  s    \\))+ 	:v"":. :$$**K=9:	: "((*!89,,-	: :	: 	:s"   C!C C C		CCc                     t               5  t        j                  j                  g       }d d d        | j                  j                  g d       | j                  d       y # 1 sw Y   9xY w)Nr   r   )r   r   r   r   r6   rN   r   r   s     r   test_basic_uninstallz3TestUninstallationMainFunction.test_basic_uninstallJ  s]    Z 	7!,,2226I	7 	,,	
 	A&	7 	7s    A##A,c                     t               5  d| j                  _        t        j                  j                  g       }d d d        | j                  d       y # 1 sw Y   xY wr   )r   r6   r7   r   r   r   r   r   s     r   test_uninstall_error_codez8TestUninstallationMainFunction.test_uninstall_error_codeV  sP    Z 	7()DLL%!,,2226I	7 	A&	7 	7s   1AA N)r.   r/   r0   r   r   r   r1   r   r   r   r   @  s    .
''r   r   __main__)
contextlibr   os.pathr   r   test.supportr   r   unittest.mockr   ensurepip._uninstallTestCaser   r3   rE   contextmanagerr   r   r   r   r   r   r.   mainr1   r   r   <module>r      s     	  
      +88$$ +8\A A(oINH$5$5 oIb &Y&&( * *$FINH$5$5 FIV !#49#4#4#66 'NH4E4E '>'^X5F5F ': zHMMO r   