o
    ^ùhM&  ã                   @   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 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 ddlmZ zddlZW n eyQ   dZY nw 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 dS )z%Tests for distutils.command.register.é    N)Úrun_unittest)Úcheck_warnings)Ú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   ú/lib/python3.10/distutils/tests/test_register.pyÚ__init__-   s   
zInputs.__init__Ú c              	   C   s.   z| j | j W |  jd7  _S |  jd7  _w )Né   r	   )r   Úpromptr   r   r   Ú__call__1   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   9   ó   
zFakeOpener.__init__c                 G   s   | S r   r   )r   Úargsr   r   r   r   <   ó   zFakeOpener.__call__Nc                 C   s   | j  |¡ | S r   )r   Úappend)r   ÚreqÚdataZtimeoutr   r   r   Úopen?   s   zFakeOpener.openc                 C   ó   dS )Nó   xxxr   r   r   r   r   ÚreadC   r   zFakeOpener.readc                 C   s   ddi  | ¡ |¡S )Nzcontent-typeztext/plain; charset=utf-8)ÚgetÚlower)r   ÚnameÚdefaultr   r   r   Ú	getheaderF   s   ÿþzFakeOpener.getheader)NNr   )	r   r   r   r   r   r   r#   r&   r+   r   r   r   r   r   7   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   r$   ©NÚpasswordr   ©r   r   r   r   Ú_getpassR   r   z(RegisterTestCase.setUp.<locals>._getpass)Úsuperr,   ÚsetUpÚgetpassÚ_old_getpassÚurllibÚrequestÚ_openerÚbuild_openerÚ
old_openerr   Úconn)r   r0   ©Ú	__class__r   r   r2   N   s   
zRegisterTestCase.setUpc                    s,   | j t_d tj_| jtj_tt| ƒ 	¡  d S r   )
r4   r3   r5   r6   r7   r9   r8   r1   r,   ÚtearDownr   r;   r   r   r=   Y   s   
zRegisterTestCase.tearDownNc                 C   s4   |d u rddddddœ}| j di |¤Ž\}}t|ƒS )NÚxxx)ÚurlÚauthorÚauthor_emailr)   Úversionr   )Zcreate_distr   )r   ÚmetadataZpkg_infoZ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`	w |  tj | j¡¡ t| jƒ}z| ¡ }|  |t¡ W | ¡  n| ¡  w 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 | ƒ‚r   )ÚAssertionErrorr/   r   r   r   Ú_no_way   s   z4RegisterTestCase.test_create_pypirc.<locals>._no_wayr   é   r   úContent-lengthZ1374r%   r   )rD   ZassertFalseÚosÚpathÚexistsÚrcr   r   Úregister_moduleÚinputÚrunZ
assertTruer#   r&   ÚassertEqualÚWANTED_PYPIRCÚcloseÚshow_responseÚlenr:   r   ÚdictÚheadersÚassertInr"   )r   ÚcmdÚinputsÚfZcontentrI   Zreq1Zreq2r   r   r   Útest_create_pypircg   s.   



z#RegisterTestCase.test_create_pypircc                 C   sB   |   | jt¡ |  ¡ }| ¡  | ¡  | ¡  |  |jj	d¡ d S r-   )
Z
write_filerO   ÚPYPIRC_NOPASSWORDrD   Z_set_configZfinalize_optionsZsend_metadatarS   Zdistributionr.   )r   r[   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`w |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )	NÚ2rF   útarek@ziade.orgr   r   rK   Z608ó   tarek©rD   r   r   rP   rQ   rR   rS   rW   r:   r   rX   rY   rZ   r"   ©r   r[   r\   r!   rY   r   r   r   Útest_registering¬   s   

z!RegisterTestCase.test_registeringc                 C   s~   |   ¡ }tddƒ}|jt_z| ¡  W t`nt`w |  t| jj	ƒd¡ | jj	d }t
|jƒ}|  |d d¡ |  d|j¡ d S )NÚ3rb   r   r   rK   Z290rc   rd   re   r   r   r   Útest_password_reset¾   s   


z$RegisterTestCase.test_password_resetzneeds docutilsc                 C   s@  |   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`	w |   ¡ }| ¡  tdd	d
ƒ}|jt_	z| ¡  W t`	nt`	w ddddddddœ}|   |¡}| ¡  d|_tdd	d
ƒ}|jt_	z	| ¡  W t`	d S t`	w )Nr   r>   u   Ã©xÃ©xÃ©ztitle
==

text©r?   r@   rA   r)   rB   Úlong_descriptionztitle
=====

textrj   rE   rF   rG   u   Ã‰ricu   Something about esszet ÃŸu   More things about esszet ÃŸ)r?   r@   rA   r)   rB   Údescriptionrj   )
rD   Úensure_finalizedÚstrictÚassertRaisesr   rR   r   r   rP   rQ   )r   r[   rC   r\   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>   ri   Tra   rF   rb   rQ   )rD   rl   rm   r   rP   rQ   Z
addCleanupÚdelattrrn   r   rR   )r   rk   rC   r[   r\   r   r   r   Ú&test_register_invalid_long_description  s   ý
z7RegisterTestCase.test_register_invalid_long_descriptionc                 C   sX   |   ¡ }tƒ }t d¡ | ¡  |  t|jƒd¡ W d   ƒ d S 1 s%w   Y  d S )NÚalwaysr   )rD   r   ÚwarningsÚsimplefilterZcheck_metadatarS   rW   )r   r[   Ú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>   )rD   Zlist_classifiersrR   Úget_logsr   rS   )r   r[   Ú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`w |  t¡}|  	|d d¡ d S )NrE   rF   rG   r   é   z›---------------------------------------------------------------------------
xxx
---------------------------------------------------------------------------)
rD   r   r   rP   rQ   rV   rR   rw   r   rS   )r   r[   r\   rx   r   r   r   Útest_show_response1  s   

z#RegisterTestCase.test_show_responser   )r   r   r   r2   r=   rD   r^   r`   rf   rh   ÚunittestZ
skipUnlessÚdocutilsro   rq   rv   ry   r{   Ú__classcell__r   r   r;   r   r,   L   s    
9
A
r,   c                   C   s
   t  t¡S r   )r|   Z	makeSuiter,   r   r   r   r   Ú
test_suite@  r   r   Ú__main__)r   rL   r|   r3   r5   rs   Ztest.supportr   Ztest.support.warnings_helperr   Zdistutils.commandr   rP   Zdistutils.command.registerZdistutils.errorsr   Zdistutils.logr   Zdistutils.tests.test_configr   r}   ÚImportErrorr_   rT   Úobjectr   r   r,   r   r   r   r   r   r   Ú<module>   s8    ÿ

 uÿ