o
    IXhK%                     @   s   d dl Z d dlm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 dS )    N)support)	os_helper)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.10.19/usr/lib/python3.10/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   sd   |  tjj tjtjj}t	
| tjtj}|  W d    d S 1 s+w   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                   @   sX   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      |  tjj d S r   r   r   r   r   r
   r   r   r   r   6      zurlopenNetworkTests.setUpc              	   o   sj    |d }t |! tjj|i |}z	|V  W |  n|  w W d    d S 1 s.w   Y  d S Nr   )r   r   r   r   r   close)r   argskwargsresourcerr   r   r   r   :   s   "zurlopenNetworkTests.urlopenc                 C   sb   |  | j!}dD ]}| t||d|  q	| | d W d    d S 1 s*w   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_basicD   s   "zurlopenNetworkTests.test_basicc                 C   sV   |  | j}| | td | | td W d    d S 1 s$w   Y  d S )Nz readline did not return a stringzreadlines did not return a list)r   r0   assertIsInstancer+   bytesr,   list)r   r3   r   r   r   test_readlinesM   s   "z"urlopenNetworkTests.test_readlinesc                 C   s\   |  | j}| }| |tjjd | | d W d    d S 1 s'w   Y  d S )NzEobject returned by 'info' is not an instance of email.message.MessageZhtml)	r   r0   r.   r6   emailmessageMessageassertEqualZget_content_subtype)r   r3   Zinfo_objr   r   r   	test_infoU   s   "zurlopenNetworkTests.test_infoc                 C   sH   |  | j}| }| || j W d    d S 1 sw   Y  d S r   )r   r0   r/   r=   )r   r3   Z
gotten_urlr   r   r   test_geturl^   s   "zurlopenNetworkTests.test_geturlc              	   C   s   | j d }t|< | t tj |}W d    n1 s#w   Y  z
|	 }W |
  n|
  w | |d W d    d S 1 sIw   Y  d S )NZXXXinvalidXXXi  )r0   r   r   ZassertWarnsDeprecationWarningr   r   ZFancyURLopeneropenZgetcoder&   r=   )r   ZURLr3   coder   r   r   test_getcoded   s   

"z urlopenNetworkTests.test_getcodec                 C   s~   d}zt | W n	 ty   Y nw | d|  d}| jt|d tjd| W d    d S 1 s8w   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_addressp   s   "z$urlopenNetworkTests.test_bad_addressN)r   r   r   r0   r   
contextlibcontextmanagerr   r5   r9   r>   r?   rC   rI   r   r   r   r   r    %   s    
			r    c                   @   sP   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   r"   r   r#   r
   r   r   r   r      r$   zurlretrieveNetworkTests.setUpc              
   o   sv    |d }t |' tjj|i |\}}z||fV  W t| nt| w W d    d S 1 s4w   Y  d S r%   )r   r   r   r   urlretriever   unlink)r   r'   r(   r)   file_locationr.   r   r   r   rM      s   "z#urlretrieveNetworkTests.urlretrievec              	   C   s   |  | j:\}}| tj|d t|d}| | d W d    n1 s+w   Y  W d    d S W d    d S 1 sCw   Y  d S )Nz9file location returned by urlretrieve is not a valid pathrbz=reading from the file location returned by urlretrieve failed)rM   logor1   ospathexistsrA   r   r   rO   r.   r   r   r   r   r5      s   "z"urlretrieveNetworkTests.test_basicc              	   C   s   |  | jtj@\}}| |tj | tj| t	|d}| |
 d W d    n1 s3w   Y  W d    d S W d    d S 1 sKw   Y  d S )NrP   z"reading from temporary file failed)rM   rQ   r   ZTESTFNr=   r1   rR   rS   rT   rA   r   rU   r   r   r   test_specified_path   s   "z+urlretrieveNetworkTests.test_specified_pathc                 C   sH   |  | j\}}| |tjjd W d    d S 1 sw   Y  d S )Nz0info is not an instance of email.message.Message)rM   rQ   r6   r:   r;   r<   )r   rO   r.   r   r   r   test_header   s
   "z#urlretrieveNetworkTests.test_headerr!   c              	   C   s   |  | j3\}}|d}d}zt|| W n ty(   | d|  Y n	w W d    d S W d    d S 1 s<w   Y  d S )NZDatez%a, %d %b %Y %H:%M:%S GMTzDate value not in %r format)rM   rQ   gettimestrptime
ValueErrorZfail)r   rO   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 s#w   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.rD   r   zblock size can't be 0 in %s   c                 S   s   h | ]\}}}|qS r   r   ).0_r_   r   r   r   	<setcomp>   s    z:urlretrieveNetworkTests.test_reporthook.<locals>.<setcomp>zblock sizes in %s must be equalz9number of blocks * block size must be >= total size in %s)rM   rQ   intreprZassertGreaterlenr=   ZassertGreaterEqual)r   rb   rO   r\   Zexpected_sizeZrecords_reprZblock_sizesr   r`   r   test_reporthook   s.   
z'urlretrieveNetworkTests.test_reporthookN)r   r   r   r   rJ   rK   rM   r5   rV   rW   rQ   r]   rl   r   r   r   r   rL      s    
				rL   __main__)Zunittesttestr   Ztest.supportr   r   rJ   r   urllib.parser   Zurllib.requestrR   Zemail.messager:   rY   ZrequiresZTestCaser   r    rL   r   mainr   r   r   r   <module>   s$    
rO