U
    aÊ¹j4  ã                   @   sæ   d Z ddlZddlZddlZddlZddlZddlZddlZddlZ	ddl
mZ ddlmZ ddlmZmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlZejdd�d	d
„ ƒZej  !d¡G dd„ dƒƒZ"dS )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)Zautousec                 C   s”   |   tdtj¡ |   tdtj¡ |   tdtj¡ |   tdtj¡ |   tjdtjj¡ |   tjdtjj	¡ |   tjdtjj
¡ |   tdttjƒ¡ d S )	NÚnameÚplatformÚversionÚsepÚjoinÚisabsÚ
splitdriveÚ_config_vars)ÚsetattrÚosr   Úsysr   r   r   Úpathr   r   r   r   r   r   )Zmonkeypatch© r   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/_distutils/tests/test_util.pyÚenvironment   s    r   Zsave_envc                   @   sÈ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
d¡dd„ ƒZdd„ Zdd„ ZdZej	 ddde› de› de› �fdde› d�fddde› de› de› d e› �fg¡d!d"„ ƒZd#d$„ Zd%d&„ Zd'S )(ÚTestUtilc              
   C   s’   t  dd¡�R t  dd¡� tƒ dks*t‚W 5 Q R X t  dd¡� tƒ dksPt‚W 5 Q R X W 5 Q R X t  dd	¡� tƒ t ¡ ks„t‚W 5 Q R X d S )
Núos.nameÚntzsys.versionz... [... (ARM64)]ú	win-arm64z... [... (ARM)]ú	win-arm32zsys.version_info)é   é	   r   Úfinalr   )ÚmockÚpatchr   ÚAssertionErrorÚstdlib_sysconfigr   ©Úselfr   r   r   Útest_get_host_platform-   s    "zTestUtil.test_get_host_platformc              
   C   sÌ   t  dd¡�¶ t j dddi¡� tƒ dks0t‚W 5 Q R X t j dddi¡� tƒ dks\t‚W 5 Q R X t j ddd	i¡� tƒ d
ksˆt‚W 5 Q R X t j dddi¡� tƒ dks´t‚W 5 Q R X W 5 Q R X d S )Nr!   r"   z
os.environÚVSCMD_ARG_TGT_ARCHÚx86Úwin32Úx64z	win-amd64Úarmr$   Úarm64r#   )r(   r)   Údictr   r*   r,   r   r   r   Útest_get_platform7   s    zTestUtil.test_get_platformc                 C   sH   t j d¡}tdƒ|kst‚tt d¡ƒ|ks2t‚tdƒt jksDt‚d S )N)Ú ÚhomeÚtoZmyÚstuffz/home/to/my/stuffÚ.)r   r   r   r
   r*   ÚpathlibÚPathÚcurdir)r-   Úexpectedr   r   r   Útest_convert_pathB   s    zTestUtil.test_convert_pathc              	   C   sÔ   dt _dd„ }|t j_dd„ }|t j_tddƒdks8t‚tdd	ƒd
ksJt‚dt _dt _dd„ }|t j_dd„ }|t j_dd„ }|t j_tddƒdks˜t‚tddƒdksªt‚dt _t	 
t¡� tddƒ W 5 Q R X d S )NÚposixc                 S   s   | d dkS )Nr   ú/r   ©r   r   r   r   Ú_isabsL   s    z)TestUtil.test_change_root.<locals>._isabsc                  W   s
   d  | ¡S )NrB   ©r   rC   r   r   r   Ú_joinQ   s    z(TestUtil.test_change_root.<locals>._joinz/rootz/old/its/herez/root/old/its/herezits/herez/root/its/herer"   ú\c                 S   s
   |   d¡S )Nzc:\)Ú
startswithrC   r   r   r   rD   ]   s    c                 S   s"   |   d¡rd|  dd¡fS d| fS )Nzc:r7   )rH   ÚreplacerC   r   r   r   Ú_splitdriveb   s    
z.TestUtil.test_change_root.<locals>._splitdrivec                  W   s
   d  | ¡S )NrG   rE   rC   r   r   r   rF   i   s    zc:\rootzc:\old\its\herezc:\root\old\its\herezits\herezc:\root\its\hereZ	BugsBunny)r   r   r   r   r   r   r*   r   r   ÚpytestÚraisesr   )r-   rD   rF   rJ   r   r   r   Útest_change_rootH   s*    ÿzTestUtil.test_change_rootc                 C   s6   t j ¡  tj dd ¡ tƒ  tjd tƒ ks2t‚d S )NÚHOMEÚPLAT)r   r	   Úcache_clearr   ÚenvironÚpopr   r*   r,   r   r   r   Útest_check_environz   s    
zTestUtil.test_check_environzos.name != 'posix'c              	   C   s®   t j ¡  tj dd ¡ dd l}| d¡}tj	j
|d|d�� tƒ  tjd dksVt‚W 5 Q R X t j ¡  tj dd ¡ tj	j
|dtd�� tƒ  dtjks t‚W 5 Q R X d S )NrN   r   )NNNNNú/home/distutilsNÚgetpwuid)Zreturn_valuerT   )Zside_effect)r   r	   rP   r   rQ   rR   ÚpwdÚstruct_passwdr(   r)   Úobjectr*   ÚKeyError)r-   rV   Úresultr   r   r   Útest_check_environ_getpwuid‚   s    

	
z$TestUtil.test_check_environ_getpwuidc                 C   s   t dƒddddgkst‚d S )Nz""one"" "two" 'three' \fourÚoneÚtwoÚthreeÚfour)r   r*   r,   r   r   r   Útest_split_quotedŸ   s    üzTestUtil.test_split_quotedc                 C   s8   d}d}|D ]}t |ƒst‚q|D ]}t |ƒr"t‚q"d S )N)
ÚyÚYÚyesÚTrueÚtÚtruerd   ZOnÚonÚ1)	ÚnÚnoÚfÚfalseÚoffÚ0ZOffZNoÚN)r   r*   )r-   rc   rj   ra   ri   r   r   r   Útest_strtobool§   s    zTestUtil.test_strtoboolz        zgiven,wantedzhello
world
zhelloÚ
zworld
zhelloworldzhelloZworld)r7   r7   zI am a
poor
lonesome
header
zI am a
zpoor
z	lonesome
zheader
c           
   	   C   sÌ   t |ƒ}tjjdddd�}t ¡ �F}d|› d�}t |¡}tjj||d� 	|¡ | 
d¡ t |¡}W 5 Q R X ||fD ]D}	|	 ¡ dksŠt‚|	d	 d
ksšt‚t|	d  ¡ ƒt| ¡ ƒksvt‚qv||ksÈt‚dS )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
)Úpolicyzpayload
zother-headerZ42ÚheaderN)r   Úemailru   ZEmailPolicyÚioÚStringIOÚmessage_from_stringÚ	generatorÚ	GeneratorÚflattenÚseekÚmessage_from_fileÚget_payloadr*   ÚsetÚ
splitlines)
r-   ÚgivenÚwantedÚresru   ÚbufferÚrawÚorigZregenÚmsgr   r   r   Útest_rfc822_escape³   s"    ý


"zTestUtil.test_rfc822_escapec              	   C   s<   t j}dt _z"t t¡� tg ƒ W 5 Q R X W 5 |t _X d S )NT)r   Údont_write_bytecoderK   rL   r   r   )r-   Zold_dont_write_bytecoder   r   r   Útest_dont_write_bytecodeä   s    z!TestUtil.test_dont_write_bytecodec                 C   s    t dƒ}t|ƒ}|dkst‚d S )NzUnable to find batch filez error: Unable to find batch file)ÚOSErrorr   r*   )r-   Úexcr‰   r   r   r   Útest_grok_environment_errorï   s    z$TestUtil.test_grok_environment_errorN)Ú__name__Ú
__module__Ú__qualname__r.   r6   r@   rM   rS   rK   ÚmarkZskipifr[   r`   rp   ÚindentZparametrizerŠ   rŒ   r�   r   r   r   r   r    +   s.   
2


þûþ
$r    )#Ú__doc__rw   Úemail.generatorÚemail.policyrx   r   r<   r   r   r+   Zunittest.mockr(   r   Ú	distutilsr   Údistutils.errorsr   r   Údistutils.utilr   r   r	   r
   r   r   r   r   r   r   rK   Zfixturer   r“   Zusefixturesr    r   r   r   r   Ú<module>   s$   0


