
    n&ph4                     4   S r SSKrSSKrSSKr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  SSKJrJr  SSKJrJr  SSKJrJrJrJrJrJrJrJrJrJr  SSKr\R<                  " SS9S	 5       r\R@                  RC                  S
5       " S S5      5       r"g)zTests for distutils.util.    N)copy)	sysconfigutil)DistutilsByteCompileErrorDistutilsPlatformError)
byte_compilechange_rootcheck_environconvert_pathget_host_platformget_platformgrok_environment_errorrfc822_escapesplit_quoted	strtoboolT)autousec                    U R                  [        S[        R                  5        U R                  [        S[        R                  5        U R                  [        S[        R
                  5        U R                  [        S[        R                  5        U R                  [        R                  S[        R                  R                  5        U R                  [        R                  S[        R                  R                  5        U R                  [        R                  S[        R                  R                  5        U R                  [        S[        [        R                  5      5        g )	Nnameplatformversionsepjoinisabs
splitdrive_config_vars)setattrosr   sysr   r   r   pathr   r   r   r   r   r   )monkeypatchs    X/var/www/html/venv/lib/python3.13/site-packages/setuptools/_distutils/tests/test_util.pyenvironmentr"      s    FBGG,Z6Y4E266*6"''--8rww/A/AB	>4	8N8N3OP    save_envc                      \ rS rSrS rS rS rS rS r\	R                  R                  S5      S 5       rS	 rS
 rSr\	R                  R!                  SSS\ S\ S\ 34SS\ S34SSS\ S\ S\ S\ 34/5      S 5       rS rS rSrg)TestUtil+   c                    [         R                  " SS5         [         R                  " SS5         [        5       S:X  d   e S S S 5        [         R                  " SS5         [        5       S:X  d   e S S S 5        S S S 5        [         R                  " SS	5         [        5       [        R                  " 5       :X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       Nu= f! , (       d  f       g = f)
Nos.namentzsys.versionz... [... (ARM64)]	win-arm64z... [... (ARM)]	win-arm32zsys.version_info)   	   r   finalr   )mockpatchr   stdlib_sysconfigr   selfs    r!   test_get_host_platformTestUtil.test_get_host_platform-   s    ZZ	4(M+>?(*k999 @M+<=(*k999 > ) ZZ*,AB$&*:*G*G*IIII CB @?== )( CBsF   C*CC*!C3C*$C;
C	C*
C'	#C**
C8;
D	c                    [         R                  " SS5         [         R                  R                  SSS05         [        5       S:X  d   e S S S 5        [         R                  R                  SSS05         [        5       S:X  d   e S S S 5        [         R                  R                  SSS	05         [        5       S
:X  d   e S S S 5        [         R                  R                  SSS05         [        5       S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr)   r*   z
os.environVSCMD_ARG_TGT_ARCHx86win32x64z	win-amd64armr,   arm64r+   )r0   r1   dictr   r3   s    r!   test_get_platformTestUtil.test_get_platform7   s    ZZ	4(0De/LM#~000 N0De/LM#~444 N0De/LM#~444 N0Dg/NO#~444 P )(MMMMMMOO )(sj   #ED*E7D#	*E3D4*E/EE
D 	E#
D1	-E4
E	>E
E	E
E$c                     [         R                  R                  S5      n[        S5      U:X  d   e[        [        R
                  " S5      5      U:X  d   e[        S5      [         R                  :X  d   eg )N) hometomystuffz/home/to/my/stuff.)r   r   r   r   pathlibPathcurdir)r4   expecteds     r!   test_convert_pathTestUtil.test_convert_pathB   s]    66;;@A/0H<<<GLL)<=>(JJJC BII---r#   c                 \   S[         l        S nU[         R                  l        S nU[         R                  l        [        SS5      S:X  d   e[        SS5      S:X  d   eS	[         l        S
[         l        S nU[         R                  l        S nU[         R                  l        S nU[         R                  l        [        SS5      S:X  d   e[        SS5      S:X  d   eS[         l        [        R                  " [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nposixc                     U S   S:H  $ )Nr   / r   s    r!   _isabs)TestUtil.test_change_root.<locals>._isabsL   s    7c>!r#   c                  $    SR                  U 5      $ )NrQ   r   rS   s    r!   _join(TestUtil.test_change_root.<locals>._joinQ   s    88D>!r#   z/rootz/old/its/herez/root/old/its/herezits/herez/root/its/herer*   \c                 $    U R                  S5      $ )Nzc:\)
startswithrS   s    r!   rT   rU   ]   s    ??6**r#   c                 ^    U R                  S5      (       a  SU R                  SS5      4$ SU 4$ )Nzc:rB   )r\   replacerS   s    r!   _splitdrive.TestUtil.test_change_root.<locals>._splitdriveb   s1    t$$DLLr233:r#   c                  $    SR                  U 5      $ )NrZ   rW   rS   s    r!   rX   rY   i   s    99T?"r#   zc:\rootzc:\old\its\herezc:\root\old\its\herezits\herezc:\root\its\here	BugsBunny)r   r   r   r   r   r	   r   r   pytestraisesr   )r4   rT   rX   r_   s       r!   test_change_rootTestUtil.test_change_rootH   s    	" 	" 7O48LLLL7J/3CCCC 	+ 	
 )	#  
$89=WW	
W:{37LLLL ]]12
K0 322s   D
D+c                     [         R                  R                  5         [        R                  R                  SS 5        [        5         [        R                  S   [        5       :X  d   eg )NHOMEPLAT)r   r
   cache_clearr   environpopr   r3   s    r!   test_check_environTestUtil.test_check_environz   sD    &&(


vt$zz&!\^333r#   zos.name != 'posix'c                    [         R                  R                  5         [        R                  R                  SS 5        SS KnUR                  S5      n[        R                  R                  USUS9   [        5         [        R                  S   S:X  d   e S S S 5        [         R                  R                  5         [        R                  R                  SS 5        [        R                  R                  US[        S9   [        5         S[        R                  ;  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nrh   r   )NNNNN/home/distutilsNgetpwuid)return_valuerp   )side_effect)r   r
   rj   r   rk   rl   pwdstruct_passwdr0   r1   objectKeyError)r4   rt   results      r!   test_check_environ_getpwuid$TestUtil.test_check_environ_getpwuid   s    &&(


vt$ "" $
  ZZsJVDO::f%):::: E 	&&(


vt$ ZZsJHEO+++ FE ED FEs   3$D,!D=,
D:=
Ec                 *    [        S5      / SQ:X  d   eg )Nz""one"" "two" 'three' \four)onetwothreefour)r   r3   s    r!   test_split_quotedTestUtil.test_split_quoted   s     <= B
 
 	
 
r#   c                 x    SnSnU H  n[        U5      (       a  M   e   U H  n[        U5      (       d  M   e   g )N)
yYyesTruettruer   Onon1)	nnoffalseoff0OffNoN)r   )r4   r   r   r   r   s        r!   test_strtoboolTestUtil.test_strtobool   s?    MDAQ<<<  A ||## r#   z        zgiven,wantedzhello
world
zhello
zworld
zhelloworldzhelloworld)rB   rB   zI am a
poor
lonesome
header
zI am a
zpoor
z	lonesome
zheader
c                 l   [        U5      n[        R                  R                  SSSS9n[        R
                  " 5        nSU S3n[        R                  " U5      n[        R                  R                  XTS9R                  U5        UR                  S5        [        R                  " U5      nSSS5        WW4 H]  n	U	R                  5       S	:X  d   eU	S
   S:X  d   e[        U	S   R                  5       5      [        UR                  5       5      :X  a  M]   e   X2:X  d   eg! , (       d  f       N{= f)a+  
We want to ensure a multi-line header parses correctly.

For interoperability, the escaped value should also "round-trip" over
`email.generator.Generator.flatten` and `email.message_from_*`
(see pypa/setuptools#4033).

The main issue is that internally `email.policy.EmailPolicy` uses
`splitlines` which will split on some control chars. If all the new lines
are not prefixed with spaces, the parser will interrupt reading
the current header and produce an incomplete value, while
incorrectly interpreting the rest of the headers as part of the payload.
TFr   )utf8mangle_from_max_line_lengthzheader: z
other-header: 42

payload
)policyNzpayload
zother-header42header)r   emailr   EmailPolicyioStringIOmessage_from_string	generator	Generatorflattenseekmessage_from_fileget_payloadset
splitlines)
r4   givenwantedresr   bufferraworigregenmsgs
             r!   test_rfc822_escapeTestUtil.test_rfc822_escape   s   6 E")) * 

 [[]fSE!@AC,,S1DOO%%f%<DDTJKKN++F3E  %=C??$333~&$...s8}//12c#..:J6KKKK	 ! }} ]s    A0D%%
D3c                     [         R                  nS[         l         [        R                  " [        5         [        / 5        S S S 5        U[         l        g ! , (       d  f       N= f! U[         l        f = f)NT)r   dont_write_bytecoderc   rd   r   r   )r4   old_dont_write_bytecodes     r!   test_dont_write_bytecode!TestUtil.test_dont_write_bytecode   sU     #&"9"9"&	>89R  : '>C# :9 '>C#s"   A( AA( 
A%!A( (A5c                 @    [        S5      n[        U5      nUS:X  d   eg )NzUnable to find batch filez error: Unable to find batch file)OSErrorr   )r4   excr   s      r!   test_grok_environment_error$TestUtil.test_grok_environment_error   s&    12$S)8888r#   rR   N)__name__
__module____qualname____firstlineno__r5   r?   rL   re   rm   rc   markskipifry   r   r   indentparametrizer   r   r   __static_attributes__rR   r#   r!   r&   r&   +   s    J	5..1d4 [[,-, .,8
$ F[[ "Yvhbx#PQ6(%8926(&
6((6(S		
""H	>9r#   r&   )#__doc__r   email.generatoremail.policyr   r   rH   r   r   r2   unittest.mockr0   r   	distutilsr   distutils.errorsr   r   distutils.utilr   r	   r
   r   r   r   r   r   r   r   rc   fixturer"   r   usefixturesr&   rR   r#   r!   <module>r      s        	 	  
 $   % N    Q Q $G9 G9 %G9r#   