
    0hht                        S SK r S SKrS SKrS SKJrJrJr  S SKJr  S SKJ	r	   S SK
r
 S SKr\R                  " S5       " S S\R                  5      5       r " S S	\R                  5      r\R"                  " \
S
5       " S S\R                  5      5       r\S:X  a  \R(                  " 5         gg! \ a    Sr
 Nf = f! \ a    Sr Nf = f)    N)BytesIOStringIOTextIOWrapper)mock)supportz
os.environc                   &    \ rS rSrS rS rS rSrg)GetpassGetuserTest   c                 r    SnX!R                   l        U R                  U[        R                  " 5       5        g )N	some_name)getreturn_valueassertEqualgetpassgetuser)selfenvironexpected_names      :/opt/python-3.13.8/usr/lib/python3.13/test/test_getpass.py%test_username_takes_username_from_env8GetpassGetuserTest.test_username_takes_username_from_env   s(    ##0 (9:    c           	      (   S UR                   l         [        R                  " 5         U R                  UR                   R                  S Vs/ s H  n[        R                  " U5      PM     sn5        g ! [         a     NX[
         a     Ncf = fs  snf )N)LOGNAMEUSERLNAMEUSERNAME)
r   r   r   r   OSErrorKeyErrorr   call_args_listr   call)r   r   xs      r   &test_username_priorities_of_env_values9GetpassGetuserTest.test_username_priorities_of_env_values   s{    #' 	OO 	KK&&#KL#KaTYYq\#KL	N  	 		
 Ms   A4  B
4
B 	BBc                    SnS UR                   l        [        (       a  [        R                  " S5       n[        R                  " S5       nSUl        U/Ul        U R                  U[        R                  " 5       5        UR                  S5        S S S 5        S S S 5        g U R                  [        [        R                  5        g ! , (       d  f       N<= f! , (       d  f       g = f)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_pwd2GetpassGetuserTest.test_username_falls_back_to_pwd&   s    ##' 3K(CJJ~.%#% &3_"  !(!24--b1 / )( gw7 /. )(s$   CACC
C	C
C' N)__name__
__module____qualname____firstlineno__r   r#   r-   __static_attributes__r/   r   r   r	   r	      s    ;
N8r   r	   c                       \ rS rSrS rS r\R                  " S5      S 5       r\R                  " S5      S 5       r	S r
S rS	rg
)GetpassRawinputTest5   c                     [         R                  " [        S9n[        S5      n[        R                  " SXS9  UR
                  R                  5         g )Nspecinput_stringsome_promptinput)r   Mockr   r   
_raw_inputflushr)   )r   streamr>   s      r    test_flushes_stream_after_prompt4GetpassRawinputTest.test_flushes_stream_after_prompt7   s:    )(=&>,,.r   c                     [        S5      nSn[        R                  " S5       n[        R                  " X!S9  UR
                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nr;   r<   z
sys.stderrr=   )r   r   r(   r   r@   writer)   )r   r>   promptstderrs       r   test_uses_stderr_as_default/GetpassRawinputTest.test_uses_stderr_as_default>   sK    (ZZ%v3LL008 &%%s   0A
A+	sys.stdinc                     SUR                   l        [        R                  " [	        5       S9  UR                   R                  5         g )Nr;   rB   )readliner   r   r@   r   r)   )r   
mock_inputs     r    test_uses_stdin_as_default_input4GetpassRawinputTest.test_uses_stdin_as_default_inputE   s2    +9
((*-335r   c                     [        [        5       SS9nSUR                  l        [        R
                  " SUS9  UR                  R                  5         g )Nascii)encodingu   HasÅ‚o: )rG   rB   )r   r   rN   r   r   r@   r)   )r   rO   rB   s      r   #test_uses_stdin_as_different_locale7GetpassRawinputTest.test_uses_stdin_as_different_localeK   s@    wy7;+8
(-v>335r   c                 `    [        S5      nU R                  [        [        R                  US9  g )N r=   )r   r*   EOFErrorr   r@   r   r>   s     r   test_raises_on_empty_input.GetpassRawinputTest.test_raises_on_empty_inputS   s&    (G$6$6eDr   c                 b    [        S5      nU R                  S[        R                  " US95        g )Nztest
testr=   )r   r   r   r@   rZ   s     r   test_trims_trailing_newline/GetpassRawinputTest.test_trims_trailing_newlineW   s'    "!3!3%!@Ar   r/   N)r0   r1   r2   r3   rC   rI   r   r(   rP   rU   r[   r_   r4   r/   r   r   r6   r6   5   sR    /9 
ZZ6 6
 
ZZ6 6EBr   r6   z!tests require system with termiosc                   2    \ rS rSrS rS rS rS rS rSr	g)	UnixGetpassTesta   c                 ,   [         R                  " S5       n[         R                  " S5       n[         R                  " S5       nS Ul        [        R                  " 5         UR                  S[        R                  [        R                  -  5        UR                  UR                  S5        UR                  UR                  5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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_directly&UnixGetpassTest.test_uses_tty_directlyd   s    ZZ	"d

;'6

-.& !%D  "(()+R[[)@B**4+<+<dC**6+>+>? / ( #".. (' #"s;   DC4BC#
C4D#
C1-C44
D	>D
Dc           
         [         R                  " S5       n[         R                  " S5         [         R                  " S5         [         R                  " S5       n[         R                  " S5       nSUl        / SQn[        U5      Ul        [        R
                  " 5         UR                  S[         R                  U5        S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N/= f! , (       d  f       N8= f! , (       d  f       NA= f! , (       d  f       NJ= f! , (       d  f       g = f)Nre   rf   rg   termios.tcgetattrtermios.tcsetattr   )   ru   ru   ru   ru   )r   r(   r   listr   rh   assert_called_withANY)r   rl   	tcgetattr	tcsetattr
fake_attrss        r   test_resets_termios#UnixGetpassTest.test_resets_termiosr   s    ZZ	"d

;'

-.

./9

./9 !D2J%)*%5I"  "((DHHjA 0 0 / ( #" 0/ 0/ /. (' #"sk   D2D!DC?	3AC.C?	DD!D2.
C<8C?	?
D	D
DD!!
D/	+D22
E c                    [         R                  " S5       n[         R                  " S5       n[         R                  " S5       n[         R                  " S5         [         R                  " S5       n[         R                  " S5       nSUl        [        5       Ul        [        R
                  Ul        [        R                  " 5         UR                  SUR                  5        S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N7= f! , (       d  f       N@= f! , (       d  f       NI= f! , (       d  f       NR= f! , (       d  f       N[= f! , (       d  f       g = f)	Nre   rf   rg   rr   rs   zgetpass.fallback_getpassrt   z
Password: )
r   r(   r   r   termioserrorside_effectr   rh   r)   )r   rl   rm   rn   rz   fallbacks         r   -test_falls_back_to_fallback_if_termios_raises=UnixGetpassTest.test_falls_back_to_fallback_if_termios_raises~   s    ZZ	"d

;'6

-.&

./

./9

56( !D"))F$+MMI!  ",,\-3-@-@B 7 0 0 / ( #"
 76 0/ 0/ /. (' #"s   E-EED:	3D)
AD'D)/D:	7E?EE-
D&"D))
D73D:	:
EE
EE
E*	&E--
E;c           
      ~   [         R                  " S5       n[         R                  " S5         [         R                  " S5         [         R                  " S5         [         R                  " S5         SUl        [         R                  " [        S9n[
        R                  " US9  UR                  R                  5         S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N/= f! , (       d  f       N8= f! , (       d  f       NA= f! , (       d  f       NJ= f! , (       d  f       g = f)	Nre   rf   rg   rr   rs   rt   r9   rM   )	r   r(   r   r?   r   r   rh   rA   rw   )r   rl   mock_streams      r   test_flushes_stream_after_input/UnixGetpassTest.test_flushes_stream_after_input   s    ZZ	"d

;'

-.

./

./ !D))2K  4002	 0 0 / ( #" 0/ 0/ /. (' #"sk   D.DDC;	3AC*C;		DDD.*
C84C;	;
D	D
DD
D+	'D..
D<c           	         [         R                  " S5       n[         R                  " S[        S9 n[        Ul        [
        UR                  l        [        R                  " 5        nU R                  [        R                  5         [        R                  " 5         S S S 5        S S S 5        UR                  R                  5         U R                  SWR!                  5       5        U R                  SUR!                  5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nre   rK   r9   Warningz	Password:)r   r(   r   IOErrorr   AttributeErrorfilenor   captured_stderrassertWarnsr   GetPassWarningrh   rN   r)   assertIngetvalue)r   os_openstdinrH   s       r   test_falls_back_to_stdin(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 7 #"
 >= +* 76 #"sS   E6D:' D)D	D)%A"D:E
D&"D))
D73D::
E	E
Er/   N)
r0   r1   r2   r3   ro   r|   r   r   r   r4   r/   r   r   rb   rb   a   s    @
BB
3
:r   rb   __main__)r   ri   unittestior   r   r   r   r^   r   r   ImportErrorr'   r(   TestCaser	   r6   
skipUnlessrb   r0   mainr/   r   r   <module>r      s     	  / /   L 8**  8  8F$B(++ $BX 
WAB@:h'' @: C@:F zMMO w  G  
Cs"   B0 B> 0B;:B;>C	C	