B
    18™\À&  ã               @   sê   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„ de j
ƒZG dd„ dƒZG dd„ dee j
ƒZejejfdd	„ƒZG d
d„ dee j
ƒZdej ZG dd„ dee j
ƒZG dd„ dee j
ƒZedkræe  ¡  dS )é    Nc               @   s   e Zd Zdd„ ZdS )ÚTestEnsurePipVersionc             C   s   |   tjt ¡ ¡ d S )N)ÚassertEqualÚ	ensurepipÚ_PIP_VERSIONÚversion)Úself© r   úW/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_ensurepip.pyÚtest_returns_version   s    z)TestEnsurePipVersion.test_returns_versionN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   c               @   s   e Zd Zdd„ ZdS )ÚEnsurepipMixinc             C   st   t j d¡}| ¡ | _d| j_|  |j¡ tj	}t j d¡}| ¡ }|  |j¡ ||_	tj
|_
tj ¡  | _|_d S )Nzensurepip._run_pipr   zensurepip.os)ÚunittestÚmockÚpatchÚstartÚrun_pipÚreturn_valueÚ
addCleanupÚstopÚosÚdevnullÚpathÚenvironÚcopyÚ
os_environ)r   Zrun_pip_patchZreal_devnullZos_patchZ
patched_osr   r   r	   ÚsetUp   s    
zEnsurepipMixin.setUpN)r   r   r   r   r   r   r   r	   r      s   r   c               @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestBootstrapc             C   sN   t  ¡  | j dddtjjddgtjj¡ | jjd d }|  t	|ƒd¡ d S )	NÚinstallz
--no-indexz--find-linksÚ
setuptoolsÚpipr   é   é   )
r   Ú	bootstrapr   Úassert_called_once_withr   r   ÚANYÚ	call_argsr   Úlen)r   Úadditional_pathsr   r   r	   Útest_basic_bootstrapping&   s    
z&TestBootstrap.test_basic_bootstrappingc          
   C   s6   t jdd | j dddtjjddddgtjj¡ d S )	Nz	/foo/bar/)Úrootr   z
--no-indexz--find-linksz--rootr    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Útest_bootstrapping_with_root4   s    
z*TestBootstrap.test_bootstrapping_with_rootc          	   C   s4   t jdd | j dddtjjdddgtjj¡ d S )	NT)Úuserr   z
--no-indexz--find-linksz--userr    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Útest_bootstrapping_with_user@   s
    z*TestBootstrap.test_bootstrapping_with_userc          	   C   s4   t jdd | j dddtjjdddgtjj¡ d S )	NT)Úupgrader   z
--no-indexz--find-linksz	--upgrader    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Útest_bootstrapping_with_upgradeK   s
    z-TestBootstrap.test_bootstrapping_with_upgradec          	   C   s4   t jdd | j dddtjjdddgtjj¡ d S )	Nr"   )Ú	verbosityr   z
--no-indexz--find-linksz-vr    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Ú#test_bootstrapping_with_verbosity_1V   s
    z1TestBootstrap.test_bootstrapping_with_verbosity_1c          	   C   s4   t jdd | j dddtjjdddgtjj¡ d S )	Nr#   )r1   r   z
--no-indexz--find-linksz-vvr    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Ú#test_bootstrapping_with_verbosity_2a   s
    z1TestBootstrap.test_bootstrapping_with_verbosity_2c          	   C   s4   t jdd | j dddtjjdddgtjj¡ d S )	Né   )r1   r   z
--no-indexz--find-linksz-vvvr    r!   )r   r$   r   r%   r   r   r&   )r   r   r   r	   Ú#test_bootstrapping_with_verbosity_3l   s
    z1TestBootstrap.test_bootstrapping_with_verbosity_3c             C   s   t  ¡  |  | jd d¡ d S )NÚENSUREPIP_OPTIONSr   )r   r$   r   r   )r   r   r   r	   Ú'test_bootstrapping_with_regular_installw   s    z5TestBootstrap.test_bootstrapping_with_regular_installc             C   s"   t jdd |  | jd d¡ d S )NT)Ú
altinstallr6   r8   )r   r$   r   r   )r   r   r   r	   Ú#test_bootstrapping_with_alt_install{   s    z1TestBootstrap.test_bootstrapping_with_alt_installc             C   s   t jdd |  d| j¡ d S )NT)Údefault_pipr6   )r   r$   ÚassertNotInr   )r   r   r   r	   Ú#test_bootstrapping_with_default_pip   s    z1TestBootstrap.test_bootstrapping_with_default_pipc          	   C   s6   |   t¡ tjddd W d Q R X |  | jj¡ d S )NT)r8   r:   )ÚassertRaisesÚ
ValueErrorr   r$   ÚassertFalser   Úcalled)r   r   r   r	   Ú$test_altinstall_default_pip_conflictƒ   s    z2TestBootstrap.test_altinstall_default_pip_conflictc             C   s$   d| j d< t ¡  |  d| j ¡ d S )Nztest fodderÚPIP_THIS_SHOULD_GO_AWAY)r   r   r$   r;   )r   r   r   r	   Ú&test_pip_environment_variables_removedˆ   s    
z4TestBootstrap.test_pip_environment_variables_removedc             C   s    t  ¡  |  | jd tj¡ d S )NÚPIP_CONFIG_FILE)r   r$   r   r   r   r   )r   r   r   r	   Útest_pip_config_file_disabled   s    z+TestBootstrap.test_pip_config_file_disabledN)r   r   r   r*   r,   r.   r0   r2   r3   r5   r7   r9   r<   rA   rC   rE   r   r   r   r	   r   $   s   r   c          	   #   sr   ˆ d krd }nG ‡ fdd„dƒ}|ƒ }t ƒ }tj d|¡}|tjd< z
|V  W d ||krbtjd= n
|tjd< X d S )Nc                   s   e Zd Z” ZdS )zfake_pip.<locals>.FakePipN)r   r   r   Ú__version__r   )r   r   r	   ÚFakePipš   s   rG   r!   )ÚobjectÚsysÚmodulesÚget)r   r!   rG   ÚsentinelZorig_pipr   )r   r	   Úfake_pip•   s    


rM   c               @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestUninstallc          	   C   s.   t d ƒ t ¡  W d Q R X |  | jj¡ d S )N)rM   r   Ú_uninstall_helperr?   r   r@   )r   r   r   r	   Ú)test_uninstall_skipped_when_not_installedª   s    
z7TestUninstall.test_uninstall_skipped_when_not_installedc          
   C   s\   t dƒ$ tj ¡ }t ¡  W d Q R X W d Q R X | ¡  ¡ }|  d|¡ |  	| j
j¡ d S )Nznot a valid versionz!only uninstall a matching version)rM   ÚtestÚsupportÚcaptured_stderrr   rO   ÚgetvalueÚstripÚassertInr?   r   r@   )r   ÚstderrÚwarningr   r   r	   Ú5test_uninstall_skipped_with_warning_for_wrong_version¯   s    
zCTestUninstall.test_uninstall_skipped_with_warning_for_wrong_versionc          	   C   s4   t ƒ  t ¡  W d Q R X | j dddddg¡ d S )NÚ	uninstallz-yz--disable-pip-version-checkr!   r    )rM   r   rO   r   r%   )r   r   r   r	   Útest_uninstall¸   s
    zTestUninstall.test_uninstallc          	   C   s:   t ƒ  tjdd W d Q R X | j ddddddg¡ d S )	Nr"   )r1   rZ   z-yz--disable-pip-version-checkz-vr!   r    )rM   r   rO   r   r%   )r   r   r   r	   Útest_uninstall_with_verbosity_1Ã   s
    
z-TestUninstall.test_uninstall_with_verbosity_1c          	   C   s:   t ƒ  tjdd W d Q R X | j ddddddg¡ d S )	Nr#   )r1   rZ   z-yz--disable-pip-version-checkz-vvr!   r    )rM   r   rO   r   r%   )r   r   r   r	   Útest_uninstall_with_verbosity_2Î   s
    
z-TestUninstall.test_uninstall_with_verbosity_2c          	   C   s:   t ƒ  tjdd W d Q R X | j ddddddg¡ d S )	Nr4   )r1   rZ   z-yz--disable-pip-version-checkz-vvvr!   r    )rM   r   rO   r   r%   )r   r   r   r	   Útest_uninstall_with_verbosity_3Ù   s
    z-TestUninstall.test_uninstall_with_verbosity_3c          	   C   s6   d| j d< tƒ  t ¡  W d Q R X |  d| j ¡ d S )Nztest fodderrB   )r   rM   r   rO   r;   )r   r   r   r	   rC   ä   s    
z4TestUninstall.test_pip_environment_variables_removedc          	   C   s2   t ƒ  t ¡  W d Q R X |  | jd tj¡ d S )NrD   )rM   r   rO   r   r   r   r   )r   r   r   r	   rE   ì   s    z+TestUninstall.test_pip_config_file_disabledN)r   r   r   rP   rY   r[   r\   r]   r^   rC   rE   r   r   r   r	   rN   ¨   s   	rN   zpip c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestBootstrappingMainFunctionc          
   C   sb   t j ¡ (}|  t¡ t dg¡ W d Q R X W d Q R X | ¡  ¡ }|  	|t
¡ |  | jj¡ d S )Nz	--version)rQ   rR   Úcaptured_stdoutr=   Ú
SystemExitr   Ú_mainrT   rU   r   ÚEXPECTED_VERSION_OUTPUTr?   r   r@   )r   ÚstdoutÚresultr   r   r	   Útest_bootstrap_versionú   s     z4TestBootstrappingMainFunction.test_bootstrap_versionc             C   s\   t  g ¡}| j dddtjjddgtjj¡ | jjd d }|  t	|ƒd¡ |  |d¡ d S )	Nr   z
--no-indexz--find-linksr    r!   r   r"   r#   )
r   rb   r   r%   r   r   r&   r'   r   r(   )r   Ú	exit_coder)   r   r   r	   r*     s    

z6TestBootstrappingMainFunction.test_basic_bootstrappingc             C   s"   d| j _t g ¡}|  |d¡ d S )Nr#   )r   r   r   rb   r   )r   rg   r   r   r	   Útest_bootstrapping_error_code  s    
z;TestBootstrappingMainFunction.test_bootstrapping_error_codeN)r   r   r   rf   r*   rh   r   r   r   r	   r_   ø   s   r_   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestUninstallationMainFunctionc          
   C   sd   t j ¡ *}|  t¡ tj dg¡ W d Q R X W d Q R X | ¡  	¡ }|  
|t¡ |  | jj¡ d S )Nz	--version)rQ   rR   r`   r=   ra   r   Ú
_uninstallrb   rT   rU   r   rc   r?   r   r@   )r   rd   re   r   r   r	   Útest_uninstall_version  s    "z5TestUninstallationMainFunction.test_uninstall_versionc          	   C   sD   t ƒ  tj g ¡}W d Q R X | j dddddg¡ |  |d¡ d S )NrZ   z-yz--disable-pip-version-checkr!   r    r   )rM   r   rj   rb   r   r%   r   )r   rg   r   r   r	   Útest_basic_uninstall!  s    z3TestUninstallationMainFunction.test_basic_uninstallc          	   C   s6   t ƒ  d| j_tj g ¡}W d Q R X |  |d¡ d S )Nr#   )rM   r   r   r   rj   rb   r   )r   rg   r   r   r	   Útest_uninstall_error_code.  s    z8TestUninstallationMainFunction.test_uninstall_error_codeN)r   r   r   rk   rl   rm   r   r   r   r	   ri     s   ri   Ú__main__)r   Zunittest.mockZtest.supportrQ   r   Úos.pathÚ
contextlibrI   r   Zensurepip._uninstallÚTestCaser   r   r   Úcontextmanagerr   rM   rN   rc   r_   ri   r   Úmainr   r   r   r	   Ú<module>   s&   qN
