a
     Rîh"%  ã                   @   s¬   d dl Z d dlmZ d dlm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e d¡ G dd„ de jƒZG dd„ de jƒZG d	d
„ d
e jƒZedkr¨e  ¡  dS )é    N)Úsupport)Úsocket_helperÚnetworkc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚURLTimeoutTestc                 C   s   t  tj¡ d S ©N)ÚsocketÚsetdefaulttimeoutr   ZINTERNET_TIMEOUT©Úself© r   ú;/opt/python-3.9.24/usr/lib/python3.9/test/test_urllibnet.pyÚsetUp   s    zURLTimeoutTest.setUpc                 C   s   t  d ¡ d S r   )r   r   r	   r   r   r   ÚtearDown   s    zURLTimeoutTest.tearDownc                 C   sb   |   tjj¡ tj tj¡j}t	 
|¡& tj tj¡}| ¡  W d   ƒ n1 sT0    Y  d S r   )Ú
addCleanupÚurllibÚrequestÚ
urlcleanupÚparseÚurlparser   ZTEST_HTTP_URLÚnetlocr   Útransient_internetÚurlopenÚread)r
   ÚdomainÚfr   r   r   ÚtestURLread   s
    zURLTimeoutTest.testURLreadN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   r   c                   @   sV   e Zd ZdZdd„ Zejdd„ ƒZdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ ZdS )ÚurlopenNetworkTestsúhttp://www.pythontest.net/c                 C   s   |   tjj¡ d S r   ©r   r   r   r   r	   r   r   r   r   5   s    zurlopenNetworkTests.setUpc              	   o   sf   |d }t  |¡@ tjj|i |¤Ž}z|V  W | ¡  n
| ¡  0 W d   ƒ n1 sX0    Y  d S ©Nr   )r   r   r   r   r   Úclose)r
   ÚargsÚkwargsÚresourceÚrr   r   r   r   9   s    zurlopenNetworkTests.urlopenc                 C   s`   |   | j¡@}dD ]}|  t||ƒd| ¡ q|  | ¡ d¡ W d   ƒ n1 sR0    Y  d S )N)r   ÚreadlineÚ	readlinesÚfilenor#   ÚinfoÚgeturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r   ÚurlÚ
assertTrueÚhasattrr   )r
   Úopen_urlÚattrr   r   r   Ú
test_basicC   s    ÿzurlopenNetworkTests.test_basicc                 C   sT   |   | j¡4}|  | ¡ td¡ |  | ¡ td¡ W d   ƒ n1 sF0    Y  d S )Nz readline did not return a stringzreadlines did not return a list)r   r-   ÚassertIsInstancer(   Úbytesr)   Úlist)r
   r0   r   r   r   Útest_readlinesL   s    ÿÿz"urlopenNetworkTests.test_readlinesc                 C   sZ   |   | j¡:}| ¡ }|  |tjjd¡ |  | ¡ d¡ W d   ƒ n1 sL0    Y  d S )NzEobject returned by 'info' is not an instance of email.message.MessageZhtml)	r   r-   r+   r3   ÚemailÚmessageÚMessageÚassertEqualZget_content_subtype)r
   r0   Zinfo_objr   r   r   Ú	test_infoT   s    ÿzurlopenNetworkTests.test_infoc                 C   sF   |   | j¡&}| ¡ }|  || j¡ W d   ƒ n1 s80    Y  d S r   )r   r-   r,   r:   )r
   r0   Z
gotten_urlr   r   r   Útest_geturl]   s    zurlopenNetworkTests.test_geturlc              	   C   sž   | j d }t |¡v |  t¡  tj ¡  |¡}W d   ƒ n1 sF0    Y  z| 	¡ }W | 
¡  n
| 
¡  0 |  |d¡ W d   ƒ n1 s0    Y  d S )NZXXXinvalidXXXi”  )r-   r   r   ZassertWarnsÚDeprecationWarningr   r   ZFancyURLopenerÚopenZgetcoder#   r:   )r
   ZURLr0   Úcoder   r   r   Útest_getcodec   s    
.
z urlopenNetworkTests.test_getcodec                 C   s|   d}zt  |¡ W n ty$   Y n0 |  d| ¡ d}| jt|d" tj d |¡¡ W d   ƒ n1 sn0    Y  d S )Nzsadflkjsasf.i.nvali.d.z&%r should not resolve for test to workzuopening an invalid URL did not raise OSError; can be caused by a broken DNS server (e.g. returns 404 or hijacks page)©Úmsgz
http://{}/)	r   ÚgethostbynameÚOSErrorZskipTestZassertRaisesr   r   r   Úformat)r
   Zbogus_domainZfailure_explanationr   r   r   Útest_bad_addresso   s    z$urlopenNetworkTests.test_bad_addressN)r   r   r   r-   r   Ú
contextlibÚcontextmanagerr   r2   r6   r;   r<   r@   rF   r   r   r   r   r   $   s   
			r   c                   @   sN   e Zd Zdd„ Zejdd„ ƒZdd„ Zdd„ Zd	d
„ Z	dZ
dd„ Zdd„ ZdS )ÚurlretrieveNetworkTestsc                 C   s   |   tjj¡ d S r   r!   r	   r   r   r   r   ™   s    zurlretrieveNetworkTests.setUpc              
   o   sr   |d }t  |¡L tjj|i |¤Ž\}}z||fV  W t |¡ nt |¡ 0 W d   ƒ n1 sd0    Y  d S r"   )r   r   r   r   Úurlretriever   Úunlink)r
   r$   r%   r&   Úfile_locationr+   r   r   r   rJ      s    z#urlretrieveNetworkTests.urlretrievec              	   C   s‚   |   | j¡b\}}|  tj |¡d¡ t|dƒ }|  | ¡ d¡ W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  d S )Nz9file location returned by urlretrieve is not a valid pathÚrbz=reading from the file location returned by urlretrieve failed)rJ   Úlogor.   ÚosÚpathÚexistsr>   r   ©r
   rL   r+   r   r   r   r   r2   §   s    z"urlretrieveNetworkTests.test_basicc              	   C   s’   |   | jtj¡n\}}|  |tj¡ |  tj |¡¡ t	|dƒ }|  | 
¡ d¡ W d   ƒ n1 sf0    Y  W d   ƒ n1 s„0    Y  d S )NrM   z"reading from temporary file failed)rJ   rN   r   ZTESTFNr:   r.   rO   rP   rQ   r>   r   rR   r   r   r   Útest_specified_path°   s    ÿz+urlretrieveNetworkTests.test_specified_pathc                 C   sF   |   | j¡&\}}|  |tjjd¡ W d   ƒ n1 s80    Y  d S )Nz0info is not an instance of email.message.Message)rJ   rN   r3   r7   r8   r9   )r
   rL   r+   r   r   r   Útest_header¹   s    ÿz#urlretrieveNetworkTests.test_headerr    c              	   C   st   |   | j¡T\}}| d¡}d}zt ||¡ W n  tyP   |  d| ¡ Y n0 W d   ƒ n1 sf0    Y  d S )NZDatez%a, %d %b %Y %H:%M:%S GMTzDate value not in %r format)rJ   rN   ÚgetÚtimeÚstrptimeÚ
ValueErrorZfail)r
   rL   ÚfileheadersZ	datevalueZ
dateformatr   r   r   Útest_data_headerÁ   s    
z(urlretrieveNetworkTests.test_data_headerc                    s  g ‰ ‡ fdd„}| j | j|d \}}t|d ƒ}W d   ƒ n1 sF0    Y  tˆ ƒ}| jtˆ ƒddd |  ˆ d d d¡ | jˆ d d dd	| d |  ˆ d d
 |¡ |  ˆ d d
 |¡ dd„ ˆ D ƒ}| jˆ d d h|d| d | jˆ d d ˆ d d  |d| d d S )Nc                    s   ˆ   | ||f¡ d S r   )Úappend)ZblocksÚ
block_sizeZ
total_size©Úrecordsr   r   Úrecording_reporthookÍ   s    zEurlretrieveNetworkTests.test_reporthook.<locals>.recording_reporthook)Z
reporthookzContent-Lengthé   zKThere should always be two calls; the first one before the transfer starts.rA   r   zblock size can't be 0 in %sé   éÿÿÿÿc                 S   s   h | ]\}}}|’qS r   r   )Ú.0Ú_r\   r   r   r   Ú	<setcomp>Ý   ó    z:urlretrieveNetworkTests.test_reporthook.<locals>.<setcomp>zblock sizes in %s must be equalz9number of blocks * block size must be >= total size in %s)rJ   rN   ÚintÚreprZassertGreaterÚlenr:   ZassertGreaterEqual)r
   r_   rL   rY   Zexpected_sizeZrecords_reprZblock_sizesr   r]   r   Útest_reporthookÊ   s,    *ÿÿÿÿz'urlretrieveNetworkTests.test_reporthookN)r   r   r   r   rG   rH   rJ   r2   rS   rT   rN   rZ   rj   r   r   r   r   rI   –   s   
				rI   Ú__main__)ZunittestÚtestr   Ztest.supportr   rG   r   Úurllib.parser   Zurllib.requestrO   Zemail.messager7   rV   ZrequiresZTestCaser   r   rI   r   Úmainr   r   r   r   Ú<module>   s   
rO