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mZmZmZmZ ddlmZ G dd	„ d	eƒZG d
d„ dejejƒZdd„ ZedkrXeeƒ ƒ dS dS )z$Tests for distutils.cygwinccompiler.é    N)ÚBytesIO)Úrun_unittest)Úcygwinccompiler)Úcheck_config_hÚCONFIG_H_OKÚCONFIG_H_NOTOKÚCONFIG_H_UNCERTAINÚget_versionsÚ	get_msvcr)Úsupportc                   @   s   e Zd ZdZdd„ ZdS )Ú	FakePopenNc                 C   sF   |  ¡ d | _| jj}| j|v rt|| j ƒ| _d S t |d¡| _d S )Nr   Úr)ÚsplitÚcmdÚ
test_classÚ_exesr   ÚstdoutÚosÚpopen)Úselfr   Úshellr   Zexes© r   ú;/usr/lib/python3.10/distutils/tests/test_cygwinccompiler.pyÚ__init__   s
   
zFakePopen.__init__)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                       sP   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	‡  Z
S )ÚCygwinCCompilerTestCasec                    st   t t| ƒ ¡  tj| _tj |  ¡ d¡| _	ddl
m} |j| _| j|_tj| _| jt_i | _tj| _| t_tt_d S )Nzpython.hr   ©Ú	sysconfig)Úsuperr   ÚsetUpÚsysÚversionr   ÚpathÚjoinÚmkdtempÚpython_hÚ	distutilsr   Úget_config_h_filenameÚold_get_config_h_filenameÚ_get_config_h_filenamer   Úfind_executableÚold_find_executableÚ_find_executabler   ÚPopenÚ	old_popenr   r   ©r   r   ©Ú	__class__r   r   r!      s   
zCygwinCCompilerTestCase.setUpc                    s>   | j t_ ddlm} | j|_| jt_| j	t_
tt| ƒ ¡  d S )Nr   r   )r#   r"   r(   r   r*   r)   r-   r   r,   r0   r/   r    r   ÚtearDownr1   r2   r   r   r4   -   s   z CygwinCCompilerTestCase.tearDownc                 C   s   | j S ©N)r'   ©r   r   r   r   r+   5   s   z.CygwinCCompilerTestCase._get_config_h_filenamec                 C   s   || j v r|S d S r5   )r   )r   Únamer   r   r   r.   8   s   
z(CygwinCCompilerTestCase._find_executablec                 C   st   dt _|  tƒ d t¡ dt _|  tƒ d t¡ |  | jd¡ |  tƒ d t¡ |  | jd¡ |  tƒ d t¡ d S )NúX2.6.1 (r261:67515, Dec  6 2008, 16:42:21) 
[GCC 4.0.1 (Apple Computer, Inc. build 5370)]r   zsomething without the *CC wordZxxxzxxx __GNUC__ xxx)	r"   r#   ÚassertEqualr   r   r   Z
write_filer'   r   r6   r   r   r   Útest_check_config_h=   s   z+CygwinCCompilerTestCase.test_check_config_hc                 C   sÞ   |   tƒ d¡ d| jd< tƒ }|   t|d ƒd¡ d| jd< tƒ }|   |d d ¡ d| jd< tƒ }|   t|d	 ƒd
¡ d| jd< tƒ }|   |d	 d ¡ d| jd< tƒ }|   t|d ƒd
¡ d| jd< tƒ }|   |d d ¡ d S )N)NNNs#   gcc (GCC) 3.4.5 (mingw special)
FSFZgccr   z3.4.5s   very strange outputs   GNU ld version 2.17.50 20060824Zldé   z2.17.50s   @(#)PROGRAM:ld  PROJECT:ld64-77s    GNU dllwrap 2.17.50 20060824
FSFZdllwrapé   s   Cheese Wrap)r9   r	   r   Ústr)r   Úresr   r   r   Útest_get_versionsT   s&   





z)CygwinCCompilerTestCase.test_get_versionsc                 C   s‚   dt _|  tƒ d ¡ dt _|  tƒ dg¡ dt _|  tƒ dg¡ dt _|  tƒ dg¡ dt _|  tƒ d	g¡ d
t _|  tt¡ d S )Nr8   zF2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1300 32 bits (Intel)]Zmsvcr70zF2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bits (Intel)]Zmsvcr71zF2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1400 32 bits (Intel)]Zmsvcr80zF2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1500 32 bits (Intel)]Zmsvcr90zF2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1999 32 bits (Intel)])r"   r#   r9   r
   ZassertRaisesÚ
ValueErrorr6   r   r   r   Útest_get_msvcrv   s   z&CygwinCCompilerTestCase.test_get_msvcr)r   r   r   r!   r4   r+   r.   r:   r?   rA   Ú__classcell__r   r   r2   r   r      s    "r   c                   C   s
   t  t¡S r5   )ÚunittestZ	makeSuiter   r   r   r   r   Ú
test_suite–   s   
rD   Ú__main__)Ú__doc__rC   r"   r   Úior   Ztest.supportr   r(   r   Zdistutils.cygwinccompilerr   r   r   r   r	   r
   Zdistutils.testsr   Úobjectr   ZTempdirManagerZTestCaser   rD   r   r   r   r   r   Ú<module>   s"     ÿzÿ