o
    GXh6                     @   s~   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mZ ddlZe	ej
ddG dd dejZedkr=e  dS dS )	z=
Test suite for _osx_support: shared OS X support functions.
    N)	os_helper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   sZ   d | _ d| _tjt | _t | _	| 
| 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_dirr   ZEnvironmentVarGuardenv
addCleanup__exit__Zunset)selfcv r   @/opt/python-3.10.19/usr/lib/python3.10/test/test__osx_support.pysetUp   s   

zTest_OSXSupport.setUpc                    s     fdd D  d S )Nc                 3   s0    | ]} | | 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 | t	
| j | tj| j t| jd}|d W d    n1 sKw   Y  t| jtj | | jt	
| j d S )NPATH:wz#!/bin/sh
/bin/echo OK
)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 | tj| j t	| jd}|
d W d    n1 sBw   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'   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   )r2   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   s    zBTest_OSXSupport.test__supports_universal_builds.<locals>.<genexpr>.   )
      )r6   tupler7   splitr-   r'   Z_supports_universal_builds)r   r6   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 r(d| jd  nd}tj| j| | jd< |D ]3\}}t| | tj| t	|d}|
d|  W d    n1 s_w   Y  t|tj q8| |t| d S )N))zgcc-testz i686-apple-darwin11-llvm-gcc-4.2)clangzclang version 3.1r;   z	cc++-test3-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'   Z_find_appropriate_compiler)r   Z	compilersr   r   suffixc_nameZc_outputr/   r   r   r   test__find_appropriate_compilert   s@   

z/Test_OSXSupport.test__find_appropriate_compilerc                 C   B   dddddd}ddd	d
dd}|  || | |t| d S )NrM   rN   rO   (gcc-4.0 -bundle  -arch ppc -arch i386 -gRgcc-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   rT   )NrM   rN   z,-I. -isysroot/Developer/SDKs/MacOSX10.4u.sdkrU   zQgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.4u.sdk -grW   rX   rY   rZ   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 r$d| jd  nd}tj| j| | jd< d}t| | tj| t	|d}|
d W d    n1 sUw   Y  t|tj | |t| d S )NrL   rM   rN   rO   rU   rV   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$   rP   r%   z#!/bin/sh
exit 255)r"   r   r   r   r   r   r   r&   r   r(   r)   r*   r+   r,   r-   r'   Z_remove_unsupported_archs)r   r   r   rQ   rR   r/   r   r   r   test__remove_unsupported_archs   s:   
	
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	ARCHFLAGSrL   rM   rN   rO   rU   zQgcc-4.0 -bundle -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -gr`   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   F   ddddddd}dddd	dd
d}|  || | |t| d S )NrL   [-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot /Developer/SDKs/MacOSX10.1.sdkrN   z,-I. -isysroot /Developer/SDKs/MacOSX10.1.sdkrU   zQgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.1.sdk -gr`   4-fno-strict-aliasing  -g -O3 -arch ppc -arch i386   rZ   )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   rc   )NrL   zZ-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot/Developer/SDKs/MacOSX10.1.sdkrN   z+-I. -isysroot/Developer/SDKs/MacOSX10.1.sdkrU   zPgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.1.sdk -gr`   re   rZ   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"   r0   r1   r5   r9   r?   r@   rB   rK   rS   r^   r_   ra   rb   rh   ri   rm   r   r   r   r   r      s&    
'"r   __main__)__doc__r   r6   r+   sysZunittestZtest.supportr   r'   Z
skipUnlessr8   ZTestCaser   rn   mainr   r   r   r   <module>   s      8