
    <e{                        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
n# e$ r dZ
Y nw xY w	 d dlZn# e$ r dZY nw xY w 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                     dS dS )    N)BytesIOStringIOTextIOWrapper)mock)supportz
os.environc                        e Zd Zd Zd Zd ZdS )GetpassGetuserTestc                 p    d}||j         _        |                     |t          j                               d S )N	some_name)getreturn_valueassertEqualgetpassgetuser)selfenvironexpected_names      (/usr/lib/python3.11/test/test_getpass.py%test_username_takes_username_from_envz8GetpassGetuserTest.test_username_takes_username_from_env   s5    ##0 (9(9:::::    c                     d |j         _        	 t          j                     n# t          $ r Y nt
          $ r Y nw xY w|                     |j         j        d dD                        d S )Nc                 6    g | ]}t          j        |          S  )r   call).0xs     r   
<listcomp>zMGetpassGetuserTest.test_username_priorities_of_env_values.<locals>.<listcomp>$   s     LLLaTYq\\LLLr   )LOGNAMEUSERLNAMEUSERNAME)r   r   r   r   ImportErrorKeyErrorr   call_args_list)r   r   s     r   &test_username_priorities_of_env_valuesz9GetpassGetuserTest.test_username_priorities_of_env_values   s    #' 	O 	 	 	D 	 	 	D	 	K&LL#KLLL	N 	N 	N 	N 	Ns   " 
:	::c                    d}d |j         _        t          rt          j        d          5 }t          j        d          5 }d|_        |g|_        |                     |t          j                               |                    d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S | 	                    t          t          j                   d S )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&   sX   ##'  		<K(( 2CJ~..227#% &3_"  !(!2!24 4 4--b1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 k7?;;;;;s5   B/ABB/B	B/B	B//B36B3N)__name__
__module____qualname__r   r%   r.   r   r   r   r	   r	      sD        ; ; ;
N N 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
dS )	GetpassRawinputTestc                     t          j        t                    }t          d          }t          j        d||           |j                                         d S )Nspecinput_stringsome_promptinput)r   Mockr   r   
_raw_inputflushr*   )r   streamr:   s      r    test_flushes_stream_after_promptz4GetpassRawinputTest.test_flushes_stream_after_prompt7   sS    )))((=&>>>>,,.....r   c                     t          d          }d}t          j        d          5 }t          j        ||           |j                            |           d d d            d S # 1 swxY w Y   d S )Nr7   r8   z
sys.stderrr9   )r   r   r)   r   r<   writer*   )r   r:   promptstderrs       r   test_uses_stderr_as_defaultz/GetpassRawinputTest.test_uses_stderr_as_default>   s    ((Z%% 	9vU3333L00888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   1A$$A(+A(	sys.stdinc                     d|j         _        t          j        t	                                 |j                                          d S )Nr7   r>   )readliner   r   r<   r   r*   )r   
mock_inputs     r    test_uses_stdin_as_default_inputz4GetpassRawinputTest.test_uses_stdin_as_default_inputE   s@    +9
((**----3355555r   c                     t          t                      d          }d|j        _        t	          j        d|           |j                                         d S )Nascii)encodingu   HasÅ‚o: )rB   r>   )r   r   rH   r   r   r<   r*   )r   rI   r>   s      r   #test_uses_stdin_as_different_localez7GetpassRawinputTest.test_uses_stdin_as_different_localeK   sT    wyy7;;;+8
(-v>>>>3355555r   c                 r    t          d          }|                     t          t          j        |           d S )N r9   )r   r+   EOFErrorr   r<   r   r:   s     r   test_raises_on_empty_inputz.GetpassRawinputTest.test_raises_on_empty_inputS   s1    (G$6eDDDDDr   c                 v    t          d          }|                     dt          j        |                     d S )Nztest
testr9   )r   r   r   r<   rR   s     r   test_trims_trailing_newlinez/GetpassRawinputTest.test_trims_trailing_newlineW   s9    ""!3%!@!@!@AAAAAr   N)r/   r0   r1   r?   rD   r   r)   rJ   rN   rS   rV   r   r   r   r3   r3   5   s        / / /9 9 9 TZ6 6 6
 TZ6 6 6E E EB B B B Br   r3   z!tests require system with termiosc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )UnixGetpassTestc                    t          j        d          5 }t          j        d          5 }t          j        d          5 }d |_        t          j                     |                    dt          j        t          j        z             |                    |j        d           |                    |j                   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            d S # 1 swxY w Y   d S )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   Z	"" 	@d
;''	@+1
-..	@28 !%D """(()+R[)@B B B**4+<dCCC**6+>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@sX   C7CA=C<CCCCCC7C#	#C7&C#	'C77C;>C;c           
      f   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                     |                    dt           j        |           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   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrZ   r[   r\   termios.tcgetattrtermios.tcsetattr   )   ri   ri   ri   ri   )r   r)   r   listr   r]   assert_called_withANY)r   ra   	tcgetattr	tcsetattr
fake_attrss        r   test_resets_termiosz#UnixGetpassTest.test_resets_termiosr   s   Z	"" 		Bd
;''		B 		B
-..		B 		B 
.//		B 4=
.//			B 4= !D222J%)*%5%5I" """((DHj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 		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s   D&DC7C 	)AC	=C 		CC 	CC 	C7 C$$C7'C$(C7+D7C;;D>C;?DD&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                     |	                    d|j                   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   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            d S # 1 swxY w Y   d S )	NrZ   r[   r\   rf   rg   zgetpass.fallback_getpassrh   z
Password: )
r   r)   r   r   termioserrorside_effectr   r]   r*   )r   ra   rb   rc   rn   fallbacks         r   -test_falls_back_to_fallback_if_termios_raisesz=UnixGetpassTest.test_falls_back_to_fallback_if_termios_raises~   s#   Z	"" 	Bd
;''	B+1
-..	B28
.//	B 	B 
.//		B 4=
566	B
 ;C !D")))F$+MI! """,,\-3-@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 	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 	B 	B 	B 	B 	B 	Bs   EE D)D	)C;>AC$C;$C((C;+C(,C;/D	;C??D	C?D	D)DD)DD)E )D--E 0D-1E 4E E	EE	EEEc           
      ^   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                                         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   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	NrZ   r[   r\   rf   rg   rh   r5   rG   )	r   r)   r   r;   r   r   r]   r=   rk   )r   ra   mock_streams      r   test_flushes_stream_after_inputz/UnixGetpassTest.test_flushes_stream_after_input   sS   Z	"" 	3d
;''	3 	3
-..	3 	3 
.//	3 	3 
.//		3 	3
 !"D)222K 444400222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   D"D
C3C	)AC9C	C		C	C	C	C3C  C3#C $C3'D
3C77D
:C7;D
>D"
D	D"D	D""D&)D&c           	         t          j        d          5 }t          j        dt                    5 }t          |_        t
          |j        _        t          j                    5 }| 	                    t          j                  5  t          j                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j                                         |                     d|                                           |                     d|                                           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrZ   rE   r5   Warningz	Password:)r   r)   r   IOErrorrt   AttributeErrorfilenor   captured_stderrassertWarnsr   GetPassWarningr]   rH   r*   assertIngetvalue)r   os_openstdinrC   s       r   test_falls_back_to_stdinz(UnixGetpassTest.test_falls_back_to_stdin   s   Z	"" 		:g
;X666		::?")G'5EL$(** +f%%g&<== + +(***+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + N22444MM)V__%6%6777MM+v'8'8999		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		: 		:s}   E1D9" B9B"	B9"B&&B9)B&*B9-D99B==D9 B=A,D9-E9D=	=E D=	EEEN)r/   r0   r1   rd   rp   rv   ry   r   r   r   r   rX   rX   a   sh        @ @ @
B 
B 
BB B B
3 
3 
3
: 
: 
: 
: 
:r   rX   __main__)r   r^   unittestior   r   r   r   rU   r   rr   r"   r(   r)   TestCaser	   r3   
skipUnlessrX   r/   mainr   r   r   <module>r      s    				  / / / / / / / / / /            NNNN   GGGJJJJ   
CCC L <  <  <  <  <*  <  <  <F$B $B $B $B $B(+ $B $B $BX WABB@: @: @: @: @:h' @: @: CB@:F zHMOOOOO s   ) 33< AA