Current File : //usr/local/apps/python3/lib/python3.11/distutils/tests/__pycache__/test_build_ext.cpython-311.pyc
�

�Ke�Q��B�ddlZddlZddlmZddlZddlmZddlmZddl	m
Z
ddlmZm
Z
mZmZddlmZddlmZmZmZmZddlZdd	lmZdd
lmZddlmZddlmZd
aGd�dee
ej ��Z!Gd�de!��Z"d�Z#e$dkrej%e$��dSdS)�N)�StringIO)�Distribution��	build_ext)�	sysconfig)�TempdirManager�LoggingSilencer�copy_xxmodule_c�fixup_build_ext)�	Extension)�CompileError�DistutilsPlatformError�DistutilsSetupError�UnknownFileError)�support)�	os_helper)�assert_python_ok)�threading_helperFc����eZdZ�fd�Z�fd�Zd�Zej��d���Zd�Z	d�Z
ej��d���Z
d�Zd	�Zd
�Zd�Zd�Zej��d
���Zd�Zejejdkd��d���Zejejdkd��d���Zejejdkd��d���Zd�Z�xZS)�BuildExtTestCasec���tt|�����|���|_ddl}|j|_|���|_ddlm	}|j|_ttj��|_
|�tj|j����dS�Nrr)�superr�setUp�mkdtemp�tmp_dir�site�	USER_BASE�
old_user_base�distutils.commandr�dictr�_config_vars�old_config_vars�enterContextr�
change_cwd��selfrr�	__class__s   ��H/usr/local/apps/python3/lib/python3.11/distutils/tests/test_build_ext.pyrzBuildExtTestCase.setUps����
���%�%�+�+�-�-�-��|�|�~�~�������!�^����������/�/�/�/�/�/�"�n�	��#�I�$:�;�;���
	
���)�.�t�|�<�<�=�=�=�=�=�c���ddl}|j|_ddlm}|j|_t
j���t
j�|j	��tt|�����dSr)
rrrr rrr"�clear�updater#rr�tearDownr&s   �r)r.zBuildExtTestCase.tearDown.s���������+���/�/�/�/�/�/�"�0�	����$�$�&�&�&���%�%�d�&:�;�;�;�
���%�%�.�.�0�0�0�0�0r*c��t|i|��S�Nr)r'�args�kwargss   r)rzBuildExtTestCase.build_ext7s���$�)�&�)�)�)r*c�d�tj��}|�|�d|z��t|j��t
j�|jd��}td|g��}td|gd���}|j|_
|�|��}t|��|j|_
|j|_tj}tjst%��t_	|���|���|t_n#|t_wxYwt*r|�dt*z��nt-|��jat1jd|j�d���}t5d|��dS)	N�The %r command is not foundz
xxmodule.c�xx��name�ext_moduleszAlready tested in %sz
            tmp_dir = ai

            import sys
            import unittest
            from test import support

            sys.path.insert(0, tmp_dir)
            import xx

            class Tests(unittest.TestCase):
                def test_xx(self):
                    for attr in ('error', 'foo', 'new', 'roj'):
                        self.assertTrue(hasattr(xx, attr))

                    self.assertEqual(xx.foo(2, 5), 7)
                    self.assertEqual(xx.foo(13,15), 28)
                    self.assertEqual(xx.new().demo(), None)
                    if support.HAVE_DOCSTRINGS:
                        doc = 'This is a template module just for instruction.'
                        self.assertEqual(xx.__doc__, doc)
                    self.assertIsInstance(xx.Null(), xx.Null)
                    self.assertIsInstance(xx.Str(), xx.Str)


            unittest.main()
        z-c)r�missing_compiler_executable�skipTestr
r�os�path�joinrr�package_dirrr�	build_lib�
build_temp�sys�stdout�verboser�ensure_finalized�run�ALREADY_TESTED�type�__name__�textwrap�dedentr)r'�cmd�xx_c�xx_ext�dist�
old_stdout�codes       r)�test_build_extzBuildExtTestCase.test_build_ext:s����1�3�3���?��M�M�7�#�=�>�>�>����%�%�%��w�|�|�D�L�,�7�7���4�$��(�(���T�6�(�C�C�D�D���<����n�n�T�"�"����������
������Z�
���	$�!���C�J�	$�� � �"�"�"��G�G�I�I�I�#�C�J�J���C�J�#�#�#�#��	1��M�M�0�>�A�B�B�B�B�!�$�Z�Z�0�N��� ��|� � � �
�
��6	��t�$�$�$�$�$s�(D9�9Ec��tddi��}|�|��}tj}dt_ddlm}|�d��}d|d<	|���|t_|�|d=n"||d<n#|t_|�|d=n||d<wxYw|�t|j
��d��dS)Nr7r5�sunosr)r"�Py_ENABLE_SHARED�)rrrA�platform�distutils.sysconfigr"�getrD�
assertGreater�len�library_dirs)r'rNrK�oldr"�old_vars      r)�test_solaris_enable_sharedz+BuildExtTestCase.test_solaris_enable_sharedvs����V�T�N�+�+���n�n�T�"�"���l�����5�5�5�5�5�5��"�"�#5�6�6��+,��'�(�	;�� � �"�"�"��C�L��� �!3�4�4�3:��/�0�0��	�C�L��� �!3�4�4�3:��/�0�:�:�:�:�	
���3�s�/�0�0�!�4�4�4�4�4s� B�B%c�d�ddl}tddi��}|�|��}d�|jD��}|�d|��d|_tj�|j	d��}tj�|j	d��}t
j
|��t
j
|��|���|�||j��|�||j
��|�||j��dS)	Nrr7r5c��g|]\}}}|��	S�ra)�.0r7�short�lables    r)�
<listcomp>z3BuildExtTestCase.test_user_site.<locals>.<listcomp>�s+��%�%�%�.�D�%��4�%�%�%r*�userrU�lib�include)rrr�user_options�assertInrfr;r<r=r�mkdirrDr[�rpath�include_dirs)r'rrNrK�optionsrg�incls       r)�test_user_sitezBuildExtTestCase.test_user_site�s�������V�T�N�+�+���n�n�T�"�"��%�%��#�%�%�%���
�
�f�g�&�&�&�����g�l�l�4�>�5�1�1���w�|�|�D�N�I�6�6��
���
�
�
�
������	������	
�
�
�c�3�+�,�,�,��
�
�c�3�9�%�%�%��
�
�d�C�,�-�-�-�-�-r*c��tddgd���g}td|d���}|�|��}|���|�t
tf|j��tddgd���g}td|d���}|�|��}|���|���dS)N�foo�xxxF��optionalr5r6T)rrrrD�assertRaisesrr
rE�r'�modulesrNrKs    r)�test_optional_extensionz(BuildExtTestCase.test_optional_extension�s���
�U�U�G�e�<�<�<�=���T�'�B�B�C�C���n�n�T�"�"�����������+�\�:��'�	#�	#�	#��U�U�G�d�;�;�;�<���T�'�B�B�C�C���n�n�T�"�"�����������	�	�	�	�	r*c�"�tddgd���g}td|d���}|�|��}|���t	j��}|�tjj	��D]}|�
||j���t	jd���}|�tjj	��D]}|�
||j���|�|��}d	|_|���|�
|jgd
���|�|��}dtj	z|_|���|�
d|j��|�
d
|j��|�|��}dtj	z|_|���|�
|jddg��t|��}d|_|���|�
|jgd���|�|��}d|_|���|�
|jddg��|�|��}d|_|���|�
|jddg��|�|��}d|_|���|�
|jg��|�|��}d|_|���|�
|jddg��dS)NrrrsFrtr5r6rU)�
plat_specificzmy_lib, other_lib lastlib)�my_lib�	other_lib�lastlibzmy_lib_dir%sother_lib_dir�
my_lib_dir�
other_lib_dirzone%stwo�one�twoz
one two,three)r�r��threezone,two)r��1)r�r�z1 2r��2)rrr�finalize_optionsr�get_python_inc�splitr;r<�pathseprjrm�	libraries�assertEqualr[rl�link_objects�define�undef�	swig_opts)r'rxrNrK�
py_include�p�plat_py_includes       r)�test_finalize_optionsz&BuildExtTestCase.test_finalize_options�sP���U�U�G�e�<�<�<�=���T�'�B�B�C�C���n�n�T�"�"���������-�/�/�
��!�!�"�'�/�2�2�	/�	/�A��M�M�!�S�-�.�.�.�.�#�2��C�C�C�� �&�&�r�w��7�7�	/�	/�A��M�M�!�S�-�.�.�.�.��n�n�T�"�"��3��
������������(J�(J�(J�K�K�K��n�n�T�"�"��6���C����������
�
�l�C�$4�5�5�5��
�
�o�s�'7�8�8�8��n�n�T�"�"�����+��	������������U�E�N�3�3�3���o�o��*�������������)�+B�+B�+B�C�C�C��n�n�T�"�"����
������������l�L�%A�B�B�B��n�n�T�"�"����	������������U�E�N�3�3�3��n�n�T�"�"����
�������������+�+�+��n�n�T�"�"����
�������������c�
�3�3�3�3�3r*c���t��}|�|��}|���|�t|jd��ddg}|�t|j|��dg}|�t|j|��dg}|�t|j|��ddgddd�fg}|�|��|d	}|�|t��|�|j	d��|�
t|d
����ddgddddgd�fg}|�t|j|��d
dg|d	dd<|�|��|�|d	jdg��|�|d	j
d
g��dS)Nrr)�barrrr�)zfoo-bar�)�foo.barr�r�r�r�)�sourcesr��somerr�)r�r��3)r�r�r��macros)r�r�)r�rUr�r�)rrr�rvr�check_extensions_list�assertIsInstancerr�r��assertFalse�hasattr�undef_macros�
define_macros)r'rNrK�exts�exts     r)�test_check_extensions_listz+BuildExtTestCase.test_check_extensions_lists���~�~���n�n�T�"�"��������	
���-��3�U�	<�	<�	<�
&�u�-�����-�s�/H�$�O�O�O�
 � �����-�s�/H�$�O�O�O� � �����-�s�/H�$�O�O�O����5�%*�,�,�-�.���!�!�$�'�'�'��1�g�����c�9�-�-�-�
	
������.�.�.������f�-�-�.�.�.����5��/�5�)A�C�C�D�E�����-�s�/H�$�O�O�O� *�F�3��Q���
�8���!�!�$�'�'�'�����a��-��u�5�5�5�����a��.���=�=�=�=�=r*c��tddgd���g}td|d���}|�|��}|���|�|���dg��dS)NrrrsFrtr5r6)rrrrDr��get_source_filesrws    r)�test_get_source_filesz&BuildExtTestCase.test_get_source_files1s}���U�U�G�e�<�<�<�=���T�'�B�B�C�C���n�n�T�"�"������������-�-�/�/�%��9�9�9�9�9r*c�X�tddgd���tddgd���g}td|d���}|�|��}|���|�|�|d	j��d
��|�|�|dj��d��|�|�|d	��d
g��|�|�|d��dg��dS)Nrr�aaaFrtuföö�uuur5r6rzfoo(_d)?\..*rUuföö(_d)?\..*�
PyInit_foo�PyInitU_f_gkaa)	rrrrD�assertRegex�get_ext_filenamer7r��get_export_symbolsrws    r)�test_unicode_module_namesz*BuildExtTestCase.test_unicode_module_names8s���e�e�W�u�5�5�5��g��w��7�7�7�
���T�'�B�B�C�C���n�n�T�"�"������������-�-�g�a�j�o�>�>��P�P�P�����-�-�g�a�j�o�>�>�@Q�R�R�R�����/�/���
�;�;�l�^�L�L�L�����/�/���
�;�;�>N�=O�P�P�P�P�Pr*c���t��}|�|��}d|_|���|���|�|jd��dS)N�unix)rr�compilerrDrEr�)r'rNrKs   r)�test_compiler_optionz%BuildExtTestCase.test_compiler_optionEsb���~�~���n�n�T�"�"��������������	�	�	������v�.�.�.�.�.r*c�
�tj��}|�|�d|z��|���}tj�|d��}|�|d��td|gd���}td|gd���}|�
|��}t|��|���|�
t|�����d	��tj�|jd
��|_tj�|jd��|_tj�|�����}t	j��}t	j|��	d	|_|���|���d}t	j|��n#t	j|��wxYw|�tj�|����t5jd
��}	|�|�|	����tj�|��}
|�
|
|��d|_d|_|���|���d}|�tj�|����|�|�|	����tj�|��}
|�
|
|j��|�d��}ddi|_ |�!d��}tj�"|��d}|�
||j��d	|_tj�|�����}t	j��}t	j|��	|�!d��}t	j|��n#t	j|��wxYwtj�"|��d}tj�"|��d}
|�
|
d��dS)Nr4zfoo.czvoid PyInit_foo(void) {}
rrFrtr5r6rU�build�temptr�
EXT_SUFFIX�build_pyr�r����)#rr9r:rr;r<r=�
write_filerrrrrDr�rZ�get_outputsrr?r@�realpath�getcwd�chdir�inplacerE�
assertTrue�existsr�get_config_var�endswith�dirnamer��get_finalized_commandr>�get_ext_fullpathr�)r'rKr�c_filer�rN�
other_tmp_dir�old_wd�so_file�
ext_suffix�so_dirr�r<�lastdirs              r)�test_get_outputsz!BuildExtTestCase.test_get_outputsPs����1�3�3���?��M�M�7�#�=�>�>�>��,�,�.�.������g�w�/�/������ <�=�=�=����x�%�8�8�8���T�-0�E�3�3�4�4���n�n�T�"�"�����������������S�_�_�.�.�/�/��3�3�3�����T�\�7�;�;��
�����d�l�G�<�<�����(�(������8�8�
������
������	��C�K��G�G�I�I�I��o�o�'�'��*�G��H�V������B�H�V���������������w�/�/�0�0�0��-�l�;�;�
�����(�(��4�4�5�5�5������)�)�������/�/�/����������	�	�	��/�/�#�#�A�&���������w�/�/�0�0�0�����(�(��4�4�5�5�5������)�)��������/�/�/��,�,�Z�8�8�� "�E�{����#�#�E�*�*���w�}�}�T�"�"�1�%������s�}�-�-�-������(�(������8�8�
������
������	��'�'��.�.�D��H�V������B�H�V���������w�}�}�T�"�"�1�%���'�-�-��%�%�b�)������%�(�(�(�(�(s�85H�H�!R�R!c��tjd��}t��}|�|��}d|_ddi|j_ddg|j_tj	��}tj
�|ddd|z��}|�d��}|�
||��d	|_tj
�|d
��|_tj
�|d
dd|z��}|�d��}|�
||��|�d��}i|_dd
g|j_|�d
��}tj
�|d
ddd|z��}|�
||��d|_|�d
��}tj
�|ddd|z��}|�
||��dS)Nr�rUr��src�lxmlz	lxml.html�etreez
lxml.etreer�tmpdirr��twistedztwisted.runner.portmap�runner�portmap)rr�rrr��distributionr>�packagesr;r�r<r=r�r�r?r�)r'r�rNrK�curdir�wantedr<r�s        r)�test_ext_fullpathz"BuildExtTestCase.test_ext_fullpath�s����&�|�4�4��
�~�~���n�n�T�"�"�����(*�E�{���$�%+�[�$9���!����������f�e�V�W�s�]�C�C���#�#�L�1�1�������&�&�&��������V�X�6�6��
�����f�h���#�
�F�F���#�#�L�1�1�������&�&�&��,�,�Z�8�8��!���%.�0H�$I���!��#�#�$<�=�=������f�h�	�8�'�#�o�/�/�������&�&�&�����#�#�$<�=�=������f�i��9�s�?�K�K�������&�&�&�&�&r*�darwinztest only relevant for MacOSXc�2�|�dd��dS)Nz==)�_try_compile_deployment_target�r's r)�test_deployment_target_defaultz/BuildExtTestCase.test_deployment_target_default�s ��
	
�+�+�D�$�7�7�7�7�7r*c�J�|�t|jdd��dS)N�>z10.1)rvrr�r�s r)�test_deployment_target_too_lowz/BuildExtTestCase.test_deployment_target_too_low�s3��	
���0��/��f�	>�	>�	>�	>�	>r*c��tjd��}|rfd�|�d��D��}|dxxdz
cc<d�d�|D����}|�d|��dSdS)N�MACOSX_DEPLOYMENT_TARGETc�,�g|]}t|����Sra)�int)rb�xs  r)rezEBuildExtTestCase.test_deployment_target_higher_ok.<locals>.<listcomp>�s��>�>�>�A��Q���>�>�>r*�.r�rUc3�4K�|]}t|��V��dSr0)�str)rb�is  r)�	<genexpr>zDBuildExtTestCase.test_deployment_target_higher_ok.<locals>.<genexpr>�s(���� ;� ;�A��Q��� ;� ;� ;� ;� ;� ;r*�<)rr�r�r=r�)r'�	deptargets  r)� test_deployment_target_higher_okz1BuildExtTestCase.test_deployment_target_higher_ok�s���
�,�-G�H�H�	��	@�>�>�����)=�)=�>�>�>�I��b�M�M�M�Q��M�M�M���� ;� ;�� ;� ;� ;�;�;�I��/�/��Y�?�?�?�?�?�	@�	@r*c��tj}|���t_|�ttd|��|�-tj�d��r
tjd=n|tjd<tj�|jd��}t|d��5}|�
tjd|z����ddd��n#1swxYwYtjd��}tt!t"|�d��dd�����}|dd�d	krd
|z}nt'|��dkrd|z}nd|z}t)d
|gd|��g���}t+d
|gd���}|j|_|�|��}|j|_|j|_	t4j}	t8jst=��t4_	|���|� ��|	t4_dS#|	t4_wxYw#tB$r|�"d��YdSwxYw)N�environr�zdeptargetmodule.c�wz�                #include <AvailabilityMacros.h>

                int dummy;

                #if TARGET %s MAC_OS_X_VERSION_MIN_REQUIRED
                #else
                #error "Unexpected target"
                #endif

            r�r�)�
r�z	%02d%01d0z
%02d%02d00z%02d0000r�z	-DTARGET=)�extra_compile_argsr6z*Wrong deployment target during compilation)#r;r��copy�
addCleanup�setattrrXr<r=r�open�writerIrJrr��tuple�mapr�r�rZrrr>rr?r@rArBrrCrrDrEr
�fail)
r'�operator�target�orig_environ�deptarget_c�fp�
deptarget_extrNrKrOs
          r)r�z/BuildExtTestCase._try_compile_deployment_target�s����z��!�&�&�(�(��
������Y��=�=�=��>��z�~�~�8�9�9�
;��J�9�:��5;�B�J�1�2��g�l�l�4�<�1D�E�E��
�+�s�
#�
#�	�r��H�H�X�_�
&��
&�
�
�

�

�

�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�*D�E�E���s�3����S� 1� 1�!�A�#� 6�7�7�8�8���"�1�"�:�� � � �6�)�F�F��6�{�{�a���%��.���$�f�,��!��
�M�M�/5�v� 7�8�
�
�
�
�
��)�?�
�
���� �<����n�n�T�"�"�����
�����	D���J��?�
(�%�Z�Z��
�
(��$�$�&�&�&����	�	�	�'��
�
�
��Z��
�'�'�'�'���	D�	D�	D��I�I�B�C�C�C�C�C�C�	D���s<�+C7�7C;�>C;�)0I!�(I�I!�I�I!�!J�J)rH�
__module__�__qualname__rr.rr�requires_subprocessrQr^rpr�requires_working_threadingryr�r�r�r�r�r�r��unittest�
skipUnlessrArVr�r�r�r��
__classcell__�r(s@r)rrs�������>�>�>�>�>� 1�1�1�1�1�*�*�*�!�W� �"�"�9%�9%�#�"�9%�v5�5�5�*.�.�.�81��0�2�2���3�2��"F4�F4�F4�P.>�.>�.>�`:�:�:�Q�Q�Q�	/�	/�	/�!�W� �"�"�@)�@)�#�"�@)�D$'�$'�$'�N�X�����1�3R�S�S�8�8�T�S�8��X�����1�3R�S�S�>�>�T�S�>��X�����1�3R�S�S�
@�
@�T�S�
@�DD�DD�DD�DD�DD�DD�DDr*rc���eZdZ�fd�Z�xZS)�ParallelBuildExtTestCasec�H��t��j|i|��}d|_|S)NT)rr�parallel)r'r1r2rr(s    �r)rz"ParallelBuildExtTestCase.build_exts,���%�E�G�G�%�t�6�v�6�6�	�!�	���r*)rHrrrrr
s@r)rrs8���������������r*rc�$�tj��}|�tj���t
����|�tj���t����|Sr0)r
�	TestSuite�addTest�
TestLoader�loadTestsFromTestCaserr)�suites r)�
test_suiter$si���� � �E�	�M�M�(�%�'�'�=�=�>N�O�O�P�P�P�	�M�M�(�%�'�'�=�=�>V�W�W�X�X�X��Lr*�__main__)&rAr;�iorrI�distutils.corer�distutils.command.build_extr�	distutilsr�distutils.tests.supportrr	r
r�distutils.extensionr�distutils.errorsr
rrrr
�testr�test.supportr�test.support.script_helperrrrF�TestCaserrrrH�run_unittestrar*r)�<module>r&s��
�
�
�
�	�	�	�	�����������'�'�'�'�'�'�1�1�1�1�1�1�������G�G�G�G�G�G�G�G�G�G�G�G�)�)�)�)�)�)�����������������������"�"�"�"�"�"�7�7�7�7�7�7�)�)�)�)�)�)���~D�~D�~D�~D�~D�~�&��(�~D�~D�~D�B�����/��������z����G���"�"�"�"�"��r*