B
    18™\%&  ã               @   sô   d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z ddlm
Z
 ddlmZ ddlmZ ddlmZ yddlZW n ek
rœ   dZY nX dZd	ZG d
d„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zedkrðeeƒ ƒ dS )z%Tests for distutils.command.register.é    N)Úcheck_warningsÚrun_unittest)Úregister)ÚDistutilsSetupError)ÚINFO)ÚBasePyPIRCCommandTestCasez@[distutils]

index-servers =
    server1

[server1]
username:me
zN[distutils]
index-servers =
    pypi

[pypi]
username:tarek
password:password
c               @   s"   e Zd ZdZdd„ Zddd„ZdS )	ÚInputszFakes user inputs.c             G   s   || _ d| _d S )Nr   )ÚanswersÚindex)Úselfr	   © r   úa/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_register.pyÚ__init__,   s    zInputs.__init__Ú c          	   C   s"   z| j | j S |  jd7  _X d S )Né   )r	   r
   )r   Úpromptr   r   r   Ú__call__0   s    zInputs.__call__N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   *   s   r   c               @   s<   e Zd ZdZdd„ Zdd„ Zddd„Zd	d
„ Zddd„ZdS )Ú
FakeOpenerzFakes a PyPI serverc             C   s
   g | _ d S )N)Úreqs)r   r   r   r   r   8   s    zFakeOpener.__init__c             G   s   | S )Nr   )r   Úargsr   r   r   r   ;   s    zFakeOpener.__call__Nc             C   s   | j  |¡ | S )N)r   Úappend)r   ÚreqÚdataÚtimeoutr   r   r   Úopen>   s    zFakeOpener.openc             C   s   dS )Ns   xxxr   )r   r   r   r   ÚreadB   s    zFakeOpener.readc             C   s   ddi  | ¡ |¡S )Nzcontent-typeztext/plain; charset=utf-8)ÚgetÚlower)r   ÚnameÚdefaultr   r   r   Ú	getheaderE   s    zFakeOpener.getheader)NN)N)	r   r   r   r   r   r   r   r   r$   r   r   r   r   r   6   s   
r   c                   sš   e Zd Z‡ fdd„Z‡ fdd„Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	e
 edk	d¡dd„ ƒZe
 edk	d¡dd„ ƒZdd„ Zdd„ Zdd„ Z‡  ZS )ÚRegisterTestCasec                sJ   t t| ƒ ¡  tj| _dd„ }|t_d tj_tjj| _	t
ƒ  | _tj_d S )Nc             S   s   dS )NÚpasswordr   )r   r   r   r   Ú_getpassQ   s    z(RegisterTestCase.setUp.<locals>._getpass)Úsuperr%   ÚsetUpÚgetpassÚ_old_getpassÚurllibÚrequestÚ_openerÚbuild_openerÚ
old_openerr   Úconn)r   r'   )Ú	__class__r   r   r)   M   s    
zRegisterTestCase.setUpc                s,   | j t_d tj_| jtj_tt| ƒ 	¡  d S )N)
r+   r*   r,   r-   r.   r0   r/   r(   r%   ÚtearDown)r   )r2   r   r   r3   X   s    
zRegisterTestCase.tearDownNc             C   s0   |d krddddddœ}| j f |Ž\}}t|ƒS )NÚxxx)ÚurlÚauthorÚauthor_emailr"   Úversion)Úcreate_distr   )r   ÚmetadataÚpkg_infoÚdistr   r   r   Ú_get_cmd^   s    
zRegisterTestCase._get_cmdc             C   s  |   ¡ }|  tj | j¡¡ tdddƒ}|jt_	z| 
¡  W d t`	X |  tj | j¡¡ t| jƒ}z| ¡ }|  |t¡ W d | ¡  X ddd„}|t_	d|_| 
¡  |  t| jjƒd¡ t| jjd	 jƒ}t| jjd jƒ}|  |d
 d¡ |  |d
 d¡ |  d| jjd j¡ d S )NÚ1ÚtarekÚyr   c             S   s   t | ƒ‚d S )N)ÚAssertionError)r   r   r   r   Ú_no_wayŽ   s    z4RegisterTestCase.test_create_pypirc.<locals>._no_wayr   é   r   zContent-lengthZ1374s   xxx)r   )r=   ÚassertFalseÚosÚpathÚexistsÚrcr   r   Úregister_moduleÚinputÚrunÚ
assertTruer   r   ÚassertEqualÚWANTED_PYPIRCÚcloseÚshow_responseÚlenr1   r   ÚdictÚheadersÚassertInr   )r   ÚcmdÚinputsÚfÚcontentrB   Zreq1Zreq2r   r   r   Útest_create_pypircf   s.    



z#RegisterTestCase.test_create_pypircc             C   sB   |   | jt¡ |  ¡ }| ¡  | ¡  | ¡  |  |jj	d¡ d S )Nr&   )
Ú
write_filerH   ÚPYPIRC_NOPASSWORDr=   Z_set_configÚfinalize_optionsZsend_metadatarM   Údistributionr&   )r   rU   r   r   r   Útest_password_not_in_fileŸ   s    z*RegisterTestCase.test_password_not_in_filec             C   s|   |   ¡ }tdddƒ}|jt_z| ¡  W d t`X |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )	NÚ2r?   ztarek@ziade.orgr   r   zContent-lengthZ608s   tarek)r=   r   r   rI   rJ   rK   rM   rQ   r1   r   rR   rS   rT   r   )r   rU   rV   r   rS   r   r   r   Útest_registering«   s    
z!RegisterTestCase.test_registeringc             C   sz   |   ¡ }tddƒ}|jt_z| ¡  W d t`X |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )NÚ3ztarek@ziade.orgr   r   zContent-lengthZ290s   tarek)r=   r   r   rI   rJ   rK   rM   rQ   r1   r   rR   rS   rT   r   )r   rU   rV   r   rS   r   r   r   Útest_password_reset½   s    

z$RegisterTestCase.test_password_resetzneeds docutilsc             C   s6  |   i ¡}| ¡  d|_|  t|j¡ dddddddœ}|   |¡}| ¡  d|_|  t|j¡ d|d< |   |¡}| ¡  d|_tdd	d
ƒ}|jt_	z| ¡  W d t`	X |   ¡ }| ¡  tdd	d
ƒ}|jt_	z| ¡  W d t`	X ddddddddœ}|   |¡}| ¡  d|_tdd	d
ƒ}|jt_	z| ¡  W d t`	X d S )Nr   r4   u   Ã©xÃ©xÃ©ztitle
==

text)r5   r6   r7   r"   r8   Úlong_descriptionztitle
=====

textrc   r>   r?   r@   u   Ã‰ricu   Something about esszet ÃŸu   More things about esszet ÃŸ)r5   r6   r7   r"   r8   Údescriptionrc   )
r=   Úensure_finalizedÚstrictÚassertRaisesr   rK   r   r   rI   rJ   )r   rU   r:   rV   r   r   r   Útest_strictÏ   sR    



zRegisterTestCase.test_strictc             C   s`   d}ddddd|dœ}|   |¡}| ¡  d|_tdddƒ}|t_|  ttd¡ |  t	|j
¡ d S )	Nz:funkie:`str`r4   )r5   r6   r7   r"   r8   rc   Tr_   r?   ztarek@ziade.orgrJ   )r=   re   rf   r   rI   rJ   Ú
addCleanupÚdelattrrg   r   rK   )r   rd   r:   rU   rV   r   r   r   Ú&test_register_invalid_long_description  s    
z7RegisterTestCase.test_register_invalid_long_descriptionc          	   C   sB   |   ¡ }tƒ *}t d¡ | ¡  |  t|jƒd¡ W d Q R X d S )NÚalwaysr   )r=   r   ÚwarningsÚsimplefilterZcheck_metadatarM   rQ   )r   rU   Úwr   r   r   Útest_check_metadata_deprecated!  s
    
z/RegisterTestCase.test_check_metadata_deprecatedc             C   s4   |   ¡ }d|_| ¡  |  t¡}|  |ddg¡ d S )Nr   zrunning checkr4   )r=   Zlist_classifiersrK   Úget_logsr   rM   )r   rU   Úresultsr   r   r   Útest_list_classifiers)  s
    
z&RegisterTestCase.test_list_classifiersc             C   sT   |   ¡ }tdddƒ}|jt_d|_z| ¡  W d t`X |  t¡}|  	|d d¡ d S )Nr>   r?   r@   r   é   z›---------------------------------------------------------------------------
xxx
---------------------------------------------------------------------------)
r=   r   r   rI   rJ   rP   rK   rq   r   rM   )r   rU   rV   rr   r   r   r   Útest_show_response0  s    
z#RegisterTestCase.test_show_response)N)r   r   r   r)   r3   r=   rY   r^   r`   rb   ÚunittestÚ
skipUnlessÚdocutilsrh   rk   rp   rs   ru   Ú__classcell__r   r   )r2   r   r%   K   s   
9Br%   c               C   s
   t  t¡S )N)rv   Ú	makeSuiter%   r   r   r   r   Ú
test_suite?  s    r{   Ú__main__)r   rE   rv   r*   r,   rm   Ztest.supportr   r   Údistutils.commandr   rI   Zdistutils.command.registerZdistutils.errorsr   Zdistutils.logr   Zdistutils.tests.test_configr   rx   ÚImportErrorr[   rN   Úobjectr   r   r%   r{   r   r   r   r   r   Ú<module>   s0   


 u