B
    È S]  ã               @   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r¬eeƒ ƒ 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   sD   |  ¡ d | _| jj}| j|kr2t|| j ƒ| _nt |d¡| _d S )Nr   Úr)ÚsplitÚcmdÚ
test_classÚ_exesr   ÚstdoutÚosÚpopen)Úselfr   Úshellr   Zexes© r   ú5lib/python3.7/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ÚjoinZ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*   r.   r-   r   r   ÚtearDown)r   r   )r/   r   r   r0   -   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 kr|S d S )N)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 )NzX2.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   )r   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)r2   r	   r   Ústr)r   Z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 )NzX2.6.1 (r261:67515, Dec  6 2008, 16:42:21) 
[GCC 4.0.1 (Apple Computer, Inc. build 5370)]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"   r2   r
   ZassertRaisesÚ
ValueError)r   r   r   r   Útest_get_msvcrv   s    z&CygwinCCompilerTestCase.test_get_msvcr)r   r   r   r    r0   r)   r,   r3   r7   r9   Ú__classcell__r   r   )r/   r   r      s   "r   c               C   s
   t  t¡S )N)ÚunittestZ	makeSuiter   r   r   r   r   Ú
test_suite–   s    r<   Ú__main__)Ú__doc__r;   r!   r   Úior   Ztest.supportr   r&   r   Zdistutils.cygwinccompilerr   r   r   r   r	   r
   Zdistutils.testsr   Úobjectr   ZTempdirManagerZTestCaser   r<   r   r   r   r   r   Ú<module>   s    y