a
    ¿ßúe4-  ã                   @   sè   d 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 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 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlZG dd„ dejejƒZdd„ Z e!dkräee ƒ ƒ dS )zTests for distutils.util.é    N)Úcopy)Úrun_unittest)Úmock)ÚDistutilsPlatformErrorÚDistutilsByteCompileError)	Úget_platformÚconvert_pathÚchange_rootÚcheck_environÚsplit_quotedÚ	strtoboolÚrfc822_escapeÚbyte_compileÚgrok_environment_error)Úutil)Úget_config_vars)Ú	sysconfig)Úsupportc                       sš   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
e ejdkd¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚUtilTestCasec                    sŽ   t t| ƒ ¡  tj| _tj| _tj| _tj| _tj	j
| _
tj	j| _tj	j| _ttjƒ| _ttdƒrvtj| _t ¡ | _nd | _d | _| jt_d S )NÚuname)Úsuperr   ÚsetUpÚosÚnameÚsysÚplatformÚversionÚsepÚpathÚjoinÚisabsÚ
splitdriver   r   Ú_config_varsÚhasattrr   Ú_unameÚ
_get_uname©Úself©Ú	__class__© ú*lib/python3.9/distutils/tests/test_util.pyr      s    



zUtilTestCase.setUpc                    st   | j t_ | jt_| jt_| jt_| jtj_| jtj_| j	tj_	| j
d urR| j
t_
nt`
t| jƒt_tt| ƒ ¡  d S ©N)r   r   r   r   r   r   r   r   r    r!   r   r   r"   r   r   r   ÚtearDownr&   r(   r*   r+   r-   ,   s    




zUtilTestCase.tearDownc                 C   s
   || _ d S r,   ©r$   )r'   r   r*   r*   r+   Ú
_set_uname<   s    zUtilTestCase._set_unamec                 C   s   | j S r,   r.   r&   r*   r*   r+   r%   ?   s    zUtilTestCase._get_unamec                 C   sö  dt _dt_dt_|  tƒ d¡ dt _dt_dt_|  tƒ d¡ dt _dt_dt_|  d	¡ t 	t
ƒ ¡ d
t
ƒ d< dt
ƒ d< tj}dt_z|  tƒ d¡ W |t_n|t_0 t 	t
ƒ ¡ dt
ƒ d< dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt jd< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ t 	t
ƒ ¡ dt
ƒ d< |  tƒ d¡ dD ]6}t 	t
ƒ ¡ d|f t
ƒ d< |  tƒ d|f ¡ qdt _dt_d t_|  d!¡ |  tƒ d"¡ d S )#NÚntz>2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)]Zwin32z>2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Amd64)]z	win-amd64ÚposixzU2.5 (r25:51918, Sep 19 2006, 08:49:13) 
[GCC 4.0.1 (Apple Computer, Inc. build 5341)]Údarwin)ZDarwinZmacziadez8.11.1z]Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386Úi386z10.3ZMACOSX_DEPLOYMENT_TARGETzF-fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypesZCFLAGSiÿÿÿzmacosx-10.3-i386z10.4zy-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fatz10.1z|-arch x86_64 -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-intelz†-arch x86_64 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fat3z’-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-universalz}-arch x86_64 -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-fat64)Zppcr3   Zx86_64Zppc64zm-arch %s -isysroot /Developer/SDKs/MacOSX10.4u.sdk  -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3zmacosx-10.4-%szV2.3.5 (#1, Jul  4 2007, 17:28:59) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]Zlinux2)ZLinuxZaglaez2.6.21.1dedibox-r7z #1 Mon Apr 30 17:25:38 CEST 2007Zi686z
linux-i686)r   r   r   r   r   ÚassertEqualr   r/   Ú_osx_supportZ_remove_original_valuesr   ÚmaxsizeÚenviron)r'   ZcursizeZarchr*   r*   r+   Útest_get_platformB   sd    









ý

zUtilTestCase.test_get_platformc                 C   s~   dt _dd„ }|t j_|  tdƒd¡ dt _dd„ }|t j_|  ttd¡ |  ttd¡ |  tdƒd	¡ |  td
ƒt j¡ d S )Nú/c                 S   s
   d  | ¡S ©Nr9   ©r   ©r   r*   r*   r+   Ú_join®   s    z-UtilTestCase.test_convert_path.<locals>._joinz/home/to/my/stuffú\c                  W   s
   d  | ¡S ©Nr>   r;   r<   r*   r*   r+   r=   ·   s    zhome/to/my/stuff/zhome/to/my/stuffzhome\to\my\stuffÚ.)	r   r   r   r   r4   r   ÚassertRaisesÚ
ValueErrorÚcurdir)r'   r=   r*   r*   r+   Útest_convert_path«   s"    
ÿ
ÿ
ÿzUtilTestCase.test_convert_pathc                 C   s¾   dt _dd„ }|t j_dd„ }|t j_|  tddƒd¡ |  tdd	ƒd
¡ dt _dd„ }|t j_dd„ }|t j_dd„ }|t j_|  tddƒd¡ |  tddƒd¡ dt _|  t	tdd¡ d S )Nr1   c                 S   s   | d dkS )Nr   r9   r*   r<   r*   r*   r+   Ú_isabsÆ   s    z-UtilTestCase.test_change_root.<locals>._isabsc                  W   s
   d  | ¡S r:   r;   r<   r*   r*   r+   r=   É   s    z,UtilTestCase.test_change_root.<locals>._joinz/rootz/old/its/herez/root/old/its/herezits/herez/root/its/herer0   c                 S   s
   |   d¡S )Nzc:\)Ú
startswithr<   r*   r*   r+   rE   Ô   s    c                 S   s"   |   d¡rd|  dd¡fS d| fS )Nzc:Ú )rF   Úreplacer<   r*   r*   r+   Ú_splitdrive×   s    
z2UtilTestCase.test_change_root.<locals>._splitdrivec                  W   s
   d  | ¡S r?   r;   r<   r*   r*   r+   r=   Ü   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   r4   r	   r!   rA   r   )r'   rE   r=   rI   r*   r*   r+   Útest_change_rootÃ   s8    ÿÿÿÿÿzUtilTestCase.test_change_rootc                 C   s@   dt _tj dd ¡ tƒ  |  tjd tƒ ¡ |  t jd¡ d S )Nr   ÚHOMEZPLATé   )r   Ú_environ_checkedr   r7   Úpopr
   r4   r   r&   r*   r*   r+   Útest_check_environì   s
    zUtilTestCase.test_check_environr1   zspecific to posixc                 C   sÎ   dt _tj dd ¡ dd l}| d¡}tjj	|d|d( t
ƒ  |  tjd d¡ W d   ƒ n1 sf0    Y  dt _tj dd ¡ tjj	|dtd$ t
ƒ  |  dtj¡ W d   ƒ n1 sÀ0    Y  d S )Nr   rK   )NNNNNú/home/distutilsNÚgetpwuid)Zreturn_valuerP   )Zside_effect)r   rM   r   r7   rN   ÚpwdZstruct_passwdr   ZpatchÚobjectr
   r4   ÚKeyErrorZassertNotIn)r'   rR   Úresultr*   r*   r+   Útest_check_environ_getpwuidõ   s    
0z(UtilTestCase.test_check_environ_getpwuidc                 C   s   |   tdƒg d¢¡ d S )Nz""one"" "two" 'three' \four)ZoneZtwoZthreeZfour)r4   r   r&   r*   r*   r+   Útest_split_quoted  s    
ÿzUtilTestCase.test_split_quotedc                 C   s<   d}d}|D ]}|   t|ƒ¡ q|D ]}|  t|ƒ¡ q$d S )N)
ÚyÚYÚyesÚTrueÚtÚtruer[   ZOnZonÚ1)	ÚnÚnoÚfZfalseZoffÚ0ZOffZNoÚN)Z
assertTruer   ZassertFalse)r'   rZ   r`   rX   r_   r*   r*   r+   Útest_strtobool  s    zUtilTestCase.test_strtoboolc                 C   s(   d}t |ƒ}dddi }|  ||¡ d S )NzI am a
poor
lonesome
header
z0I am a%(8s)spoor%(8s)slonesome%(8s)sheader%(8s)sZ8sz	
        )r   r4   )r'   ÚheaderÚresZwantedr*   r*   r+   Útest_rfc822_escape  s    ÿzUtilTestCase.test_rfc822_escapec                 C   s2   t j}dt _z|  ttg ¡ W |t _n|t _0 d S )NT)r   Údont_write_bytecoderA   r   r   )r'   Zold_dont_write_bytecoder*   r*   r+   Útest_dont_write_bytecode   s
    z%UtilTestCase.test_dont_write_bytecodec                 C   s    t dƒ}t|ƒ}|  |d¡ d S )NzUnable to find batch filez error: Unable to find batch file)ÚIOErrorr   r4   )r'   ÚexcÚmsgr*   r*   r+   Útest_grok_environment_error*  s    z(UtilTestCase.test_grok_environment_error)Ú__name__Ú
__module__Ú__qualname__r   r-   r/   r%   r8   rD   rJ   rO   ÚunittestZ
skipUnlessr   r   rV   rW   rd   rg   ri   rm   Ú__classcell__r*   r*   r(   r+   r      s   i)	


r   c                   C   s
   t  t¡S r,   )rq   Z	makeSuiter   r*   r*   r*   r+   Ú
test_suite1  s    rs   Ú__main__)"Ú__doc__r   r   rq   r   Ztest.supportr   r   Zdistutils.errorsr   r   Zdistutils.utilr   r   r	   r
   r   r   r   r   r   Z	distutilsr   Zdistutils.sysconfigr   r   Zdistutils.testsr   r5   ZEnvironGuardZTestCaser   rs   rn   r*   r*   r*   r+   Ú<module>   s&   ,  