Viewing File: /opt/hc_python/lib/python3.12/site-packages/greenlet/tests/__pycache__/__init__.cpython-312.pyc

�

`�*j&���dZddlZddlZddlZddlZddlmZddlmZddlm	Z
ddlmZddlmZddl
Z
ddlmZdd	lmZdd
lmZddlmZdd
lmZej,dddk\Zej,dddk\Zej,dddk\Zej4j7d�Zej:j=d�Zej:j=d�xseZ ej:j=d�Z!e xse!Z"ej:j=d�Z#e$ejJd��Z&Gd�de'�Z(Gd�dejRe(��Z)y)z
Tests for greenlet.

�N)�collect)�get_objects)�active_count)�sleep)�time)�greenlet)�
getcurrent)�get_pending_cleanup_count)�get_total_main_greenlets�)�	leakcheck�)��)r�
)r��win�GITHUB_ACTIONS�TRAVIS�APPVEYOR�GREENLET_MANYLINUX�Py_GIL_DISABLEDc��eZdZd�Zy)�TestCaseMetaClassc��d}t|j��D]P\}}|jd�s�t|�s�$|j	|�|rtj|�}|||<�Rtj||||�S)NT�test)	�list�items�
startswith�callable�popr
�
wrap_refcount�type�__new__)�cls�	classname�bases�	classDict�check_totalrefcount�key�values       �H/opt/hc_python/lib64/python3.12/site-packages/greenlet/tests/__init__.pyr$zTestCaseMetaClass.__new__2sw��
#��
�y���0�1�J�C���~�~�f�%�(�5�/��
�
�c�"�&�%�3�3�E�:�E�!&�	�#��2��|�|�C��E�9�=�=�N)�__name__�
__module__�__qualname__r$�r-r,rr/s��>r-rc�z��eZdZdZdZ		dd�Zedfd�ZdZdZ	dZ
dZd�Z�fd	�Z
�fd
�Zd�Zd�Zdd
�Zdd�Z�xZS)�TestCaseg����MbP?rc�0�|xs|j}|xs|j}|j}t|�t	�|j
z}t
�s&t�|kDs|js�t�|kDr�t|�t	�|kDrCtd�td|dt��td|dt��	t�yt
�r�ft�|kDr�t|jst�|kDr��t�y)NzTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for only)�threads_before_test�main_greenlets_before_test�cleanup_attempt_sleep_durationrr�cleanup_max_sleep_secondsr
�active_thread_count�expect_greenlet_leakr�printr)�self�initial_active_threads�initial_main_greenlets�
sleep_time�
quit_afters     r,�wait_for_pending_cleanupsz"TestCase.wait_for_pending_cleanupsJs���"8�!S�4�;S�;S��!7�!Z�4�;Z�;Z���8�8�
�	�j���V�d�<�<�<�
�*�+�&�(�+A�A��1�1�0�2�5K�K��*���v�
�"��,�-��1�3I��0�2�4��1�3I��5�7�9���	�*�+�&�(�+A�A��1�1�0�2�5K�K�	�	r-Tc���td�D]}t��|rt�fd�t�D��St�fd�t�D��S)Nrc3�<�K�|]}t|��urd���y�w�rN)r#��.0�x�kinds  �r,�	<genexpr>z)TestCase.count_objects.<locals>.<genexpr>rs$������&�A���7�d�?��&�s�c3�:�K�|]}t|��rd���y�wrD)�
isinstancerEs  �r,rIz)TestCase.count_objects.<locals>.<genexpr>xs#�����
�"���!�T�"�
�"�s�)�ranger�sumr)r<rH�
exact_kind�_s `  r,�
count_objectszTestCase.count_objectslsU����q��A��I�����$����
��
� �]�
�
�	
r-rFc�.�|jtd�S)zJ
        Find all the greenlets and subclasses tracked by the GC.
        F)rP�RawGreenlet)r<s r,�count_greenletszTestCase.count_greenlets�s���!�!�+�u�5�5r-c����t�|��t�t�|_t�|_|j|j|j�|j�|_	y�N)
�super�setUpr	r9r5rr6rArS�greenlets_before_test�r<�	__class__s �r,rWzTestCase.setUp�sV���	��
����#6�#8�� �*B�*D��'��&�&�t�'?�'?��A`�A`�a�%)�%9�%9�%;��"r-c���t|dd�ry|j|j|j�t�|��y)N�skipTearDownF)�getattrrAr5r6rV�tearDownrYs �r,r^zTestCase.tearDown�s9����4���/���&�&�t�'?�'?��A`�A`�a�
���r-c�V�ddl}ts|j|jf}|Sd}|S)Nr)rl	l)�signal�WIN�SIGABRT�SIGSEGV)r<r`�
expected_exits   r,�,get_expected_returncodes_for_aborted_processz5TestCase.get_expected_returncodes_for_aborted_process�sB���J�
�^�^�O�
�^�^�O�

�
���
�	��r-c��	tj�j�jS#t$r}tjd�|�d}~wwxYw)a�
        Return the current process's USS in bytes.

        uss is available on Linux, macOS, Windows. Also known as
        "Unique Set Size", this is the memory which is unique to a
        process and which would be freed if the process was terminated
        right now.

        If this is not supported by ``psutil``, this raises the
        :exc:`unittest.SkipTest` exception.
        zuss not supportedN)�psutil�Process�memory_full_info�uss�AttributeError�unittest�SkipTest)r<�es  r,�get_process_usszTestCase.get_process_uss�sJ��	@��>�>�#�4�4�6�:�:�:���	@��#�#�$7�8�a�?��	@�s�+.�	A�A
�
Ac��ddl}tjjtjj	t
�|�}	|j
tj|gd|j��S#|j$rJ}|rBtd�td|�td�t|j�td��d}~wwxYw)Nrzutf-8)�encoding�stderrz-----zFailed to run scriptz~~~~~z------)
�
subprocess�os�path�join�dirname�__file__�check_output�sys�
executable�STDOUT�CalledProcessErrorr;�output)r<�script_name�show_outputrs�script�exs      r,�
run_scriptzTestCase.run_script�s����������G�G�O�O�H�%��
��
	��*�*�C�N�N�F�+C�4;�2<�2C�2C�+�E�
E���,�,�	���g���,�f�5��g���b�i�i� ��h����	�s�-A5�5C�AC	�	Cc��ddl}|j|j�5}|j|d��}|}ddd�|�|j	�}|jjj|�|jS#1swY�MxYw)NrF)r�)rs�assertRaisesr}r�re�assertIn�	exception�
returncode)r<r�	exitcodesrs�excr~�__traceback_info__s       r,�assertScriptRaiseszTestCase.assertScriptRaises�sy���
�
�
�z�<�<�
=���_�_�[�e�_�D�F�!'��>����I�I�K�I��
�
�c�m�m�.�.�	�:��}�}��>�
=�s�B�B)NN)TrU)r.r/r0r7r8rArrPrXr5r6r:rSrWr^reror�r��
__classcell__)rZs@r,r3r3Esh���%*�"� !��:>�9=� �D"&�$�
�$����!"�� ��6�<��+�Z@�"�*r-r3)�	metaclass)*�__doc__rtrz�	sysconfigrl�gcrr�	threadingrr9rrrgrrRr	�greenlet._greenletr
r�r
�version_info�PY312�PY313�PY314�platformrra�environ�get�RUNNING_ON_GITHUB_ACTIONS�RUNNING_ON_TRAVIS�RUNNING_ON_APPVEYOR�
RUNNING_ON_CI�RUNNING_ON_MANYLINUX�bool�get_config_var�RUNNING_ON_FREETHREAD_BUILDr#rr3r1r-r,�<module>r�s2���
�
�����9���
�,��8�7������!���'������!���'��	����!���'��	�l�l���e�$���J�J�N�N�+;�<���J�J�N�N�8�,�I�0I���j�j�n�n�Z�0��!�8�%8�
��z�z�~�~�&:�;��#�#;�9�#;�#;�<M�#N�O��>��>�,s�x� � �,=�sr-
Back to Directory File Manager