
    eo                         d 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mZ ddlmZmZ d	Zd
Z G d de          Z G d de          Zedk    r ej                     dS dS )z#Tests for distutils.command.upload.    N)	HTTPError)upload)Distribution)DistutilsError)ERRORINFO)PYPIRCBasePyPIRCCommandTestCasez[distutils]

index-servers =
    server1
    server2

[server1]
username:me
password:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

[server2]
username:meagain
password: secret
realm:acme
repository:http://another.pypi/
z@[distutils]

index-servers =
    server1

[server1]
username:me
c                   *    e Zd ZddZddZd Zd ZdS )FakeOpenNc                     || _         t          |t                    s|| _        nd | _        |pd| _        |pd| _        d S )NOK   )url
isinstancestrreqmsgcode)selfr   r   r   s       -  /home/conda/feedstock_root/build_artifacts/python-split_1708115622739/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/distutils/tests/test_upload.py__init__zFakeOpen.__init__/   sE    #s## 	DHHDH;$KC			    c                 V    ddi                     |                                |          S )Nzcontent-typeztext/plain; charset=utf-8)getlower)r   namedefaults      r   	getheaderzFakeOpen.getheader8   s)    7c$**,,((	)r   c                     dS )Ns   xyzzy r   s    r   readzFakeOpen.read=   s    xr   c                     | j         S N)r   r"   s    r   getcodezFakeOpen.getcode@   s
    yr   )NNr%   )__name__
__module____qualname__r   r   r#   r&   r!   r   r   r   r   -   sZ               ) ) ) )
      r   r   c                   R     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
uploadTestCasec                     t          t          |                                            t          j        | _        | j        t          _        d | _        d | _        d | _	        d S r%   )
superr+   setUp
upload_modurlopenold_open_urlopen	last_opennext_msg	next_coder   	__class__s    r   r.   zuploadTestCase.setUpF   sL    nd##))+++"*!]
r   c                 x    | j         t          _        t          t          |                                            d S r%   )r1   r/   r0   r-   r+   tearDownr6   s    r   r9   zuploadTestCase.tearDownN   s/    !]
nd##,,.....r   c                 R    t          || j        | j                  | _        | j        S )N)r   r   )r   r4   r5   r3   )r   r   s     r   r2   zuploadTestCase._urlopenR   s$    !#4=t~NNN~r   c                     |                      | j        t                     t                      }t	          |          }|                                 dD ])\  }}|                     t          ||          |           *d S )N))usernameme)passwordsecret)realmpypi)
repositoryhttps://upload.pypi.org/legacy/)
write_filercr	   r   r   finalize_optionsassertEqualgetattr)r   distcmdattrwaiteds        r   test_finalize_optionsz$uploadTestCase.test_finalize_optionsV   s     	(((~~TllP 	9 	9LD& WS$//8888	9 	9r   c                 h   |                      | j        t                     t                      }t	          |          }|                                 |                     |j        d            d|_        t	          |          }|                                 |                     |j        d           d S )Nxxx)rD   rE   PYPIRC_NOPASSWORDr   r   rF   rG   r>   )r   rI   rJ   s      r   test_saved_passwordz"uploadTestCase.test_saved_passwordb   s    !2333 ~~Tllt,,, Tllu-----r   c                    |                                  }t          j                            |d          }|                     |           dd|}}}|||fg}|                     | j        t                     |                     |          \  }}t          |          }	d|	_	        |	
                                 |	                                 t          | j        j        j                  }
|                     t#          |
d                   d           |
d         }|                     |                    d                     |                     | j        j                                        d	           d
}|                     | j        j                                        |           | j        j        j        }|                     d|           |                     d|           |                     d|           |                     d|           d|v r|                     d|           d|v r|                     d|           |                     t4                    }|                     |d         d           d S )NrO   2.6
dist_files   Content-lengthir  zContent-typezmultipart/form-dataPOSTrC   s   xxxs   protocol_versions   sha256_digests@   cd2eb0837c9b4c962c22d2ff8b5441b7b45805887f051d39bf133b583baf6860s
   md5_digests    f561aaf6ef0bf14d4208bb46a4ccb3ads   blake2_256_digests   b6f289a27d4fe90da63c503bfe0a9b761a8f76bb86148565065f040be6d1c3044cf7ded78ef800509bccb4b648e507d88dc6383d67642aadccce443f1534330az---------------------------------------------------------------------------
xyzzy
---------------------------------------------------------------------------)mkdtempospathjoinrD   rE   PYPIRC_LONG_PASSWORDcreate_distr   show_responseensure_finalizedrundictr3   r   headersassertGreaterEqualint
assertTrue
startswithrG   
get_methodget_full_urldataassertInget_logsr   )r   tmpr\   command	pyversionfilenamerU   pkg_dirrI   rJ   rd   content_typeexpected_urlrk   resultss                  r   test_uploadzuploadTestCase.test_uploads   sZ   llnnw||C''',eTH	845
!5666 ((J(??Tll			 t~)122G,<$= > >EEE~.//0EFFGGG+6688&AAA8+88::LIII~!&fT""")4000&---	
 	
 	

 D  MM=tDDD4''MM" 	   --%%&GHHHHHr   c                 |   |                                  }t          j                            |d          }|                     |d           dd|}}}|||fg}|                     | j        t                     |                     |d          \  }}t          |          }	d|	_	        |	
                                 |	                                 t          | j        j        j                  }
|                     t#          |
d                   d	           |                     d
| j        j        j                   d S )NrO   zyy)contentrS   zlong description)rU   descriptionrV   rW   i|  s   long description)rZ   r[   r\   r]   rD   rE   r^   r_   r   r`   ra   rb   rc   r3   r   rd   re   rf   rl   rk   )r   rn   r\   ro   rp   rq   rU   rr   rI   rJ   rd   s              r   test_upload_correct_crz%uploadTestCase.test_upload_correct_cr   s#   llnnw||C''f---',eTH	845
!5666 ((!, ) 
 
 Tll			t~)122G,<$= > >EEE+T^-?-DEEEEEr   c                 b    d| _         d| _        |                     t          | j                   d S )Nz	Not Foundi  )r4   r5   assertRaisesr   rv   r"   s    r   test_upload_failsz uploadTestCase.test_upload_fails   s/    #.$*:;;;;;r   c           	         |                                  }t          j                            |d          }|                     |           dd|fg}|                     | j        t                     |                     |          \  }}t          d          dt          ft          dddi d           dt          fg}|D ]6\  }}}	|                     t          |          j        	          5  t          j        d
t          j        |                    5  |                     |	          5  t%          |          }
|
                                 |
                                 d d d            n# 1 swxY w Y   |                     t,                    }|                     ||d                    |                                  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   8d S )NrO   rS   rT   oserrorr   i  	httperrorzUpload failed (400): httperror)	exceptionz distutils.command.upload.urlopen)side_effect)newrY   )rZ   r[   r\   r]   rD   rE   r^   r_   OSErrorr   r   subTesttyper'   mockpatchMockr|   r   ra   rb   rm   r   rl   
clear_logs)r   rn   r\   rU   rr   rI   testsr   expectedraised_exceptionrJ   ru   s               r   test_wrong_exception_orderz)uploadTestCase.test_wrong_exception_order   s   llnnw||C''eT*+
!5666((J(??YG4uc;D99-~?

 6; 
	& 
	&1Ix!1Y(@AA 	& 	&Z B$(I)$D$D$DF F F & &**+;<< " "$Tll,,...			" " " " " " " " " " " " " " " #mmE22GMM(GBK888OO%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
	& 
	&s[   ,*G(G,8E0	$G0E44G7E48AGG(GG(GG((G,	/G,	)r'   r(   r)   r.   r9   r2   rM   rQ   rv   rz   r}   r   __classcell__)r7   s   @r   r+   r+   D   s            / / / / /  
9 
9 
9. . .",I ,I ,I`F F F0< < <
& & & & & & &r   r+   __main__)__doc__r[   unittestunittest.mockr   urllib.errorr   distutils.commandr   r/   distutils.command.uploaddistutils.corer   distutils.errorsr   distutils.logr   r   distutils.tests.test_configr	   r
   r^   rP   objectr   r+   r'   mainr!   r   r   <module>r      sO   ) ) 				        " " " " " " 3 2 2 2 2 2 + + + + + + ' ' ' ' ' ' + + + + + + % % % % % % % % I I I I I I I I &     v   .S& S& S& S& S&. S& S& S&l zHMOOOOO r   