
    0hh]0                         S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  \R                  r
 " S S\R                  5      r\S:X  a  \R                  " 5         gg)    N)support)	os_helperc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS#S jrS rS rS rS rS rS rS rS rS r\R:                  " \R>                  S5      S 5       r \R:                  " \!RD                  S:H  S5      \R:                  " \#" \!S5      S5      \$RJ                  S  5       5       5       r&S!r'g")$NetrcTestCase   c                    [         R                  " U5      nSn[        R                  S:w  a  US-  n[	        [
        USS9 nUR                  U5        S S S 5         [        R                  " [
        5      n[        R                  " [
        5        U$ ! , (       d  f       NE= f! [        R                  " [
        5        f = f)Nwcygwintzutf-8)encoding)
textwrapdedentsysplatformopentemp_filenamewritenetrcosunlink)self	test_datamodefpnrcs        8/opt/python-3.13.8/usr/lib/python3.13/test/test_netrc.pymake_nrcNetrcTestCase.make_nrc	   s    OOI.	<<8#CKD-8BHHY 9	%++m,CIIm$
 98
 IIm$s   BB# 
B #B?c                     U R                  S5      nU R                  UR                  S   S5        U R                  UR                  S   S5        g )Nz            machine host.domain.com password pass1 login log1 account acct1
            default login log2 password pass2 account acct2
            host.domain.comlog1acct1pass1defaultlog2acct2pass2r   assertEqualhostsr   r   s     r    test_toplevel_non_ordered_tokens.NetrcTestCase.test_toplevel_non_ordered_tokens   L    mm   	#457QR9-/IJ    c                     U R                  S5      nU R                  UR                  S   S5        U R                  UR                  S   S5        g )Nz            machine host.domain.com login log1 password pass1 account acct1
            default login log2 password pass2 account acct2
            r    r!   r%   r&   r*   r-   s     r   test_toplevel_tokens"NetrcTestCase.test_toplevel_tokens   r0   r1   c                     SnU R                  U5      nU R                  UR                  SS/SS/S.5        U R                  [        R
                  U R                   UR                  S5      S S 5        g )	Nz            macdef macro1
            line1
            line2

            macdef macro2
            line3
            line4

        zline1
zline2
zline3
zline4
)macro1macro2 )r   r+   macrosassertRaisesr   NetrcParseErrorrstrip)r   datar   s      r   test_macrosNetrcTestCase.test_macros&   st    	 mmD!I0F1:I0F&H 	I 	%//++c*3B/	1r1   c                     SnU H3  nU R                  U5      nU R                  UR                  S   S5        M5     SnU H3  nU R                  U5      nU R                  UR                  S   S5        M5     g )N)zmachine host.domain.comzmachine host.domain.com loginzmachine host.domain.com accountz machine host.domain.com passwordz(machine host.domain.com login "" accountz)machine host.domain.com login "" passwordz+machine host.domain.com account "" passwordr    ) rB   rB   )r%   zdefault loginzdefault accountzdefault passwordzdefault login "" accountzdefault login "" passwordzdefault account "" passwordr%   r*   )r   r>   itemr   s       r   test_optional_tokens"NetrcTestCase.test_optional_tokens8   sw    
 D--%CSYY'89<H 
 D--%CSYYy1<@ r1   c                 p    SnU H.  nU R                  [        R                  U R                  U5        M0     g )N)zinvalid host.domain.comzmachine host.domain.com invalidzDmachine host.domain.com login log password pass account acct invalidzdefault host.domain.com invalidzDdefault host.domain.com login log password pass account acct invalid)r;   r   r<   r   )r   r>   rC   s      r   test_invalid_tokens!NetrcTestCase.test_invalid_tokensR   s1    
 De33T]]DI r1   c                    U R                  U5      nUS:X  a#  U R                  UR                  S   USS45        g US:X  a#  U R                  UR                  S   SUS45        g US:X  a#  U R                  UR                  S   SSU45        g g )Nloginr    acctpassaccountlogpasswordr*   )r   r   tokenvalues       r   _test_token_xNetrcTestCase._test_token_x]   s    mmC GSYY'89E66;RSiSYY'89E5&;QRj SYY'89E65;QR !r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS	5        g )
NzW            machine host.domain.com login "log" password pass account acct
            rJ   rN   zW            machine host.domain.com login log password pass account "acct"
            rM   rK   zW            machine host.domain.com login log password "pass" account acct
            rO   rL   rR   r   s    r   test_token_value_quotes%NetrcTestCase.test_token_value_quotesf   sN     %	! 	 F	$ 	 V	%r1   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  S	S
S5        U R                  SS
S5        g )NzW            machine host.domain.com login \"log password pass account acct
            rJ   z"logzY            machine host.domain.com login "\"log" password pass account acct
            zW            machine host.domain.com login log password pass account \"acct
            rM   z"acctzY            machine host.domain.com login log password pass account "\"acct"
            zW            machine host.domain.com login log password \"pass account acct
            rO   z"passzY            machine host.domain.com login log password "\"pass" account acct
            rU   rV   s    r   test_token_value_escape%NetrcTestCase.test_token_value_escapeq   s     &	" 	 &	" 	 G	% 	 G	% 	 W	& 	 W	&r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS	5        g )
NzX            machine host.domain.com login "lo g" password pass account acct
            rJ   zlo gzX            machine host.domain.com login log password "pas s" account acct
            rO   zpas szX            machine host.domain.com login log password pass account "acc t"
            rM   zacc trU   rV   s    r   test_token_value_whitespace)NetrcTestCase.test_token_value_whitespace   sN     &	" 	 W	& 	 G	%r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS5        g )NuV               machine host.domain.com login ¡¢ password pass account acct
            rJ   u   ¡¢uU               machine host.domain.com login log password pass account ¡¢
            rM   uU               machine host.domain.com login log password ¡¢ account acct
            rO   rU   rV   s    r   test_token_value_non_ascii(NetrcTestCase.test_token_value_non_ascii   sN     *	& 	 J	( 	 Z	)r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS	5        g )
NzV            machine host.domain.com login #log password pass account acct
            rJ   z#logzV            machine host.domain.com login log password pass account #acct
            rM   z#acctzV            machine host.domain.com login log password #pass account acct
            rO   #passrU   rV   s    r   test_token_value_leading_hash+NetrcTestCase.test_token_value_leading_hash   N     &	" 	 G	% 	 W	&r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS	5        g )
NzV            machine host.domain.com login log# password pass account acct
            rJ   zlog#zV            machine host.domain.com login log password pass account acct#
            rM   zacct#zV            machine host.domain.com login log password pass# account acct
            rO   zpass#rU   rV   s    r   test_token_value_trailing_hash,NetrcTestCase.test_token_value_trailing_hash   rf   r1   c                 v    U R                  SSS5        U R                  SSS5        U R                  SSS	5        g )
NzV            machine host.domain.com login lo#g password pass account acct
            rJ   zlo#gzV            machine host.domain.com login log password pass account ac#ct
            rM   zac#ctzV            machine host.domain.com login log password pa#ss account acct
            rO   zpa#ssrU   rV   s    r   test_token_value_internal_hash,NetrcTestCase.test_token_value_internal_hash   rf   r1   c                     U R                  U5      nU R                  UR                  S   SSU45        U R                  UR                  S   S5        g )Nfoo.domain.combarrB   zbar.domain.com)foorB   rL   r*   )r   r   passwds      r   _test_commentNetrcTestCase._test_comment   sL    mmC #34ub&6IJ#346IJr1   c                 &    U R                  S5        g )Nz            # comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            rr   rV   s    r    test_comment_before_machine_line.NetrcTestCase.test_comment_before_machine_line         	r1   c                 &    U R                  S5        g )Nz            #comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            ru   rV   s    r   )test_comment_before_machine_line_no_space7NetrcTestCase.test_comment_before_machine_line_no_space   rx   r1   c                 &    U R                  S5        g )Nz            #
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            ru   rV   s    r   *test_comment_before_machine_line_hash_only8NetrcTestCase.test_comment_before_machine_line_hash_only   rx   r1   c                 H    U R                  S5        U R                  S5        g )Nz            machine foo.domain.com login bar password pass
            # comment
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            # comment
            ru   rV   s    r   test_comment_after_machine_line-NetrcTestCase.test_comment_after_machine_line   *      	
 	  	r1   c                 H    U R                  S5        U R                  S5        g )Nz            machine foo.domain.com login bar password pass
            #comment
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            #comment
            ru   rV   s    r   (test_comment_after_machine_line_no_space6NetrcTestCase.test_comment_after_machine_line_no_space   r   r1   c                 H    U R                  S5        U R                  S5        g )Nz            machine foo.domain.com login bar password pass
            #
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            #
            ru   rV   s    r   )test_comment_after_machine_line_hash_only7NetrcTestCase.test_comment_after_machine_line_hash_only   r   r1   c                 &    U R                  S5        g )Nz            machine foo.domain.com login bar password pass # comment
            machine bar.domain.com login foo password pass
            ru   rV   s    r   #test_comment_at_end_of_machine_line1NetrcTestCase.test_comment_at_end_of_machine_line         	r1   c                 &    U R                  S5        g )Nz            machine foo.domain.com login bar password pass #comment
            machine bar.domain.com login foo password pass
            ru   rV   s    r   ,test_comment_at_end_of_machine_line_no_space:NetrcTestCase.test_comment_at_end_of_machine_line_no_space   r   r1   c                 (    U R                  SS5        g )Nz            machine foo.domain.com login bar password #pass #comment
            machine bar.domain.com login foo password pass
            rc   ru   rV   s    r   1test_comment_at_end_of_machine_line_pass_has_hash?NetrcTestCase.test_comment_at_end_of_machine_line_pass_has_hash  s      	r1   zWASI only testc                     U R                  [        R                  " 5       5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )Nr   zuid 0i@ z
uid 123456)assertFalser   _can_security_checkr+   	_getpwuidrV   s    r   test_security_on_WASI#NetrcTestCase.test_security_on_WASI  sK    2245+W50,?r1   posixzPOSIX only testgetuidzos.getuid is requiredc                    [         R                  n[        R                  " U5        U R	                  [         R
                  U5        [        R                  R                  US5      n[        US5       nUR                  S5        S S S 5        [         R                  " 5        nUR                  SU5        [        R                  " US5        [        R                  " 5       nU R                  UR                  S   S5        [        R                  " US5        U R!                  [        R"                  [        R                  5        S S S 5        [        US5       nUR                  S	5        S S S 5        [         R                  " 5        nUR                  SU5        [        R                  " US5        [        R                  " 5       nU R                  UR                  S   S
5        [        R                  " US5        U R                  UR                  S   S
5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz.netrcwtz                machine foo.domain.com login bar password pass
                default login foo password pass
                HOMEi  rn   )ro   rB   rL   i  z                machine foo.domain.com login anonymous password pass
                default login foo password pass
                )	anonymousrB   rL   )r   TESTFNr   mkdir
addCleanuprmtreepathjoinr   r   EnvironmentVarGuardsetchmodr   r+   r,   r;   r<   )r   dfnfenvironr   s         r   test_securityNetrcTestCase.test_security  s    
	((!,WW\\!X&"d^qGG   
 **,KK"HHR++-CSYY'7802HHRe33U[[A - "d^qGG   
 **,KK"HHR++-CSYY'7868HHRSYY'7868 -,% ^
 -, ^
 -,s2   3H%"B#H7IBI%
H47
I
I
I' N)rL   )(__name__
__module____qualname____firstlineno__r   r.   r3   r?   rD   rG   rR   rW   rZ   r]   r`   rd   rh   rk   rr   rv   rz   r}   r   r   r   r   r   r   unittest
skipUnlessr   is_wasir   r   namehasattrr   skip_unless_working_chmodr   __static_attributes__r   r1   r   r   r      s    KK1$A4	JS	%&(	%	)	&	&	&K



 *:;@ <@
 G+->?X.0GH((!8 ) I @!8r1   r   __main__)r   r   r   r   r   testr   test.supportr   r   r   TestCaser   r   mainr   r1   r   <module>r      sL    ) ) )  "  o8H%% o8d	 zMMO r1   