
    <e6                     4   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
Z
d dlZd dlZd dlZd dlZ ej        d           d Zd	 Z eej        j        ej        j                  Z G d
 de          Z eee j                  Z eee j                  Z eee j                  Z G d dej                   Z! G d dej                   Z" G d dej                   Z# G d dej                   Z$e%dk    r ej&                     dS dS )    N)support)	os_helper)socket_helper)ResourceDenied)sanepathname2urlnetworkc                 f    t          d          D ] }	  | |i |c S # |$ r}|}Y d }~d }~ww xY w|)N   )range)funcexcargskwargsielast_excs          +/usr/lib/python3.11/test/test_urllib2net.py_retry_thricer      sm    1XX  	4(((((( 	 	 	HHHHH	 Ns   .).c                       fd}|S )Nc                  &    t          g| R i |S N)r   )r   r   r   r   s     r   wrappedz(_wrap_with_retry_thrice.<locals>.wrapped   s#    T38888888     )r   r   r   s   `` r   _wrap_with_retry_thricer      s'    9 9 9 9 9 9Nr   c                   $    e Zd Z	 d Zd ZddZdS )TransientResourcec                 "    || _         || _        d S r   )r   attrs)selfr   r   s      r   __init__zTransientResource.__init__+   s    


r   c                     | S r   r   r    s    r   	__enter__zTransientResource.__enter__/   s    r   Nc                     	 |mt          | j        |          rZ| j                                        D ]/\  }}t	          ||          s d S t          ||          |k    r d S 0t          d          d S d S )Nz%an optional resource is not available)
issubclassr   r   itemshasattrgetattrr   )r    type_value	tracebackattr
attr_values         r   __exit__zTransientResource.__exit__2   s    	 DHe!<!<$(J$4$4$6$6 N N jud++ EE5$'':55EE 6 %%LMMM r   )NNN)__name__
__module____qualname__r!   r$   r/   r   r   r   r   r   &   sR        I    N N N N N Nr   r   )errnoc                       e Zd ZdS )	AuthTestsN)r0   r1   r2   r   r   r   r5   r5   G   s        00r   r5   c                       e Zd Zd ZdS )CloseSocketTestc                 |   |                      t          j        j                   t          j        }t          j        |          5  t          |          }|j	        }| 
                    |j                   |                                 |                     |j                   d d d            d S # 1 swxY w Y   d S r   )
addCleanupurllibrequest
urlcleanupr   TEST_HTTP_URLr   transient_internet_urlopen_with_retryfpassertFalseclosedclose
assertTrue)r    urlresponsesocks       r   
test_closezCloseSocketTest.test_closep   s    1222 #-c22 	) 	)*3//H;DT[)))NNOODK(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AB11B58B5N)r0   r1   r2   rH   r   r   r   r7   r7   n   s#        ) ) ) ) )r   r7   c                   r    e Zd Zd Zd Zd Zd Zd Zd Z e	j
        d          d             Zdd
Zd ZdS )OtherNetworkTestsc                     d S r   )logging	getLogger
addHandlerStreamHandler)r    rL   loggers      r   setUpzOtherNetworkTests.setUp   s    	7 	7r   c                     dddd t           j        j        fg}|                     ||                                            d S )Nzftp://www.pythontest.net/READMEz*ftp://www.pythontest.net/non-existent-file)r:   errorURLError
_test_urls_extra_handlers)r    urlss     r   test_ftpzOtherNetworkTests.test_ftp   sK     .-96<(* 	d224455555r   c                    t           j        }t          |d          }	 |                    d           |                                 dt          t          j                            |                    z   dd t          j
        j        fg}|                     ||                                 d           t          j        |           n# t          j        |           w xY w|                     t           t          j        j        d           d S )Nwz	hi there
zfile:zfile:///nonsensename/etc/passwdT)retryz./relative_path/to/file)r   TESTFNopenwriterC   r   ospathabspathr:   rS   rT   rU   rV   removeassertRaises
ValueErrorr;   urlopen)r    r\   frW   s       r   	test_filezOtherNetworkTests.test_file   s    !
	GGL!!!GGIII*27??6+B+BCCC2D&(D
 OOD$"6"6"8"8OEEEIfBIf*fn&<=VWWWWWs   BC	 	Cc                 0   d}t          j        |          5  t          j                            |          }t          j                            |          }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nz)http://www.pythontest.net/index.html#fragr   r>   r:   r;   Requestre   assertEqualgeturl)r    urlwith_fragreqress       r   test_urlwithfragz"OtherNetworkTests.test_urlwithfrag   s    B-l;; 	A 	A.((66C.((--CSZZ\\?A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A   A'BBBc                 0   d}t          j        |          5  t          j                            |          }t          j                            |          }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nz*http://www.pythontest.net/redir/with_frag/z)http://www.pythontest.net/elsewhere/#fragri   )r    redirect_url_with_fragrn   ro   s       r   test_redirect_url_withfragz,OtherNetworkTests.test_redirect_url_withfrag   s    !M-.DEE 	A 	A.(()?@@C.((--CSZZ\\?A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Arq   c                    t           j        }t          j        |          5  t          j                                        }t          j                            |          }|                     |	                                           |
                    |           |                     |	                                           |                     |                    d                     |                    dd           |
                    |           |                     |                    d          d           d d d            d S # 1 swxY w Y   d S )Nz
User-agentz
User-Agentz
Test-Agent)r   r=   r   r>   r:   r;   build_openerrj   rA   header_itemsr]   rD   
has_header
add_headerrk   
get_header)r    rE   openerr;   s       r   test_custom_headersz%OtherNetworkTests.test_custom_headers   sw   #-c22 		L 		L^0022Fn,,S11GW1133444KK   OOG0022333OOG..|<<===|L999KK   W//==lKKK		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		L 		Ls   DEEEz XXX: http://www.imdb.com is gonec                    d}t          j        |          5  	 t          j                            |          5 }	 d d d            n# 1 swxY w Y   |                     |           n%# t          $ r |                     d           Y nw xY wt          j                            |          }|                                }|                     |           d d d            d S # 1 swxY w Y   d S )Nzhttp://www.imdb.comzOurlopen failed for site not sending                            Connection:close)	r   r>   r:   r;   re   rD   rd   failread)r    URLro   rn   s       r   test_sites_no_connection_closez0OtherNetworkTests.test_sites_no_connection_close   s}   
 $-c22 	! 	!%^++C00 C               $$$$	  . . .		 - . . . . .. .((--C((**COOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!sW   C!A'AA'A
	
A'A
	A'C!'B	C!B		AC!!C%(C%Tc                 Z   dd l }dd l}|                    d          j        }t	          j        j        | j        }|rt          |t          j	        j
                  }|D ]}|                     |          5  t          |t                    r|\  }}	}
nd x}	}
t          j        |          5  	  |||	t           j                  }	 t$          5  t&          5  t(          5  |                                } |dt-          |          z             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n.# t.          $ r! t1          d|z  t2          j                   Y nw xY w|                                 nP# t8          $ rC}|
r6d|
d|d	|	d
t;          |          d|
}|                     ||
|           n Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |                    d           d d d            n# 1 swxY w Y   d S )Nr   test_urllib2)rE   zread %d bytesz<timeout: %s>)filezDidn't get expected error(s) z for  z, got z: g?) timerL   rM   debugr:   r;   rv   r]   r   rS   rT   subTest
isinstancetupler   r>   r   INTERNET_TIMEOUTtime_outsocket_peer_resetioerror_peer_resetr   lenTimeoutErrorprintsysstderrrC   OSErrortypeassertIsInstancesleep)r    rW   handlersr[   r   rL   r   re   rE   rn   expected_errrf   buferrmsgs                  r   rU   zOtherNetworkTests._test_urls   s   !!.117.-x8= 	N-gv|7LMMG 	  	 C#&&    c5)) .-0*Cll)--C,"5c:: " ""#GCg.FGGJ!) B B!2B B!3B B '(ffhh %oC&@ A A A	B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
  , J J J!/C"7cjIIIIIIJ				! # " " "' " "$0LL###sssDIIIIss$LC 11#|SIIII! JIIII	"	" " " " " " " " " " " " " " "* 

37                             	  	 s   75H,G2.FEE	D00DD0DD0 D!D0$E	0D44E	7D48E	;EEEEEG2(E>	;G2=E>	>G2
G#	 9G	G2G#	#G2&H2G66H9G6:HH"	%H"	c                     g }t           j                                        }|                     |j                   |                    d           |                    |           |S )N   )r:   r;   CacheFTPHandlerr9   clear_cache
setTimeoutappend)r    r   cfhs      r   rV   z!OtherNetworkTests._extra_handlers  sW    n,,..(((qr   N)T)r0   r1   r2   rQ   rX   rg   rp   rt   r|   unittestskipr   rU   rV   r   r   r   rJ   rJ   ~   s        7 7 76 6 6X X XZA A AA A AL L L X]566! ! 76!(%  %  %  % N    r   rJ   c                   H    e Zd Zd Zd Zd Zd Zd ZdZd Z	d Z
d	 Zd
 ZdS )TimeoutTestc                 N    |                      t          j        j                   d S r   )r9   r:   r;   r<   r#   s    r   rQ   zTimeoutTest.setUp$  s    122222r   c                    |                      t          j                               t          j        }t          j        |d           5  t          |          }|                     |j	                   |                      |j
        j        j                                                   d d d            d S # 1 swxY w Y   d S Ntimeout)assertIsNonesocketgetdefaulttimeoutr   r=   r   r>   r?   r9   rC   r@   raw_sock
gettimeoutr    rE   us      r   test_http_basiczTimeoutTest.test_http_basic(  s    &244555#-c4@@@ 	; 	;#C((AOOAG$$$adhn7799:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   	A B66B:=B:c                 
   |                      t          j                               t          j        }t          j        |          5  t          j        d           	 t          |          }| 	                    |j
                   t          j        d            n# t          j        d            w xY w|                     |j        j        j                                        d           d d d            d S # 1 swxY w Y   d S N<   )r   r   r   r   r=   r   r>   setdefaulttimeoutr?   r9   rC   rk   r@   r   r   r   r   s      r   test_http_default_timeoutz%TimeoutTest.test_http_default_timeout0  s&   &244555#-c22 	> 	>$R(((/',,((((....(....QTX^6688"===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s*   C8)BC8B11:C88C<?C<c                    |                      t          j                               t          j        }t          j        |          5  t          j        d           	 t          |d           }| 	                    |j
                   t          j        d            n# t          j        d            w xY w|                      |j        j        j                                                   d d d            d S # 1 swxY w Y   d S Nr   r   )r   r   r   r   r=   r   r>   r   r?   r9   rC   r@   r   r   r   r   s      r   test_http_no_timeoutz TimeoutTest.test_http_no_timeout<  s)   &244555#-c22 	; 	;$R(((/'T:::((((....(....adhn7799:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s*   C9+BC9B339C99C= C=c                 <   t           j        }t          j        |          5  t	          |d          }|                     |j                   |                     |j        j	        j
                                        d           d d d            d S # 1 swxY w Y   d S )Nx   r   )r   r=   r   r>   r?   r9   rC   rk   r@   r   r   r   r   s      r   test_http_timeoutzTimeoutTest.test_http_timeoutH  s    #-c22 	? 	?#C555AOOAG$$$QTX^6688#>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A#BBBzftp://www.pythontest.net/c                    |                      t          j                               t          j        | j        d           5  t          | j                  }|                     |j                   |                      |j	        j	        j
        j                                                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r>   FTP_HOSTr?   r9   rC   r@   r   r   r   r    r   s     r   test_ftp_basiczTimeoutTest.test_ftp_basicQ  s    &244555-dmTJJJ 	> 	>#DM22AOOAG$$$adgk/::<<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   A*B99B= B=c                    |                      t          j                               t          j        | j                  5  t          j        d           	 t          | j                  }|                     |j	                   t          j        d            n# t          j        d            w xY w| 
                    |j        j        j        j                                        d           d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r>   r   r   r?   r9   rC   rk   r@   r   r   r   r   s     r   test_ftp_default_timeoutz$TimeoutTest.test_ftp_default_timeoutX  s9   &244555-dm<< 	A 	A$R(((/'66((((....(....QTW[.99;;R@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As*    C;.BC;B//?C;;C?C?c                    |                      t          j                               t          j        | j                  5  t          j        d           	 t          | j        d           }|                     |j	                   t          j        d            n# t          j        d            w xY w|                      |j
        j
        j        j                                                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r>   r   r   r?   r9   rC   r@   r   r   r   r   s     r   test_ftp_no_timeoutzTimeoutTest.test_ftp_no_timeoutc  s(   &244555-dm<< 	> 	>$R(((/'tDDD((((....(....adgk/::<<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s*    C<0BC<B11>C<<D D c                 B   t          j        | j                  5  t          | j        d          }|                     |j                   |                     |j        j        j        j	        
                                d           d d d            d S # 1 swxY w Y   d S r   )r   r>   r   r?   r9   rC   rk   r@   r   r   r   r   s     r   test_ftp_timeoutzTimeoutTest.test_ftp_timeoutn  s    -dm<< 	A 	A#DM2>>>AOOAG$$$QTW[.99;;R@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   A-BBBN)r0   r1   r2   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   #  s        3 3 3; ; ;
> 
> 
>
; 
; 
;? ? ? +H> > >	A 	A 	A	> 	> 	>A A A A Ar   r   __main__)'r3   r   testr   test.supportr   r   r   test.test_urllib2r   r_   r   urllib.errorr:   urllib.requestr   requiresr   r   r;   re   rS   rT   r?   objectr   r   	ETIMEDOUTr   
ECONNRESETr   r   TestCaser5   r7   rJ   r   r0   mainr   r   r   <module>r      sm           " " " " " " & & & & & & ' ' ' ' ' ' . . . . . . 				          



          .-fn.D.4l.CE E N N N N N N N N8 WEO<<<%%gU5EFFF &&we6FGGG 1 1 1 1 1! 1 1 1N) ) ) ) )h' ) ) ) b b b b b) b b bJOA OA OA OA OA(# OA OA OAd zHMOOOOO r   