+
    Bi]0                         ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ]P                  t
 ! R R]P                  4      t]R8X  d   ]P                  ! 4        R# R# )    N)support)	os_helperc                     a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR"R ltR tR tR tR tR tR tR tR tR t]P:                  ! ]P>                  R4      R 4       t ]P:                  ! ]!PD                  R8H  R4      ]P:                  ! ]#! ]!R4      R4      ]$PJ                  R 4       4       4       t&R t'V t(R!# )#NetrcTestCasec                   \         P                  ! V4      pR p\        P                  R8w  d
   VR,          p\	        \
        VRR7      ;_uu_ 4       pVP                  V4       RRR4        \        P                  ! \
        4      p\        P                  ! \
        4       V#   + '       g   i     LG; i  \        P                  ! \
        4       i ; i)wcygwintzutf-8)encodingN)
textwrapdedentsysplatformopentemp_filenamewritenetrcosunlink)self	test_datamodefpnrcs   &&   &/usr/lib/python3.14/test/test_netrc.pymake_nrcNetrcTestCase.make_nrc	   s    OOI.	<<8#CKD-88BHHY 9	%++m,CIIm$
 98
 IIm$s   B",B5 "B2	5Cc                    V P                  R 4      pV P                  VP                  R,          R4       V P                  VP                  R,          R4       R# )z            machine host.domain.com password pass1 login log1 account acct1
            default login log2 password pass2 account acct2
            host.domain.comdefaultNlog1acct1pass1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                    V P                  R 4      pV P                  VP                  R,          R4       V P                  VP                  R,          R4       R# )z            machine host.domain.com login log1 password pass1 account acct1
            default login log2 password pass2 account acct2
            r   r    Nr!   r%   r)   r,   s   & r   test_toplevel_tokens"NetrcTestCase.test_toplevel_tokens   r/   r0   c                    R pV P                  V4      pV P                  VP                  RRR.RRR./4       V P                  \        P
                  V P                   VP                  R4      RR	 4       R# )
z            macdef macro1
            line1
            line2

            macdef macro2
            line3
            line4

        macro1zline1
zline2
macro2zline3
zline4
 N)r   r*   macrosassertRaisesr   NetrcParseErrorrstrip)r   datar   s   &  r   test_macrosNetrcTestCase.test_macros&   sx    	 mmD!hI0F&.I0F&H 	I 	%//++c*3B/	1r0   c                   RpV F7  pV P                  V4      pV P                  VP                  R,          R4       K9  	  RpV F7  pV P                  V4      pV P                  VP                  R,          R4       K9  	  R# )machine host.domain.comr   r    N)rA   z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 "" password) rB   rB   )r    zdefault loginzdefault accountzdefault passwordzdefault login "" accountzdefault login "" passwordzdefault account "" passwordr)   )r   r=   itemr   s   &   r   test_optional_tokens"NetrcTestCase.test_optional_tokens8   sw    
 D--%CSYY'89<H 
 D--%CSYYy1<@ r0   c                r    RpV F.  pV P                  \        P                  V P                  V4       K0  	  R# )invalid host.domain.comN)rG   z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 r0   c                B   V P                  V4      pVR 8X  d)   V P                  VP                  R,          VRR34       R# VR8X  d)   V P                  VP                  R,          RVR34       R# VR8X  d)   V P                  VP                  R,          RRV34       R# R# )loginr   acctpassaccountlogpasswordNr)   )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 !r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R	# )
zW            machine host.domain.com login "log" password pass account acct
            rK   rO   zW            machine host.domain.com login log password pass account "acct"
            rN   rL   zW            machine host.domain.com login log password "pass" account acct
            rP   rM   NrS   r   s   &r   test_token_value_quotes%NetrcTestCase.test_token_value_quotesf   sN     %	! 	 F	$ 	 V	%r0   c                    V P                  R RR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RR	R
4       V P                  RR	R
4       R# )zW            machine host.domain.com login \"log password pass account acct
            rK   z"logzY            machine host.domain.com login "\"log" password pass account acct
            zW            machine host.domain.com login log password pass account \"acct
            rN   z"acctzY            machine host.domain.com login log password pass account "\"acct"
            zW            machine host.domain.com login log password \"pass account acct
            rP   z"passzY            machine host.domain.com login log password "\"pass" account acct
            NrV   rW   s   &r   test_token_value_escape%NetrcTestCase.test_token_value_escapeq   s     &	" 	 &	" 	 G	% 	 G	% 	 W	& 	 W	&r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R	# )
zX            machine host.domain.com login "lo g" password pass account acct
            rK   zlo gzX            machine host.domain.com login log password "pas s" account acct
            rP   zpas szX            machine host.domain.com login log password pass account "acc t"
            rN   zacc tNrV   rW   s   &r   test_token_value_whitespace)NetrcTestCase.test_token_value_whitespace   sN     &	" 	 W	& 	 G	%r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R# )uV               machine host.domain.com login ¡¢ password pass account acct
            rK   u   ¡¢uU               machine host.domain.com login log password pass account ¡¢
            rN   uU               machine host.domain.com login log password ¡¢ account acct
            rP   NrV   rW   s   &r   test_token_value_non_ascii(NetrcTestCase.test_token_value_non_ascii   sN     *	& 	 J	( 	 Z	)r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R	# )
zV            machine host.domain.com login #log password pass account acct
            rK   z#logzV            machine host.domain.com login log password pass account #acct
            rN   z#acctzV            machine host.domain.com login log password #pass account acct
            rP   #passNrV   rW   s   &r   test_token_value_leading_hash+NetrcTestCase.test_token_value_leading_hash   N     &	" 	 G	% 	 W	&r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R	# )
zV            machine host.domain.com login log# password pass account acct
            rK   zlog#zV            machine host.domain.com login log password pass account acct#
            rN   zacct#zV            machine host.domain.com login log password pass# account acct
            rP   zpass#NrV   rW   s   &r   test_token_value_trailing_hash,NetrcTestCase.test_token_value_trailing_hash   rg   r0   c                x    V P                  R RR4       V P                  RRR4       V P                  RRR4       R	# )
zV            machine host.domain.com login lo#g password pass account acct
            rK   zlo#gzV            machine host.domain.com login log password pass account ac#ct
            rN   zac#ctzV            machine host.domain.com login log password pa#ss account acct
            rP   zpa#ssNrV   rW   s   &r   test_token_value_internal_hash,NetrcTestCase.test_token_value_internal_hash   rg   r0   c                    V P                  V4      pV P                  VP                  R ,          RRV34       V P                  VP                  R,          R4       R# )foo.domain.combarrB   zbar.domain.comN)foorB   rM   r)   )r   r   passwds   &&&r   _test_commentNetrcTestCase._test_comment   sL    mmC #34ub&6IJ#346IJr0   c                (    V P                  R 4       R# )z            # comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            Nrs   rW   s   &r    test_comment_before_machine_line.NetrcTestCase.test_comment_before_machine_line         	r0   c                (    V P                  R 4       R# )z            #comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            Nrv   rW   s   &r   )test_comment_before_machine_line_no_space7NetrcTestCase.test_comment_before_machine_line_no_space   ry   r0   c                (    V P                  R 4       R# )z            #
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            Nrv   rW   s   &r   *test_comment_before_machine_line_hash_only8NetrcTestCase.test_comment_before_machine_line_hash_only   ry   r0   c                J    V P                  R 4       V P                  R4       R# )z            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
            Nrv   rW   s   &r   test_comment_after_machine_line-NetrcTestCase.test_comment_after_machine_line   *      	
 	  	r0   c                J    V P                  R 4       V P                  R4       R# )z            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
            Nrv   rW   s   &r   (test_comment_after_machine_line_no_space6NetrcTestCase.test_comment_after_machine_line_no_space   r   r0   c                J    V P                  R 4       V P                  R4       R# )z            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
            #
            Nrv   rW   s   &r   )test_comment_after_machine_line_hash_only7NetrcTestCase.test_comment_after_machine_line_hash_only   r   r0   c                (    V P                  R 4       R# )z            machine foo.domain.com login bar password pass # comment
            machine bar.domain.com login foo password pass
            Nrv   rW   s   &r   #test_comment_at_end_of_machine_line1NetrcTestCase.test_comment_at_end_of_machine_line         	r0   c                (    V P                  R 4       R# )z            machine foo.domain.com login bar password pass #comment
            machine bar.domain.com login foo password pass
            Nrv   rW   s   &r   ,test_comment_at_end_of_machine_line_no_space:NetrcTestCase.test_comment_at_end_of_machine_line_no_space   r   r0   c                *    V P                  R R4       R# )z            machine foo.domain.com login bar password #pass #comment
            machine bar.domain.com login foo password pass
            rd   Nrv   rW   s   &r   1test_comment_at_end_of_machine_line_pass_has_hash?NetrcTestCase.test_comment_at_end_of_machine_line_pass_has_hash  s      	r0   zWASI only testc                    V P                  \        P                  ! 4       4       V P                  \        P                  ! ^ 4      R4       V P                  \        P                  ! R4      R4       R# )r   zuid 0i@ z
uid 123456N)assertFalser   _can_security_checkr*   	_getpwuidrW   s   &r   test_security_on_WASI#NetrcTestCase.test_security_on_WASI  sK    2245+W50,?r0   posixzPOSIX only testgetuidzos.getuid is requiredc                B   \         P                  p\        P                  ! V4       V P	                  \         P
                  V4       \        P                  P                  VR 4      p\        VR4      ;_uu_ 4       pVP                  R4       RRR4       \         P                  ! 4       ;_uu_ 4       pVP                  RV4       \        P                  ! VR4       \        P                  ! 4       pV P                  VP                  R,          R	4       \        P                  ! VR4       V P!                  \        P"                  \        P                  4       RRR4       \        VR4      ;_uu_ 4       pVP                  R4       RRR4       \         P                  ! 4       ;_uu_ 4       pVP                  RV4       \        P                  ! VR4       \        P                  ! 4       pV P                  VP                  R,          R
4       \        P                  ! VR4       V P                  VP                  R,          R
4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)z.netrcwtz                machine foo.domain.com login bar password pass
                default login foo password pass
                NHOMEi  ro   i  z                machine foo.domain.com login anonymous password pass
                default login foo password pass
                )rp   rB   rM   )	anonymousrB   rM   )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   ;I2B'I&5I:,BJI#	&I7	:J
	J	 N)rM   ))__name__
__module____qualname____firstlineno__r   r-   r2   r>   rD   rH   rS   rX   r[   r^   ra   re   ri   rl   rs   rw   r{   r~   r   r   r   r   r   r   unittest
skipUnlessr   is_wasir   r   namehasattrr   skip_unless_working_chmodr   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s    KK1$A4	JS	%&(	%	)	&	&	&K



 *:;@ <@
 G+->?X.0GH((!8 ) I @!8r0   r   __main__)r   r   r   r   r   testr   test.supportr   r   r   TestCaser   r   mainr   r0   r   <module>r      sL    ) ) )  "  o8H%% o8d	 zMMO r0   