
    <e$                     6   	 d dl Z d dlmZmZ  ej        d          Zd dlZd dlZd dlZd dl	Z	dZ
dZ G d de	j                  Zdd	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)	os_helperwarnings_helperuus7   The symbols on top of your keyboard are !@#$%^&*()_+|~
sO   M5&AE('-Y;6)O;',@;VX@=&]P(&]F('EO=7(@:V5Y8F]A<F0@87)E("% (R0E
*7B8J*"E?*WQ^"@  c                   ,     e Zd Z	 	 	 d fd	Zd Z xZS )FakeIO utf-8strict
c                 B   t          t          |                               t          j                    |||           || _        || _        |rPt          |t                    st          |          }| 	                    |           | 
                    d           d S d S )N)encodingerrorsnewliner   )superr   __init__ioBytesIO	_encoding_errors
isinstancestrwriteseek)selfinitial_valuer   r   r   	__class__s        #/usr/lib/python3.11/test/test_uu.pyr   zFakeIO.__init__   s    fd$$RZ\\.6,2-4 	% 	6 	6 	6 " 	mS11 3 #M 2 2JJ}%%%IIaLLLLL		 	    c                     |                                   | j                                                            | j        | j                  S N)flushbuffergetvaluedecoder   r   r   s    r   r#   zFakeIO.getvalue-   s7    

{##%%,,T^T\JJJr   )r   r	   r
   r   )__name__
__module____qualname__r   r#   __classcell__)r   s   @r   r   r      s`         3:*.     K K K K K K Kr   r   Fc                     |r5t          d| |fz  d          t                              dd          z   dz   }n t          d| |fz  d          t          z   dz   }|S )Nzbegin %03o %s
ascii       `s   
`
end
s   
 
end
)bytesencodedtextreplace)modefilenamebacktickress       r   encodedtextwrappedr5   2   sw     ,&$)997CC""4../1>? &$)997CC*+Jr   c                   R    e Zd Zd Zej        d             Zd Zd Zd Z	d Z
d ZdS )	UUTestc                    t          j        t                    }t          j                    }t                              ||d           |                     |                                t          dd                     t          j        t                    }t          j                    }t                              ||dd           |                     |                                t          dd                     t          j        t                    }t          j                    }t                              ||dd           |                     |                                t          ddd                     |                     t                    5  t                              ||ddd           d d d            d S # 1 swxY w Y   d S )Nt1    Tr3   )
r   r   	plaintextr   encodeassertEqualr#   r5   assertRaises	TypeError)r   inpouts      r   test_encodezUUTest.test_encode=   s   j##jll
		#sD!!!);E4)H)HIIIj##jll
		#sD%((();E4)H)HIIIj##jll
		#sD4	000);E4)N)NOOOy)) 	3 	3IIc3eT222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   GG	G	c           	         dD ]}t          j        t          dd|                    }t          j                    }t                              ||           |                     |                                t                     t          j        dt          dd|          z             }t          j                    }t                              ||           |                     |                                t                     d S )N)TFr:   r9   r<   sM   UUencoded files may contain many lines,
even some that have 'begin' in them.
)r   r   r5   r   r$   r?   r#   r=   )r   r3   rB   rC   s       r   test_decodezUUTest.test_decodeM   s    # 	8 	8H*/thOOOPPC*,,CIIc3S\\^^Y777*:"5$BBBC C
 *,,CIIc3S\\^^Y7777	8 	8r   c                 F   t          j        dt          z             }t          j                    }	 t                              ||           |                     d           d S # t          j        $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Ns   begin 644 t1
No exception raisedzTruncated input file)	r   r   r/   r   r$   failErrorr?   r   r   rB   rC   es       r   test_truncatedinputzUUTest.test_truncatedinput]   s    j*[899jll	=IIc3II+,,,,,x 	= 	= 	=SVV%;<<<<<<<<<	=s   0A# #B 2#BB c                 6   t          j        d          }t          j                    }	 t                              ||           |                     d           d S # t          j        $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Nr   rH   z'No valid begin line found in input file)r   r   r   r$   rI   rJ   r?   r   rK   s       r   test_missingbeginzUUTest.test_missingbeginf   s    joojll	PIIc3II+,,,,,x 	P 	P 	PSVV%NOOOOOOOOO	Ps   0A B*#BBc                    d}d}d}||fD ]}|                      d          5  t          j        |          }t          j                    }t                              ||d           |                     |                                |           d d d            n# 1 swxY w Y   |                      d          5  dd l}|                    |d          }|                     ||           d d d            n# 1 swxY w Y   d S )	Ns   begin 644 file
!,___
 
end
s   begin 644 file
!,___
`
end
   3zuu.decode()T)quietuu_codecr   )subTestr   r   r   r$   r?   r#   codecs)	r   encodedtext1encodedtext2r=   r/   rB   rC   rU   decodeds	            r   test_garbage_paddingzUUTest.test_garbage_paddingo   s    	 	 	'5 
	5 
	5Km,, < <j--jll		#s$	///  ;;;	< < < < < < < < < < < < < < < j)) 5 5 --Z@@  )4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
	5 
	5s$   A-BB	"B	;1C88C<	?C<	c                     t          j        t                    }t          j                    }d}d}t                              |||           |                     ||                                           d S )Nztest.txt
overflow.txts   test.txt\n\roverflow.txt)r   r   r=   r   r>   assertInr#   )r   rB   rC   r2   safefilenames        r   test_newlines_escapedzUUTest.test_newlines_escaped   s^    j##jll-4
		#sH%%%lCLLNN33333r   c                    d}|                      t          j        d          5  t                              t	          j        |                     d d d            n# 1 swxY w Y   t          j        rz|                    dd          }|                      t          j        d          5  t                              t	          j        |                     d d d            n# 1 swxY w Y   d}|                      t          j        d          5  t                              t	          j        |                     d d d            n# 1 swxY w Y   t          j        r}|                    dd          }|                      t          j        d          5  t                              t	          j        |                     d d d            d S # 1 swxY w Y   d S d S )Ns<   begin 644 ../../../../../../../../tmp/test1
$86)C"@``
`
end
	directory   /   \s%   begin 644 /tmp/test2
$86)C"@``
`
end
)	assertRaisesRegexr   rJ   r$   r   r   osaltsepr0   )r   relative_badrelative_bad_bsabsolute_badabsolute_bad_bss        r   test_no_directory_traversalz"UUTest.test_no_directory_traversal   s    ##BHk:: 	0 	0IIbj..///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	09 	7*224??O''+>> 7 7		"*_556667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ##BHk:: 	0 	0IIbj..///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	09 	7*224??O''+>> 7 7		"*_556667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7sG   -AA #A )-C""C&)C&-EEE-GGGN)r&   r'   r(   rD   r   skip_unless_working_chmodrF   rM   rO   rY   r]   ri    r   r   r7   r7   ;   s        3 3 3  (8 8 )(8= = =P P P5 5 5<4 4 47 7 7 7 7r   r7   c                   &    e Zd Zd Zd Zd Zd ZdS )UUStdIOTestc                 J    t           j        | _        t           j        | _        d S r    )sysstdinstdoutr%   s    r   setUpzUUStdIOTest.setUp   s    Y
jr   c                 J    | j         t          _         | j        t          _        d S r    )rp   ro   rq   r%   s    r   tearDownzUUStdIOTest.tearDown   s    J	[


r   c                 x   t          t                              d                    t          _        t                      t          _        t                              dddd           |                     t          j        	                                t          dd                              d                     d S )Nr+   -r9   r:   )r   r=   r$   ro   rp   rq   r   r>   r?   r#   r5   r%   s    r   rD   zUUStdIOTest.test_encode   s    9++G4455	XX

		#sD%(((,,..+E488??HH	J 	J 	J 	J 	Jr   c                    t          t          dd                              d                    t          _        t                      t          _        t                              dd           t          j        }| j        t          _        | j        t          _        |                     |                                t                              d                     d S )Nr:   r9   r+   rv   )
r   r5   r$   ro   rp   rq   r   r?   r#   r=   )r   rq   s     r   rF   zUUStdIOTest.test_decode   s    -eT::AA'JJKK	XX

		#s[
J	**I,<,<W,E,EFFFFFr   N)r&   r'   r(   rr   rt   rD   rF   rk   r   r   rm   rm      sX        ! ! !! ! !J J JG G G G Gr   rm   c                       e Zd Zd Zd Zej        d             Zej        d             Zej        d             Z	ej        d             Z
dS )
UUFileTestc                     t           j        dz   | _        t           j        dz   | _        |                     t           j        | j                   |                     t           j        | j                   d S )Nio)r   TESTFN_ASCIItmpintmpout
addCleanupunlinkr%   s    r   rr   zUUFileTest.setUp   sX    ,s2
,s2	($*555	($+66666r   c                    t          | j        d          5 }|                    t                     d d d            n# 1 swxY w Y   t          | j        d          5 }t          | j        d          5 }t
                              ||| j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | j        d          5 }|                                }d d d            n# 1 swxY w Y   |                     |t          d| j                             t
                              | j        | j        | j        d           t          | j        d          5 }|                                }d d d            n# 1 swxY w Y   |                     |t          d| j                             d S )Nwbrbr;   )r1   )
openr~   r   r=   r   r   r>   readr?   r5   )r   finfoutss       r   rD   zUUFileTest.test_encode   s   $*d## 	!sIIi   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! $*d## 	=sdk4(( =D		#tTZe	<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= $+t$$ 			A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.udjAABBB 			$*dk4:E	BBB$+t$$ 			A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.udjAABBBBBsi   =AAB:3$B#B:#B'	'B:*B'	+B::B>B>C;;C?C?1FFFc                    t          | j        d          5 }|                    t          d| j                             d d d            n# 1 swxY w Y   t          | j        d          5 }t
                              |           d d d            n# 1 swxY w Y   t          | j        d          5 }|                                }d d d            n# 1 swxY w Y   |                     |t                     d S Nr   r;   r   
r   r~   r   r5   r   r   r$   r   r?   r=   r   fr   s      r   rF   zUUFileTest.test_decode   s   $*d## 	<qGG&udk::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< $*d## 	qIIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $+t$$ 	A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	I&&&&&s5   )AAA+BBB2CCCc                    t          | j        d          5 }|                    t          d| j                             d d d            n# 1 swxY w Y   t
                              | j                   t          | j        d          5 }|                                }d d d            n# 1 swxY w Y   |                     |t                     d S r   r   r   s      r   test_decode_filenamezUUFileTest.test_decode_filename   s(   $*d## 	<qGG&udk::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 			$*$+t$$ 	A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	I&&&&&s#   )AAA
B++B/2B/c                    t          | j        d          5 }|                    t          d| j                             d d d            n# 1 swxY w Y   t          | j        d          5 }t
                              |           d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t
          j        t
          j        |           d d d            d S # 1 swxY w Y   d S r   )	r   r~   r   r5   r   r   r$   r@   rJ   )r   r   s     r   test_decodetwicezUUFileTest.test_decodetwice   s    $*d## 	<qGG&udk::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<$*d## 	qIIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $*d## 	6qbh	1555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s5   )AAA+BBB2,C++C/2C/c                 0   d}t          | j        d          5 }|                    t          || j                             d d d            n# 1 swxY w Y   |                     t          j        | j        |t          j	        z             t          | j        d          5 }t                              |           d d d            n# 1 swxY w Y   |                     t          j        t          j        | j                  j                  |           d S )Ni$  r   r   )r   r~   r   r5   r   r   rc   chmodstatS_IWRITEr   r$   r?   S_IMODEst_mode)r   expected_moder   s      r   test_decode_modezUUFileTest.test_decode_mode  su    $*d## 	DqGG&}dkBBCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	$+}t}/LMMM$*d## 	qIIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	L--566	
 	
 	
 	
 	
s#   )AAA CCCN)r&   r'   r(   rr   rD   r   rj   rF   r   r   r   rk   r   r   ry   ry      s        7 7 7C C C& (	' 	' )(	' (' ' )(' (6 6 )(6 (
 
 )(
 
 
r   ry   __main__)F)unittesttest.supportr   r   import_deprecatedr   rc   r   ro   r   r=   r/   TextIOWrapperr   r5   TestCaser7   rm   ry   r&   mainrk   r   r   <module>r      s  
  3 3 3 3 3 3 3 3&_&t,, 				  



 				G	
K K K K KR K K K6   t7 t7 t7 t7 t7X t7 t7 t7nG G G G G(# G G G4O
 O
 O
 O
 O
" O
 O
 O
d ZHMOOOOO r   