a
    äzeŸ6  ã                   @   sv   d Z ddlZddlZddlZddlZddlZddlZddlZe 	ej 
d¡d¡G dd„ dejƒƒZedkrre ¡  dS )z=
Test suite for _osx_support: shared OS X support functions.
é    NÚdarwinzrequires OS Xc                   @   sœ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&ÚTest_OSXSupportc                 C   s\   d | _ d| _tj t ¡ ¡| _tj 	¡ | _
|  | j
j¡ dD ]}|| j
v r<| j
 |¡ q<d S )NZbogus_program_xxxx)ÚCFLAGSÚLDFLAGSÚCPPFLAGSZ
BASECFLAGSÚ	BLDSHAREDÚLDSHAREDÚCCÚCXXZ	PY_CFLAGSZ
PY_LDFLAGSZPY_CPPFLAGSZPY_CORE_CFLAGSZPY_CORE_LDFLAGS)ZmaxDiffÚ	prog_nameÚosÚpathÚabspathÚgetcwdÚtemp_path_dirÚtestÚsupportZEnvironmentVarGuardÚenvÚ
addCleanupÚ__exit__Zunset)ÚselfÚcv© r   ú,/usr/lib/python3.9/test/test__osx_support.pyÚsetUp   s    
zTest_OSXSupport.setUpc                    s   ˆ  ‡ ‡fdd„ˆ D ƒ¡ d S )Nc                 3   s.   | ]&}ˆ | ˆ| krd | ˆ | fV  qdS )Z_OSX_SUPPORT_INITIAL_Nr   )Ú.0Úk©Úconfig_varsÚexpected_varsr   r   Ú	<genexpr>"   s
   þÿzDTest_OSXSupport.add_expected_saved_initial_values.<locals>.<genexpr>)Úupdate©r   r   r   r   r   r   Ú!add_expected_saved_initial_values   s    ÿz1Test_OSXSupport.add_expected_saved_initial_valuesc                 C   sÎ   | j d r| j d d | j d< | j d tj | j¡ | j d< tj | j¡ |  	t
 | j¡¡ |  tjj| j¡ t| jdƒ}| d¡ W d   ƒ n1 sš0    Y  t | jtj¡ |  | jt
 | j¡¡ d S )NÚPATHú:Úwz#!/bin/sh
/bin/echo OK
)r   r   r   r   r   r   r   Úunlinkr   ZassertIsNoneÚ_osx_supportZ_find_executabler   ÚopenÚwriteÚchmodÚstatÚS_IRWXUÚassertEqual©r   Úfr   r   r   Útest__find_executable&   s    
(
ÿz%Test_OSXSupport.test__find_executablec                 C   sº   | j d r| j d d | j d< | j d tj | j¡ | j d< tj | j¡ |  	tjj| j¡ t
| jdƒ}| d¡ W d   ƒ n1 sˆ0    Y  t | jtj¡ |  dt | j¡¡ d S )Nr$   r%   r&   z##!/bin/sh
/bin/echo ExpectedOutput
ZExpectedOutput)r   r   r   r   r   r   r   r'   r   r   r)   r*   r+   r,   r-   r.   r(   Z_read_outputr/   r   r   r   Útest__read_output3   s    
(
ÿz!Test_OSXSupport.test__read_outputc                 C   s"   t  d¡}|  tj |¡d¡ d S )NZccz!cc not found - check xcode-select)r(   Z_find_build_toolÚ
assertTruer   r   Úisfile)r   Úoutr   r   r   Útest__find_build_tool?   s    
ÿz%Test_OSXSupport.test__find_build_toolc                 C   s    |   t ¡ d  t ¡ ¡¡ d S )Nr   )r3   ÚplatformÚmac_verÚ
startswithr(   Z_get_system_version)r   r   r   r   Útest__get_system_versionD   s    ÿz(Test_OSXSupport.test__get_system_versionc                 C   sL   ddi}ddi}d}d}t  |||¡ |  ||¡ t  |¡ |  ||¡ d S ©Nr	   úgcc-test -pthreadsúclang -pthreads)r(   Ú_save_modified_valueZassertNotEqualZ_remove_original_valuesr.   ©r   r   r   r   Znewvaluer   r   r   Útest__remove_original_valuesH   s    ÿÿ
z,Test_OSXSupport.test__remove_original_valuesc                 C   sB   ddi}ddi}|   ||¡ d}d}t |||¡ |  ||¡ d S r;   )r#   r(   r>   r.   r?   r   r   r   Útest__save_modified_valueV   s    ÿÿz)Test_OSXSupport.test__save_modified_valuec                 C   s6   ddi}|  ¡ }d}d}t |||¡ |  ||¡ d S )Nr	   r<   )Úcopyr(   r>   r.   r?   r   r   r   Ú#test__save_modified_value_unchangedc   s    ÿz3Test_OSXSupport.test__save_modified_value_unchangedc                 C   sH   dd l }tdd„ | ¡ d  d¡dd… D ƒƒ}|  |dkt ¡ ¡ d S )Nr   c                 s   s   | ]}t |ƒV  qd S )N)Úint)r   Úir   r   r   r    o   ó    zBTest_OSXSupport.test__supports_universal_builds.<locals>.<genexpr>Ú.é   )é
   é   )r7   Útupler8   Úsplitr.   r(   Z_supports_universal_builds)r   r7   Zmac_ver_tupler   r   r   Útest__supports_universal_buildsm   s    ÿ
ÿz/Test_OSXSupport.test__supports_universal_buildsc              	   C   sò   d}dddddddd	œ}d
ddddddd	œ}|   ||¡ | jd rPd| jd  nd}tj | j¡| | jd< |D ]j\}}tj |¡ |  	tjj|¡ t
|dƒ}| d| ¡ W d   ƒ n1 sÂ0    Y  t |tj¡ qp|  |t |¡¡ d S )N))zgcc-testz i686-apple-darwin11-llvm-gcc-4.2)Úclangzclang version 3.1r<   z	cc++-testú3-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  ú-arch ppc -arch i386   -gú--I. -isysroot /Developer/SDKs/MacOSX10.4u.sdkz(gcc-test -bundle -arch ppc -arch i386 -gzRgcc-test -bundle -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g)r	   r
   r   r   r   r   r   r=   zclang++z%clang -bundle -arch ppc -arch i386 -gzOclang -bundle -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -gr$   r%   Ú r&   z#!/bin/sh
/bin/echo )r#   r   r   r   r   r   r   r   r'   r   r)   r*   r+   r,   r-   r.   r(   Z_find_appropriate_compiler)r   Z	compilersr   r   ÚsuffixÚc_nameZc_outputr0   r   r   r   Útest__find_appropriate_compilert   s>    ùù
,ÿÿz/Test_OSXSupport.test__find_appropriate_compilerc                 C   sB   ddddddœ}ddd	d
ddœ}|   ||¡ |  |t |¡¡ d S )NrO   rP   rQ   ú(gcc-4.0 -bundle  -arch ppc -arch i386 -gúRgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g©r   r   r   r   r   ú -fno-strict-aliasing  -g -O3    ú    -gú-I.  úgcc-4.0 -bundle    -gúgcc-4.0 -bundle      -g©r#   r.   r(   Z_remove_universal_flagsr"   r   r   r   Útest__remove_universal_flags›   s$    û	ûÿÿz,Test_OSXSupport.test__remove_universal_flagsc                 C   sB   ddddddœ}ddd	d
ddœ}|   ||¡ |  |t |¡¡ d S )NrO   rP   z,-I. -isysroot/Developer/SDKs/MacOSX10.4u.sdkrV   zQgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.4u.sdk -grX   rY   rZ   r[   r\   r]   r^   r"   r   r   r   Ú&test__remove_universal_flags_alternate±   s$    û	ûÿÿz6Test_OSXSupport.test__remove_universal_flags_alternatec                 C   sÜ   dddddddœ}ddd	dd
ddœ}|   ||¡ | jd rHd| jd  nd}tj | j¡| | jd< d}tj |¡ |  	tjj|¡ t
|dƒ}| d¡ W d   ƒ n1 s®0    Y  t |tj¡ |  |t |¡¡ d S )NrN   rO   rP   rQ   rV   rW   ©r	   r   r   r   r   r   z*-fno-strict-aliasing  -g -O3  -arch i386  z -arch i386   -gzgcc-4.0 -bundle   -arch i386 -gzIgcc-4.0 -bundle   -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -gr$   r%   rR   r&   z#!/bin/sh
exit 255)r#   r   r   r   r   r   r   r   r'   r   r)   r*   r+   r,   r-   r.   r(   Z_remove_unsupported_archs)r   r   r   rS   rT   r0   r   r   r   Útest__remove_unsupported_archsÈ   s8    ú
ú	(ÿÿz.Test_OSXSupport.test__remove_unsupported_archsc                 C   sP   d| j d< ddddddd	œ}dd
ddddd	œ}|  ||¡ |  |t |¡¡ d S )Nz-arch x86_64Z	ARCHFLAGSrN   rO   rP   rQ   rV   zQgcc-4.0 -bundle -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -gra   z--fno-strict-aliasing  -g -O3     -arch x86_64z    -g -arch x86_64z"gcc-4.0 -bundle    -g -arch x86_64zKgcc-4.0 -bundle   -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -arch x86_64)r   r#   r.   r(   Z_override_all_archsr"   r   r   r   Útest__override_all_archsê   s*    
ú
ú	ÿÿz(Test_OSXSupport.test__override_all_archsc                 C   sF   dddddddœ}dddd	dd
dœ}|   ||¡ |  |t |¡¡ d S )NrN   ú[-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot /Developer/SDKs/MacOSX10.1.sdkrP   z,-I. -isysroot /Developer/SDKs/MacOSX10.1.sdkrV   zQgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.1.sdk -gra   ú4-fno-strict-aliasing  -g -O3 -arch ppc -arch i386   r[   ú)gcc-4.0 -bundle  -arch ppc -arch i386  -g©r#   r.   r(   Z_check_for_unavailable_sdkr"   r   r   r   Útest__check_for_unavailable_sdk  s(    ùù
ÿÿz/Test_OSXSupport.test__check_for_unavailable_sdkc                 C   sF   dddddddœ}dddd	dd
dœ}|   ||¡ |  |t |¡¡ d S )NrN   zZ-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot/Developer/SDKs/MacOSX10.1.sdkrP   z+-I. -isysroot/Developer/SDKs/MacOSX10.1.sdkrV   zPgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.1.sdk -gra   re   r[   rf   rg   r"   r   r   r   Ú)test__check_for_unavailable_sdk_alternate  s(    ùù
ÿÿz9Test_OSXSupport.test__check_for_unavailable_sdk_alternatec                 C   s*   dddœ}t  |ddd¡}|  d|¡ d S )Nrd   ú10.6)r   ZMACOSX_DEPLOYMENT_TARGETú )Zmacosxrj   Zfat)r(   Zget_platform_osxr.   )r   r   Úresultr   r   r   Útest_get_platform_osx;  s
    ýz%Test_OSXSupport.test_get_platform_osxN)Ú__name__Ú
__module__Ú__qualname__r   r#   r1   r2   r6   r:   r@   rA   rC   rM   rU   r_   r`   rb   rc   rh   ri   rm   r   r   r   r   r      s$   
'"r   Ú__main__)Ú__doc__r   r7   r,   ÚsysZunittestZtest.supportr   r(   Z
skipUnlessr9   ZTestCaser   rn   Úmainr   r   r   r   Ú<module>   s     8