
    daf{6                         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j                  ej                  j                  d      d       G d dej                               Zedk(  r ej                          yy)	z=
Test suite for _osx_support: shared OS X support functions.
    N)	os_helperdarwinzrequires OS Xc                   x    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)Test_OSXSupportc                 >   d | _         d| _        t        j                  j	                  t        j
                               | _        | j                  t        j                               | _
        dD ],  }|| j                  v s| j                  j                  |       . y )Nbogus_program_xxxx)CFLAGSLDFLAGSCPPFLAGS
BASECFLAGS	BLDSHAREDLDSHAREDCCCXX	PY_CFLAGS
PY_LDFLAGSPY_CPPFLAGSPY_CORE_CFLAGSPY_CORE_LDFLAGS)maxDiff	prog_nameospathabspathgetcwdtemp_path_direnterContextr   EnvironmentVarGuardenvunset)selfcvs     1/root/Python-3.12.4/Lib/test/test__osx_support.pysetUpzTest_OSXSupport.setUp   su    -WW__RYY[9$$Y%B%B%DEA 	#B TXX~r"	#    c                 >    j                  fdD               y )Nc              3   H   K   | ]  }|   |   k7  rd |z   |   f  yw)_OSX_SUPPORT_INITIAL_N ).0kconfig_varsexpected_varss     r#   	<genexpr>zDTest_OSXSupport.add_expected_saved_initial_values.<locals>.<genexpr>!   s;      ;$%"1~q)99 6q8A  ;s   ")updater!   r,   r-   s    ``r#   !add_expected_saved_initial_valuesz1Test_OSXSupport.add_expected_saved_initial_values   s      	 ;)4; 	;r%   c                     | j                   d   r| j                   d   dz   | j                   d<   | j                   d   t        j                  j                  | j                        z   | j                   d<   t        j                  | j                         | j                  t        j                  | j                               | j                  t
        j                  | j                         t        | j                  d      5 }|j                  d       d d d        t        j                  | j                  t        j                          | j#                  | j                  t        j                  | j                               y # 1 sw Y   qxY w)NPATH:wz#!/bin/sh
/bin/echo OK
)r   r   r   r   r   r   unlinkr   assertIsNone_osx_support_find_executable
addCleanupopenwritechmodstatS_IRWXUassertEqualr!   fs     r#   test__find_executablez%Test_OSXSupport.test__find_executable%   s   88F#xx/#5DHHV88F+bggood>P>P.QQ(,77GH	(($..9$..#& 	1!GG/0	1
.(99$..I	K	1 	1s   FFc                    | j                   d   r| j                   d   dz   | j                   d<   | j                   d   t        j                  j                  | j                        z   | j                   d<   t        j                  | j                         | j                  t
        j                  | j                         t        | j                  d      5 }|j                  d       d d d        t        j                  | j                  t        j                         | j                  dt        j                   | j                               y # 1 sw Y   gxY w)Nr3   r4   r5   z##!/bin/sh
/bin/echo ExpectedOutput
ExpectedOutput)r   r   r   r   r   r   r6   r   r:   r;   r<   r=   r>   r?   r@   r8   _read_outputrA   s     r#   test__read_outputz!Test_OSXSupport.test__read_output2   s    88F#xx/#5DHHV88F+bggood>P>P.QQ(	(($..9$..#& 	=!GG;<	=
.)(55dnnE	G	= 	=s   EEc                     t        j                  d      }| j                  t        j                  j                  |      d       y )Nccz!cc not found - check xcode-select)r8   _find_build_tool
assertTruer   r   isfile)r!   outs     r#   test__find_build_toolz%Test_OSXSupport.test__find_build_tool>   s1    ++D1s+?	Ar%   c                     | j                  t        j                         d   j                  t	        j
                                      y )Nr   )rK   platformmac_ver
startswithr8   _get_system_version)r!   s    r#   test__get_system_versionz(Test_OSXSupport.test__get_system_versionC   s7    ((*1-88$0$D$D$FH 	Ir%   c                     ddi}ddi}d}d}t        j                  |||       | j                  ||       t        j                  |       | j	                  ||       y Nr   gcc-test -pthreadsclang -pthreads)r8   _save_modified_valueassertNotEqual_remove_original_valuesr@   r!   r,   r-   r"   newvalues        r#   test__remove_original_valuesz,Test_OSXSupport.test__remove_original_valuesG   sj    "
 	
 $))+r8DM;7,,[94r%   c                     ddi}ddi}| j                  ||       d}d}t        j                  |||       | j                  ||       y rV   )r1   r8   rY   r@   r\   s        r#   test__save_modified_valuez)Test_OSXSupport.test__save_modified_valueU   s\    "
 	
 	..{MJ$))+r8D4r%   c                     ddi}|j                         }d}d}t        j                  |||       | j                  ||       y )Nr   rW   )copyr8   rY   r@   r\   s        r#   #test__save_modified_value_unchangedz3Test_OSXSupport.test__save_modified_value_unchangedb   sK    "
 $((*'))+r8D4r%   c                     dd l }t        d  |j                         d   j                  d      dd D              }| j	                  |dk\  t        j                                y )Nr   c              3   2   K   | ]  }t        |        y w)N)int)r*   is     r#   r.   zBTest_OSXSupport.test__supports_universal_builds.<locals>.<genexpr>n   s      Cc!f Cs   .   )
      )rP   tuplerQ   splitr@   r8   _supports_universal_builds)r!   rP   mac_ver_tuples      r#   test__supports_universal_buildsz/Test_OSXSupport.test__supports_universal_buildsl   sc     C,H,,.q177<QqAC C'1(CCE	Gr%   c                    d}dddddddd	}d
ddddddd	}| j                  ||       | j                  d   rd| j                  d   z   nd}t        j                  j	                  | j
                        |z   | j                  d<   |D ]  \  }}t        j                  |       | j                  t        j                  |       t        |d      5 }|j                  d|z          d d d        t        j                  |t        j                          | j                  |t        j                   |             y # 1 sw Y   UxY w)N))zgcc-testz i686-apple-darwin11-llvm-gcc-4.2)clangzclang version 3.1rW   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   rX   zclang++z%clang -bundle -arch ppc -arch i386 -gzOclang -bundle -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -gr3   r4    r5   z#!/bin/sh
/bin/echo )r1   r   r   r   r   r   r   r6   r:   r;   r<   r=   r>   r?   r@   r8   _find_appropriate_compiler)r!   	compilersr,   r-   suffixc_namec_outputrB   s           r#   test__find_appropriate_compilerz/Test_OSXSupport.test__find_appropriate_compilers   sA   	
 #G.C?G	
  G.C<G	
 	..{MJ-1XXf-=#((277??4+=+=>G ) 	+FHV$OOI,,f5fc" <a/(:;<HHVT\\*	+ 	(CC$/1	2< <s   D77E 	c                     dddddd}ddd	d
dd}| j                  ||       | j                  |t        j                  |             y )Nrs   rt   ru   (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r1   r@   r8   _remove_universal_flagsr0   s      r#   test__remove_universal_flagsz,Test_OSXSupport.test__remove_universal_flags   sf    G.C?G
 5,-
 	..{MJ(@@$/1	2r%   c                     dddddd}ddd	d
dd}| j                  ||       | j                  |t        j                  |             y )Nrs   rt   z,-I. -isysroot/Developer/SDKs/MacOSX10.4u.sdkr~   zQgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.4u.sdk -gr   r   r   r   r   r   r   r0   s      r#   &test__remove_universal_flags_alternatez6Test_OSXSupport.test__remove_universal_flags_alternate   si     H.B?F
 5,-
 	..{MJ(@@$/1	2r%   c                 h   ddddddd}ddd	dd
dd}| j                  ||       | j                  d   rd| j                  d   z   nd}t        j                  j	                  | j
                        |z   | j                  d<   d}t        j                  |       | j                  t        j                  |       t        |d      5 }|j                  d       d d d        t        j                  |t        j                         | j                  |t        j                   |             y # 1 sw Y   SxY w)Nrr   rs   rt   ru   r~   r   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 -gr3   r4   rv   r5   z#!/bin/sh
exit 255)r1   r   r   r   r   r   r   r6   r:   r;   r<   r=   r>   r?   r@   r8   _remove_unsupported_archs)r!   r,   r-   ry   rz   rB   s         r#   test__remove_unsupported_archsz.Test_OSXSupport.test__remove_unsupported_archs   s   G.C?G
 >%C6G
 	..{MJ-1XXf-=#((277??4+=+=>G 	((&1&# 	+!GG)*	+
&(BB$/1	2	+ 	+s   D((D1c                     d| j                   d<   ddddddd	}dd
ddddd	}| j                  ||       | j                  |t        j                  |             y )Nz-arch x86_64	ARCHFLAGSrr   rs   rt   ru   r~   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   r1   r@   r8   _override_all_archsr0   s      r#   test__override_all_archsz(Test_OSXSupport.test__override_all_archs   s}     .G.C?G
 A(C9J
 	..{MJ(<<$/1	2r%   c                     ddddddd}dddd	dd
d}| j                  ||       | j                  |t        j                  |             y )Nrr   [-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot /Developer/SDKs/MacOSX10.1.sdkrt   z,-I. -isysroot /Developer/SDKs/MacOSX10.1.sdkr~   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   r   )gcc-4.0 -bundle  -arch ppc -arch i386  -gr1   r@   r8   _check_for_unavailable_sdkr0   s      r#   test__check_for_unavailable_sdkz/Test_OSXSupport.test__check_for_unavailable_sdk  ss    C.B?F	
 .?	
 	..{MJ(CC$/1	2r%   c                     ddddddd}dddd	dd
d}| j                  ||       | j                  |t        j                  |             y )Nrr   zZ-fno-strict-aliasing  -g -O3 -arch ppc -arch i386  -isysroot/Developer/SDKs/MacOSX10.1.sdkrt   z+-I. -isysroot/Developer/SDKs/MacOSX10.1.sdkr~   zPgcc-4.0 -bundle  -arch ppc -arch i386 -isysroot/Developer/SDKs/MacOSX10.1.sdk -gr   r   r   r   r   r0   s      r#   )test__check_for_unavailable_sdk_alternatez9Test_OSXSupport.test__check_for_unavailable_sdk_alternate  su     B.A?E	
 .?	
 	..{MJ(CC$/1	2r%   c                 b    ddd}t        j                  |ddd      }| j                  d|       y )Nr   10.6)r	   MACOSX_DEPLOYMENT_TARGET )macosxr   fat)r8   get_platform_osxr@   )r!   r,   results      r#   test_get_platform_osxz%Test_OSXSupport.test_get_platform_osx:  s;    C$*

 ..{CcJ2F;r%   N)__name__
__module____qualname__r$   r1   rC   rG   rN   rT   r^   r`   rc   rp   r|   r   r   r   r   r   r   r   r)   r%   r#   r   r      sc    
#;K
GA
I555G%2N2,2. 2D242628	<r%   r   __main__)__doc__r   rP   r>   sysunittesttest.supportr   r8   
skipUnlessrR   TestCaser   r   mainr)   r%   r#   <module>r      s}    
   
  " S\\,,X6Hs<h'' s< Is<j	 zHMMO r%   