
    z%i%                     8   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j                  d        G d de j                         Z G d d	e j                         Z G d
 de j                         Zedk(  r e j*                          yy)    N)support)	os_helper)socket_helpernetworkc                       e Zd Zd Zd Zd Zy)URLTimeoutTestc                 J    t        j                  t        j                         y N)socketsetdefaulttimeoutr   INTERNET_TIMEOUTselfs    G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_urllibnet.pysetUpzURLTimeoutTest.setUp   s      !9!9:    c                 .    t        j                  d        y r
   )r   r   r   s    r   tearDownzURLTimeoutTest.tearDown   s      &r   c                    | j                  t        j                  j                         t        j                  j                  t        j                        j                  }t        j                  |      5  t        j                  j                  t        j                        }|j                          d d d        y # 1 sw Y   y xY wr
   )
addCleanupurllibrequest
urlcleanupparseurlparser   TEST_HTTP_URLnetlocr   transient_interneturlopenread)r   domainfs      r   testURLreadzURLTimeoutTest.testURLread   s~    112&&w'<'<=DD--f5 	&&w'<'<=AFFH	 	 	s   6>B==CN)__name__
__module____qualname__r   r   r#    r   r   r   r      s    ;'r   r   c                       e Zd Z	 dZd Zej                  d        Zd Zd Z	d Z
d Zd Z ej                  d	      d
        Zy)urlopenNetworkTestshttp://www.pythontest.net/c                 V    | j                  t        j                  j                         y r
   r   r   r   r   r   s    r   r   zurlopenNetworkTests.setUp6       112r   c              /      K   |d   }t        j                  |      5  t        j                  j                  |i |}	 | |j                          	 d d d        y # |j                          w xY w# 1 sw Y   y xY wwNr   )r   r   r   r   r   close)r   argskwargsresourcers        r   r   zurlopenNetworkTests.urlopen:   so     7--h7 	&&77A		 	
 		 	s3   A= A1AA1	A=A..A11A:6A=c                     | j                  | j                        5 }dD ]!  }| j                  t        ||      d|z         # | j                  |j	                         d       d d d        y # 1 sw Y   y xY w)N)r    readline	readlinesfilenor0   infogeturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r   url
assertTruehasattrr    )r   open_urlattrs      r   
test_basiczurlopenNetworkTests.test_basicD   s|    \\$((# 	Fx+ I$ 7 :ACG:H II OOHMMO-DE	F 	F 	Fs   AA,,A5c                     | j                  | j                        5 }| j                  |j                         t        d       | j                  |j                         t        d       d d d        y # 1 sw Y   y xY w)Nz readline did not return a stringzreadlines did not return a list)r   r;   assertIsInstancer6   bytesr7   list)r   r>   s     r   test_readlinesz"urlopenNetworkTests.test_readlinesM   sk    \\$((# 	Ex!!("3"3"5u"DF!!("4"4"6"CE	E 	E 	Es   AA00A9c                    | j                  | j                        5 }|j                         }| j                  |t        j
                  j                  d       | j                  |j                         d       d d d        y # 1 sw Y   y xY w)NzEobject returned by 'info' is not an instance of email.message.Messagehtml)	r   r;   r9   rB   emailmessageMessageassertEqualget_content_subtype)r   r>   info_objs      r   	test_infozurlopenNetworkTests.test_infoU   sv    \\$((# 	Ex}}H!!(EMM,A,A#FG X99;VD	E 	E 	Es   ABB
c                     | j                  | j                        5 }|j                         }| j                  || j                         d d d        y # 1 sw Y   y xY wr
   )r   r;   r:   rK   )r   r>   
gotten_urls      r   test_geturlzurlopenNetworkTests.test_geturl^   sI    \\$((# 	3x!*JZ2	3 	3 	3s   -AAc                    | j                   dz   }t        j                  |      5  | j                  t              5  t
        j                  j                         j                  |      }d d d        	 j                         }|j                          | j                  |d       d d d        y # 1 sw Y   ExY w# j                          w xY w# 1 sw Y   y xY w)NXXXinvalidXXXi  )r;   r   r   assertWarnsDeprecationWarningr   r   FancyURLopeneropengetcoder0   rK   )r   URLr>   codes       r   test_getcodez urlopenNetworkTests.test_getcoded   s    hh(--c2 	(!!"45 E!>>88:??DE!'') T3'	( 	(E E
  	( 	(s:   C.B-)C2B9"C-B6	2C9CCCwalltimec                 2   d}	 t        j                  |       | j                  d|z         d}| j	                  t        |      5  t
        j                  j                  dj                  |             d d d        y # t        $ r Y \w xY w# 1 sw Y   y xY w)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skipTestOSErrorassertRaisesr   r   r   format)r   bogus_domainfailure_explanations      r   test_bad_addressz$urlopenNetworkTests.test_bad_addressp   s    , 0		S  . MMB\QR D w,?@ 	FNN""<#6#6|#DE	F 	F  	 			F 	Fs   A> /B>	B
	B
BN)r$   r%   r&   r;   r   
contextlibcontextmanagerr   r@   rE   rN   rQ   r[   r   requires_resourcerg   r'   r   r   r)   r)   %   sl     'C3  FEE3
( Wz*$F +$Fr   r)   c                       e Zd Z	 d Zej
                  d        Zd Zd Zd Z	dZ
 ej                  d      d        Zd	 Zy
)urlretrieveNetworkTestsc                 V    | j                  t        j                  j                         y r
   r,   r   s    r   r   zurlretrieveNetworkTests.setUp   r-   r   c              /     K   |d   }t        j                  |      5  t        j                  j                  |i |\  }}	 ||f t        j                  |       	 d d d        y # t        j                  |       w xY w# 1 sw Y   y xY wwr/   )r   r   r   r   urlretriever   unlink)r   r1   r2   r3   file_locationr9   s         r   ro   z#urlretrieveNetworkTests.urlretrieve   s     7--h7 	0"(.."<"<d"Mf"MM40#T))  /	0 	0
   /	0 	0s4   B#B A&B 	B&A==B  B	Bc                 J   | j                  | j                        5 \  }}| j                  t        j                  j                  |      d       t        |d      5 }| j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz9file location returned by urlretrieve is not a valid pathrbz=reading from the file location returned by urlretrieve failed)ro   logor<   ospathexistsrW   r    r   rq   r9   r"   s       r   r@   z"urlretrieveNetworkTests.test_basic   s    dii( 	:,A]DOOBGGNN=9 <? @mT* :a +9 ::	: 	:: :	: 	:s#   ?B!B<BB	BB"c                    | j                  | j                  t        j                        5 \  }}| j	                  |t        j                         | j                  t        j                  j                  |             t        |d      5 }| j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrs   z"reading from temporary file failed)ro   rt   r   TESTFNrK   r<   ru   rv   rw   rW   r    rx   s       r   test_specified_pathz+urlretrieveNetworkTests.test_specified_path   s    dii'..0 	P3HM4]I,<,<=OOBGGNN=9:mT* Pa*NOP		P 	PP P		P 	Ps$   AC	!B;*C;C	 CCc                     | j                  | j                        5 \  }}| j                  |t        j                  j
                  d       d d d        y # 1 sw Y   y xY w)Nz0info is not an instance of email.message.Message)ro   rt   rB   rH   rI   rJ   )r   rq   r9   s      r   test_headerz#urlretrieveNetworkTests.test_header   sT    dii( 	V,A]D!!$(=(="TV	V 	V 	Vs   /AAr*   r\   c                    | j                  | j                        5 \  }}|j                  d      }d}	 t        j                  ||       d d d        y # t
        $ r | j                  d|z         Y (w xY w# 1 sw Y   y xY w)NDatez%a, %d %b %Y %H:%M:%S GMTzDate value not in %r format)ro   rt   gettimestrptime
ValueErrorfail)r   rq   fileheaders	datevalue
dateformats        r   test_data_headerz(urlretrieveNetworkTests.test_data_header   s    dii( 	F,H]K#/I4JFi4		F 	F
  F		7*DEF	F 	Fs(   A6AA30A62A33A66A?c                 r  	 g 		fd}| j                  | j                  |      5 \  }}t        |d         }d d d        t        	      }| j	                  t        	      dd       | j                  	d   d   d       | j	                  	d   d   dd|z         | j                  	d   d	          | j                  	d
   d	   |       	D ch c]  \  }}}|
 }}}| j                  	d   d   h|d|z         | j                  	d
   d   	d   d   z  |d|z         y # 1 sw Y   xY wc c}}w )Nc                 .    j                  | ||f       y r
   )append)blocks
block_size
total_sizerecordss      r   recording_reporthookzEurlretrieveNetworkTests.test_reporthook.<locals>.recording_reporthook   s    NNFJ
;<r   )
reporthookzContent-Length   zKThere should always be two calls; the first one before the transfer starts.r^   r   zblock size can't be 0 in %s   zblock sizes in %s must be equalz9number of blocks * block size must be >= total size in %s)ro   rt   intreprassertGreaterlenrK   assertGreaterEqual)
r   r   rq   r   expected_sizerecords_repr_r   block_sizesr   s
            @r   test_reporthookz'urlretrieveNetworkTests.test_reporthook   sv   	= dii4HI 	? N,{,< =>M	? G}3w< 1N 	OA*71:a=!<|K 	 	MA6Q7:AB&6aQzBB'!*Q-+>M 	 	OAwqz!} <m%79E%F 	  	G!	? 	? Cs   D'D3'D0N)r$   r%   r&   r   rh   ri   ro   r@   r{   r}   rt   r   rj   r   r   r'   r   r   rl   rl      sc    =3 0 0:PV (DWz*F +FGr   rl   __main__)unittesttestr   test.supportr   r   rh   r   urllib.parser   urllib.requestru   email.messagerH   r   requiresTestCaser   r)   rl   r$   mainr'   r   r   <module>r      s      " &     	      X&& &pF(++ pFfMGh// MG` zHMMO r   