B
     S]4-                 @   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re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.7/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 k	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   tearDown)r&   )r'   r(   r)   r*   ,   s    




zUtilTestCase.tearDownc             C   s
   || _ d S )N)r$   )r&   r   r(   r(   r)   
_set_uname<   s    zUtilTestCase._set_unamec             C   s   | j S )N)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 d |t_X 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 x>dD ]6}t	t
  d|f t
 d< | t d|f  qW d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ppcr/   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   sb    











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 )Nr5   )r   )r   r(   r(   r)   _join   s    z-UtilTestCase.test_convert_path.<locals>._joinz/home/to/my/stuff\c              W   s
   d | S )Nr7   )r   )r   r(   r(   r)   r6      s    zhome/to/my/stuff/zhome/to/my/stuffzhome\to\my\stuff.)	r   r   r   r   r0   r   assertRaises
ValueErrorcurdir)r&   r6   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 )Nr-   c             S   s   | d dkS )Nr   r5   r(   )r   r(   r(   r)   _isabs   s    z-UtilTestCase.test_change_root.<locals>._isabsc              W   s
   d | S )Nr5   )r   )r   r(   r(   r)   r6      s    z,UtilTestCase.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:\)
startswith)r   r(   r(   r)   r=      s    c             S   s"   |  drd| ddfS d| fS )Nzc: )r>   replace)r   r(   r(   r)   _splitdrive   s    
z2UtilTestCase.test_change_root.<locals>._splitdrivec              W   s
   d | S )Nr7   )r   )r   r(   r(   r)   r6      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   r0   r	   r!   r9   r   )r&   r=   r6   rA   r(   r(   r)   test_change_root   s.    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   r3   popr
   r0   r   )r&   r(   r(   r)   test_check_environ   s
    zUtilTestCase.test_check_environr-   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 Q R X dt _tjdd  tjj	|dtd t
  | dtj W d Q R X d S )Nr   rC   )NNNNNz/home/distutilsNgetpwuid)Zreturn_valuez/home/distutils)Zside_effect)r   rE   r   r3   rF   pwdZstruct_passwdr   Zpatchobjectr
   r0   KeyErrorZassertNotIn)r&   rI   resultr(   r(   r)   test_check_environ_getpwuid   s    
z(UtilTestCase.test_check_environ_getpwuidc             C   s   |  tdddddg d S )Nz""one"" "two" 'three' \fourZoneZtwoZthreeZfour)r0   r   )r&   r(   r(   r)   test_split_quoted  s    
zUtilTestCase.test_split_quotedc             C   sD   d}d}x|D ]}|  t| qW x|D ]}| t| q*W d S )N)
yYyesTruettruerR   ZOnZon1)	nnofZfalseZoff0ZOffZNoN)Z
assertTruer   ZassertFalse)r&   rQ   rW   rO   rV   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   r0   )r&   headerZresZwantedr(   r(   r)   test_rfc822_escape  s
    
zUtilTestCase.test_rfc822_escapec             C   s,   t j}dt _z| ttg  W d |t _X d S )NT)r   dont_write_bytecoder9   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   r0   )r&   excmsgr(   r(   r)   test_grok_environment_error*  s    z(UtilTestCase.test_grok_environment_error)__name__
__module____qualname__r   r*   r+   r%   r4   r<   rB   rG   unittestZ
skipUnlessr   r   rM   rN   r[   r]   r_   rc   __classcell__r(   r(   )r'   r)   r      s   i)	

r   c               C   s
   t tS )N)rg   Z	makeSuiter   r(   r(   r(   r)   
test_suite1  s    ri   __main__)"__doc__r   r   rg   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   r1   ZEnvironGuardZTestCaser   ri   rd   r(   r(   r(   r)   <module>   s&   ,  