Ë
    V.j·  ã                   ó”   — 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mZ ddlmZ  G d„ de«      Z	e
dk(  r ej                  «        yy)	é    Né   )ÚWIN)ÚTestCase)Ú_test_extension_cppc                   ób   — e Zd Zd„ Zd„ Zd„ Zd„ Z ej                  e	d«      d„ «       Z
d„ Zd„ Zy	)
ÚCPPTestsc                 ó  — g }t        d«      D ]G  }t        j                  t        j                  «      }|j	                  |«       |j                  |«       ŒI t        |«      D ]%  \  }}| j                  |j	                  «       |«       Œ' y )Né   )ÚrangeÚgreenletr   Útest_exception_switchÚswitchÚappendÚ	enumerateÚassertEqual)ÚselfÚ	greenletsÚiÚgs       úYC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\greenlet/tests/test_cpp.pyr   zCPPTests.test_exception_switch   sp   € Øˆ	Ü�q–ˆAÜ×!Ñ!Ô"5×"KÑ"KÓLˆAØ�H‰H�QŒKØ×Ñ˜QÕð ô ˜iÖ(‰DˆAˆqØ×Ñ˜QŸX™X›Z¨Õ+ñ )ó    c                 óR  — dd l }dd l}|j                  j                  |j                  j	                  t
        «      d«      }|j                  |t        |t        «      s|j                  n|g}|}| j                  t        j                  «      5 }t        j                  |dt        j                  ¬«       d d d «       j                  }| j!                  «       }	| j#                  |j$                  |	«       | j#                  d|j&                  «       |j&                  S # 1 sw Y   ŒixY w)Nr   zfail_cpp_exception.pyzutf-8)ÚencodingÚstderrzfail_cpp_exception is running)ÚosÚsysÚpathÚjoinÚdirnameÚ__file__Ú
executableÚ
isinstanceÚstrÚ__name__ÚassertRaisesÚ
subprocessÚCalledProcessErrorÚcheck_outputÚSTDOUTÚ	exceptionÚ,get_expected_returncodes_for_aborted_processÚassertInÚ
returncodeÚoutput)
r   Útargetr   r   ÚscriptÚargsÚ__traceback_info__ÚexcÚexÚexpected_exits
             r   Ú_do_test_unhandled_exceptionz%CPPTests._do_test_unhandled_exception   sß   € ÛÛØ—‘—‘Ø�G‰G�O‰OœHÓ%Ø#ó
ˆð —‘ ¼zÈ&ÔRUÔ?V¨¯ªÐ\bÐcˆØ!ÐØ×Ñœz×<Ñ<Ô=ÀÜ×#Ñ#ØØ Ü!×(Ñ(õ÷ >ð �]‰]ˆØ×IÑIÓKˆØ�‰�b—m‘m ]Ô3Ø�‰Ð5°r·y±yÔAØ�y‰yÐ÷ >Ð=ús   Â'DÄD&c                 óB   — | j                  t        j                  «       y ©N)r6   r   Útest_exception_throw_nonstd©r   s    r   Ú&test_unhandled_nonstd_exception_abortsz/CPPTests.test_unhandled_nonstd_exception_aborts.   s   € à×)Ñ)Ô*=×*YÑ*YÕZr   c                 óB   — | j                  t        j                  «       y r8   )r6   r   Útest_exception_throw_stdr:   s    r   Ú#test_unhandled_std_exception_abortsz,CPPTests.test_unhandled_std_exception_aborts2   s   € à×)Ñ)Ô*=×*VÑ*VÕWr   z#XXX: This does not crash on Windowsc                 óJ   — | j                  d«      }| j                  d|«       y )NÚrun_as_greenlet_targetzThrown from an extension.)r6   r,   )r   r.   s     r   Ú8test_unhandled_std_exception_as_greenlet_function_abortszACPPTests.test_unhandled_std_exception_as_greenlet_function_aborts6   s)   € ð ×2Ñ2Ð3KÓLˆØ�‰ð
 (Øõ	
r   c                 ó&   — | j                  d«       y )NÚ*run_unhandled_exception_in_greenlet_aborts)r6   r:   s    r   Ú+test_unhandled_exception_in_greenlet_abortsz4CPPTests.test_unhandled_exception_in_greenlet_abortsD   s   € à×)Ñ)Ð*VÕWr   c                 óz  — d„ }t        j                  «        t        j                  d«      }t	        d«      D ]5  }| j                  t        «      5  t        j                  |«       d d d «       Œ7 t        j                  «        t        j                  d«      }||z
  }| j                  d|«       y # 1 sw Y   Œ‚xY w)Nc                  ó   — t        d«      ‚)NÚboom)Ú
ValueError© r   r   ÚraiserzECPPTests.test_leak_test_exception_switch_and_do_in_g2.<locals>.raiserJ   s   € Ü˜VÓ$Ð$r   r   iè  r   )
ÚgcÚcollectÚobjgraphÚcountr   r%   rH   r   Ú"test_exception_switch_and_do_in_g2r   )r   rJ   ÚbeforeÚ_ÚafterÚleakeds         r   Ú,test_leak_test_exception_switch_and_do_in_g2z5CPPTests.test_leak_test_exception_switch_and_do_in_g2I   s�   € ò	%ô 	�
‰
ŒÜ—‘ 
Ó+ˆä�t–ˆAØ×"Ñ"¤:Õ.Ü#×FÑFÀvÔN÷ /Ð.ð ô 	�
‰
ŒÜ—‘˜zÓ*ˆØ˜‘ˆØ×Ñ˜˜FÕ#÷ /Ð.ús   ÁB1Â1B:	N)r$   Ú
__module__Ú__qualname__r   r6   r;   r>   ÚunittestÚskipIfr   rA   rD   rT   rI   r   r   r   r      sF   „ ò,òò.[òXð €X‡_�_�SÐ?Ó@ñ

ó Að

òXó
$r   r   Ú__main__)rK   r&   rW   r   rM   Ú r   r   r   r   r$   ÚmainrI   r   r   Ú<module>r\      sF   ðÛ 	Û Û ã Û å Ý Ý !ôJ$ˆxô J$ðZ ˆzÒØ€H‡M�M…Oð r   