
    daf{                        d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dlm	Z	 	 d dl
Z
	 d dlZ ej                  d       G d dej                               Z G d d	ej                        Z ej"                  e
d
       G d dej                               Zedk(  r ej(                          yy# e$ r dZ
Y w xY w# e$ r dZY w xY w)    N)BytesIOStringIOTextIOWrapper)mock)supportz
os.environc                       e Zd Zd Zd Zd Zy)GetpassGetuserTestc                 r    d}||j                   _        | j                  |t        j                                y )N	some_name)getreturn_valueassertEqualgetpassgetuser)selfenvironexpected_names      ,/root/Python-3.12.4/Lib/test/test_getpass.py%test_username_takes_username_from_envz8GetpassGetuserTest.test_username_takes_username_from_env   s*    ##0 (9:    c           	         d |j                   _        	 t        j                          | j                  |j                   j                  dD cg c]  }t        j                  |       c}       y # t        $ r Y St
        $ r Y ]w xY wc c}w )N)LOGNAMEUSERLNAMEUSERNAME)
r   r   r   r   ImportErrorKeyErrorr   call_args_listr   call)r   r   xs      r   &test_username_priorities_of_env_valuesz9GetpassGetuserTest.test_username_priorities_of_env_values   su    #' 	OO 	KK&&#KLaTYYq\L	N  	 		
 Ms   A/ B
/	B:BBc                    d}d |j                   _        t        rt        j                  d      5 }t        j                  d      5 }d|_        |g|_        | j                  |t        j                                |j                  d       d d d        d d d        y | j                  t        t        j                         y # 1 sw Y   7xY w# 1 sw Y   y xY w)Nr   z	os.getuidzpwd.getpwuid*   )r   r   pwdr   patchr   r   r   assert_called_once_withassertRaisesr   )r   r   r   uidgetpws        r   test_username_falls_back_to_pwdz2GetpassGetuserTest.test_username_falls_back_to_pwd&   s    ##' K( 2CJJ~.227#% &3_"  !(!24--b12 2 2 k7??;2 2 2 2s$   CAC 
C C		CCN)__name__
__module____qualname__r   r!   r*    r   r   r	   r	      s    ;
N<r   r	   c                       e Zd Zd Zd Z ej                  d      d        Z ej                  d      d        Zd Z	d Z
y)	GetpassRawinputTestc                     t        j                  t              }t        d      }t        j                  d||       |j
                  j                          y )Nspecinput_stringsome_promptinput)r   Mockr   r   
_raw_inputflushr&   )r   streamr7   s      r    test_flushes_stream_after_promptz4GetpassRawinputTest.test_flushes_stream_after_prompt7   s<    )(=&>,,.r   c                     t        d      }d}t        j                  d      5 }t        j                  ||       |j
                  j                  |       d d d        y # 1 sw Y   y xY w)Nr4   r5   z
sys.stderrr6   )r   r   r%   r   r9   writer&   )r   r7   promptstderrs       r   test_uses_stderr_as_defaultz/GetpassRawinputTest.test_uses_stderr_as_default>   sV    (ZZ% 	9vU3LL008	9 	9 	9s   3AA(	sys.stdinc                     d|j                   _        t        j                  t	                      |j                   j                          y )Nr4   r;   )readliner   r   r9   r   r&   )r   
mock_inputs     r    test_uses_stdin_as_default_inputz4GetpassRawinputTest.test_uses_stdin_as_default_inputE   s2    +9
((*-335r   c                     t        t               d      }d|j                  _        t	        j
                  d|       |j                  j                          y )Nascii)encodingu   HasÅ‚o: )r?   r;   )r   r   rE   r   r   r9   r&   )r   rF   r;   s      r   #test_uses_stdin_as_different_localez7GetpassRawinputTest.test_uses_stdin_as_different_localeK   s@    wy7;+8
(-v>335r   c                 f    t        d      }| j                  t        t        j                  |       y )N r6   )r   r'   EOFErrorr   r9   r   r7   s     r   test_raises_on_empty_inputz.GetpassRawinputTest.test_raises_on_empty_inputS   s&    (G$6$6eDr   c                 f    t        d      }| j                  dt        j                  |             y )Nztest
testr6   )r   r   r   r9   rO   s     r   test_trims_trailing_newlinez/GetpassRawinputTest.test_trims_trailing_newlineW   s'    "!3!3%!@Ar   N)r+   r,   r-   r<   rA   r   r%   rG   rK   rP   rS   r.   r   r   r0   r0   5   sV    /9 TZZ6 6
 TZZ6 6EBr   r0   z!tests require system with termiosc                   *    e Zd Zd Zd Zd Zd Zd Zy)UnixGetpassTestc                    t        j                  d      5 }t        j                  d      5 }t        j                  d      5 }d |_        t        j                          |j                  dt        j                  t        j                  z         |j                  |j                  d       |j                  |j                         d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nos.open	io.FileIOio.TextIOWrapperz/dev/ttyzw+)	r   r%   r   r   unix_getpassr&   osO_RDWRO_NOCTTY)r   openfileiotextios       r   test_uses_tty_directlyz&UnixGetpassTest.test_uses_tty_directlyd   s    ZZ	" 	@d

;'	@+1

-.	@28 !%D  "(()+R[[)@B**4+<+<dC**6+>+>?	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s;   C7C+BCC+C7C($C++C4	0C77D c           
      H   t        j                  d      5 }t        j                  d      5  t        j                  d      5  t        j                  d      5 }t        j                  d      5 }d|_        g d}t        |      |_        t	        j
                          |j                  dt         j                  |       d d d        d d d        d d d        d d d        d d d        y # 1 sw Y   *xY w# 1 sw Y   .xY w# 1 sw Y   2xY w# 1 sw Y   6xY w# 1 sw Y   y xY w)NrW   rX   rY   termios.tcgetattrtermios.tcsetattr   )   rf   rf   rf   rf   )r   r%   r   listr   rZ   assert_called_withANY)r   r^   	tcgetattr	tcsetattr
fake_attrss        r   test_resets_termiosz#UnixGetpassTest.test_resets_termiosr   s   ZZ	" 		Bd

;'		B

-.		B 

./		B 4=

./			B 4= !D2J%)*%5I"  "((DHHjA		B 		B 		B 		B 		B 		B 		B 		B 		B 		B 		B 		B 		B 		B 		Bsk   DDD C4	.AC(?C4	D DD(C1-C4	4C=9D  D	DD	DD!c                    t        j                  d      5 }t        j                  d      5 }t        j                  d      5 }t        j                  d      5  t        j                  d      5 }t        j                  d      5 }d|_        t               |_        t        j
                  |_        t        j                          |j                  d|j                         d d d        d d d        d d d        d d d        d d d        d d d        y # 1 sw Y   2xY w# 1 sw Y   6xY w# 1 sw Y   :xY w# 1 sw Y   >xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)	NrW   rX   rY   rc   rd   zgetpass.fallback_getpassre   z
Password: )
r   r%   r   r   termioserrorside_effectr   rZ   r&   )r   r^   r_   r`   rk   fallbacks         r   -test_falls_back_to_fallback_if_termios_raisesz=UnixGetpassTest.test_falls_back_to_fallback_if_termios_raises~   s=   ZZ	" 	Bd

;'	B+1

-.	B28

./	B 

./		B 4=

56	B
 ;C !D"))F$+MMI!  ",,\-3-@-@B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   EED5D)	.DAD D(D)	0D58E EDDD&"D)	)D2.D55D>:EE
	EEc           
      J   t        j                  d      5 }t        j                  d      5  t        j                  d      5  t        j                  d      5  t        j                  d      5  d|_        t        j                  t              }t        j                  |       |j                  j                          d d d        d d d        d d d        d d d        d d d        y # 1 sw Y   *xY w# 1 sw Y   .xY w# 1 sw Y   2xY w# 1 sw Y   6xY w# 1 sw Y   y xY w)	NrW   rX   rY   rc   rd   re   r2   rD   )	r   r%   r   r8   r   r   rZ   r:   rh   )r   r^   mock_streams      r   test_flushes_stream_after_inputz/UnixGetpassTest.test_flushes_stream_after_input   s    ZZ	" 	3d

;'	3

-.	3 

./	3 

./		3
 !"D))2K  4002	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sk   DDDC5	.AC) C5	DDD)C2.C5	5C>:DD
DD	DD"c           	         t        j                  d      5 }t        j                  dt              5 }t        |_        t
        |j                  _        t        j                         5 }| j                  t        j                        5  t        j                          d d d        d d d        |j                  j                          | j                  dj!                                | j                  d|j!                                d d d        d d d        y # 1 sw Y   |xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrW   rB   r2   Warningz	Password:)r   r%   r   IOErrorrq   AttributeErrorfilenor   captured_stderrassertWarnsr   GetPassWarningrZ   rE   r&   assertIngetvalue)r   os_openstdinr@   s       r   test_falls_back_to_stdinz(UnixGetpassTest.test_falls_back_to_stdin   s    ZZ	" 		:g

;X6		::?")G'5ELL$((* +f%%g&<&<= +((*++ NN224MM)V__%67MM+v'89		: 		: 		:
+ ++ +			: 		: 		: 		:sS   D;5D/' D#D	D#$A"D/D;D D##D,(D//D8	4D;;EN)r+   r,   r-   ra   rm   rs   rv   r   r.   r   r   rU   rU   a   s    @
BB
3
:r   rU   __main__)r   r[   unittestior   r   r   r   rR   r   ro   r   r$   r%   TestCaser	   r0   
skipUnlessrU   r+   mainr.   r   r   <module>r      s     	  / /   L <**  <  <F$B(++ $BX WAB@:h'' @: C@:F zHMMO w  G  
Cs"   B/ B< /B98B9<CC