o
    JAf[-                     @   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rtee   dS 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r;t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__ 0/usr/lib/python3.10/distutils/tests/test_util.pyr      s   



zUtilTestCase.setUpc                    s   | j t_ | jt_| jt_| jt_| jtj_| jtj_| j	tj_	| j
d ur)| j
t_
nt`
tj  tj| j tt|   d S N)r   r   r   r   r   r   r   r   r    r!   r   r   r"   clearupdater   r   tearDownr&   r(   r*   r+   r/   ,   s   





zUtilTestCase.tearDownc                 C   s
   || _ d S r,   r$   )r'   r   r*   r*   r+   
_set_uname=      
zUtilTestCase._set_unamec                 C   s   | j S r,   r0   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_w 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 ]}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)]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ppcr7   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   r1   _osx_supportZ_remove_original_valuesr   maxsizeenviron)r'   ZcursizeZarchr*   r*   r+   test_get_platformC   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   
   d | S Nr=   r   r   r*   r*   r+   _join   r2   z-UtilTestCase.test_convert_path.<locals>._joinz/home/to/my/stuff\c                  W   r>   NrC   r@   rA   r*   r*   r+   rB      r2   zhome/to/my/stuff/zhome/to/my/stuffzhome\to\my\stuff.)	r   r   r   r   r8   r   assertRaises
ValueErrorcurdir)r'   rB   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 )Nr5   c                 S   s   | d dkS )Nr   r=   r*   rA   r*   r*   r+   _isabs   s   z-UtilTestCase.test_change_root.<locals>._isabsc                  W   r>   r?   r@   rA   r*   r*   r+   rB      r2   z,UtilTestCase.test_change_root.<locals>._joinz/rootz/old/its/herez/root/old/its/herezits/herez/root/its/herer3   c                 S   s
   |  dS )Nzc:\)
startswithrA   r*   r*   r+   rJ      r2   c                 S   s"   |  drd| ddfS d| fS )Nzc: )rK   replacerA   r*   r*   r+   _splitdrive   s   
z2UtilTestCase.test_change_root.<locals>._splitdrivec                  W   r>   rD   r@   rA   r*   r*   r+   rB      r2   zc:\rootzc:\old\its\herezc:\root\old\its\herezits\herezc:\root\its\hereZ	BugsBunny)
r   r   r   r    r   r8   r	   r!   rF   r   )r'   rJ   rB   rN   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   r;   popr
   r8   r   r&   r*   r*   r+   test_check_environ   s
   zUtilTestCase.test_check_environr5   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 s3w   Y  dt _tjdd  tjj	|dtd t
  | dtj W d    d S 1 saw   Y  d S )Nr   rP   )NNNNN/home/distutilsNgetpwuid)Zreturn_valuerU   )Zside_effect)r   rR   r   r;   rS   pwdZstruct_passwdr   Zpatchobjectr
   r8   KeyErrorZassertNotIn)r'   rW   resultr*   r*   r+   test_check_environ_getpwuid   s   
"z(UtilTestCase.test_check_environ_getpwuidc                 C   s   |  tdg d d S )Nz""one"" "two" 'three' \four)ZoneZtwoZthreeZfour)r8   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'   r_   re   r]   rd   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   r8   )r'   headerresZwantedr*   r*   r+   test_rfc822_escape  s   zUtilTestCase.test_rfc822_escapec                 C   s0   t j}dt _z| ttg  W |t _d S |t _w )NT)r   dont_write_bytecoderF   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   r8   )r'   excmsgr*   r*   r+   test_grok_environment_error+  s   z(UtilTestCase.test_grok_environment_error)__name__
__module____qualname__r   r/   r1   r%   r<   rI   rO   rT   unittestZ
skipUnlessr   r   r[   r\   ri   rl   rn   rr   __classcell__r*   r*   r(   r+   r      s     i)	


r   c                   C   s
   t tS r,   )rv   Z	makeSuiter   r*   r*   r*   r+   
test_suite2  r2   rx   __main__)"__doc__r   r   rv   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   r9   ZEnvironGuardZTestCaser   rx   rs   r*   r*   r*   r+   <module>   s*    ,   