a
    åze%&  ã                   @   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 zddlZW n eyš   dZY n0 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   ú3/usr/lib/python3.9/distutils/tests/test_register.pyÚ__init__,   s    zInputs.__init__Ú c              	   C   s2   z| j | j W |  jd7  _S |  jd7  _0 d S )Né   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 r   r   )r   Úargsr   r   r   r   ;   s    zFakeOpener.__call__Nc                 C   s   | j  |¡ | S r   )r   Úappend)r   ÚreqÚdataÚtimeoutr   r   r   Úopen>   s    zFakeOpener.openc                 C   s   dS )Nó   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ud¡dd„ ƒZe
 edu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 r   )
r1   r0   r2   r3   r4   r6   r5   r.   r)   ÚtearDownr   r8   r   r   r:   X   s    
zRegisterTestCase.tearDownNc                 C   s4   |d u rddddddœ}| j f i |¤Ž\}}t|ƒS )NÚxxx)ÚurlÚauthorÚauthor_emailr&   Úversion)Zcreate_distr   )r   ÚmetadataZ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 t`	nt`	0 |  tj | j¡¡ t| jƒ}z | ¡ }|  |t¡ W | ¡  n
| ¡  0 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 r   )ÚAssertionErrorr,   r   r   r   Ú_no_wayŽ   s    z4RegisterTestCase.test_create_pypirc.<locals>._no_wayr   é   r   úContent-lengthZ1374r"   )r   )rB   ZassertFalseÚosÚpathÚexistsÚrcr   r   Úregister_moduleÚinputÚrunZ
assertTruer!   r#   ÚassertEqualÚWANTED_PYPIRCÚcloseÚshow_responseÚlenr7   r   ÚdictÚheadersÚassertInr   )r   ÚcmdÚinputsÚfZcontentrG   Zreq1Zreq2r   r   r   Útest_create_pypircf   s.    



z#RegisterTestCase.test_create_pypircc                 C   sB   |   | jt¡ |  ¡ }| ¡  | ¡  | ¡  |  |jj	d¡ d S r*   )
Z
write_filerM   ÚPYPIRC_NOPASSWORDrB   Z_set_configZfinalize_optionsZsend_metadatarQ   Zdistributionr+   )r   rY   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 t`nt`0 |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )	NÚ2rD   útarek@ziade.orgr   r   rI   Z608ó   tarek©rB   r   r   rN   rO   rP   rQ   rU   r7   r   rV   rW   rX   r   ©r   rY   rZ   r   rW   r   r   r   Útest_registering«   s    

z!RegisterTestCase.test_registeringc                 C   s~   |   ¡ }tddƒ}|jt_z| ¡  W t`nt`0 |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )NÚ3r`   r   r   rI   Z290ra   rb   rc   r   r   r   Útest_password_reset½   s    


z$RegisterTestCase.test_password_resetzneeds docutilsc                 C   sB  |   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 t`	nt`	0 |   ¡ }| ¡  tdd	d
ƒ}|jt_	z| ¡  W t`	nt`	0 ddddddddœ}|   |¡}| ¡  d|_tdd	d
ƒ}|jt_	z| ¡  W t`	nt`	0 d S )Nr   r;   u   Ã©xÃ©xÃ©ztitle
==

text©r<   r=   r>   r&   r?   Úlong_descriptionztitle
=====

textrh   rC   rD   rE   u   Ã‰ricu   Something about esszet ÃŸu   More things about esszet ÃŸ)r<   r=   r>   r&   r?   Údescriptionrh   )
rB   Úensure_finalizedÚstrictÚassertRaisesr   rP   r   r   rN   rO   )r   rY   r@   rZ   r   r   r   Útest_strictÏ   sV    
ý



ü

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`r;   rg   Tr_   rD   r`   rO   )rB   rj   rk   r   rN   rO   Z
addCleanupÚdelattrrl   r   rP   )r   ri   r@   rY   rZ   r   r   r   Ú&test_register_invalid_long_description  s    ý
z7RegisterTestCase.test_register_invalid_long_descriptionc                 C   sV   |   ¡ }tƒ 4}t d¡ | ¡  |  t|jƒd¡ W d   ƒ n1 sH0    Y  d S )NÚalwaysr   )rB   r   ÚwarningsÚsimplefilterZcheck_metadatarQ   rU   )r   rY   Ú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 checkr;   )rB   Zlist_classifiersrP   Úget_logsr   rQ   )r   rY   Úresultsr   r   r   Útest_list_classifiers)  s
    
z&RegisterTestCase.test_list_classifiersc                 C   sX   |   ¡ }tdddƒ}|jt_d|_z| ¡  W t`nt`0 |  t¡}|  	|d d¡ d S )NrC   rD   rE   r   é   z›---------------------------------------------------------------------------
xxx
---------------------------------------------------------------------------)
rB   r   r   rN   rO   rT   rP   ru   r   rQ   )r   rY   rZ   rv   r   r   r   Útest_show_response0  s    

z#RegisterTestCase.test_show_response)N)r   r   r   r/   r:   rB   r\   r^   rd   rf   ÚunittestZ
skipUnlessÚdocutilsrm   ro   rt   rw   ry   Ú__classcell__r   r   r8   r   r)   K   s   
9
A
r)   c                   C   s
   t  t¡S r   )rz   Z	makeSuiter)   r   r   r   r   Ú
test_suite?  s    r}   Ú__main__)r   rJ   rz   r0   r2   rq   Ztest.supportr   r   Zdistutils.commandr   rN   Zdistutils.command.registerZdistutils.errorsr   Zdistutils.logr   Zdistutils.tests.test_configr   r{   ÚImportErrorr]   rR   Úobjectr   r   r)   r}   r   r   r   r   r   Ú<module>   s0   


 u