a
    "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re   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.21/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 s0    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