Ë
    v¹1h°
  ã                   óœ   — d dl mZ d dl m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)é    )Úprint_function)Úabsolute_importNé   )Ú_test_extension_cpp)ÚTestCase)ÚWINc                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Z ej                  e	d«      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       úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/greenlet/tests/test_cpp.pyr   zCPPTests.test_exception_switch   sz   € Øˆ	Ü�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)r8   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 r:   )r8   r   Útest_exception_throw_stdr<   s    r   Ú#test_unhandled_std_exception_abortsz,CPPTests.test_unhandled_std_exception_aborts1   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.)r8   r.   )r   r0   s     r   Ú8test_unhandled_std_exception_as_greenlet_function_abortszACPPTests.test_unhandled_std_exception_as_greenlet_function_aborts5   s)   € ð ×2Ñ2Ð3KÓLˆØ�‰ð
 (Øõ	
r   c                 ó&   — | j                  d«       y )NÚ*run_unhandled_exception_in_greenlet_aborts)r8   r<   s    r   Ú+test_unhandled_exception_in_greenlet_abortsz4CPPTests.test_unhandled_exception_in_greenlet_abortsC   s   € à×)Ñ)Ð*VÕWr   N)r&   Ú
__module__Ú__qualname__r   r8   r=   r@   ÚunittestÚskipIfr   rC   rF   © r   r   r
   r
      sA   „ ò,òò.[òXð €X‡_�_�SÐ?Ó@ñ

ó Að

óXr   r
   Ú__main__)Ú
__future__r   r   r(   rI   r   Ú r   r   r   r
   r&   ÚmainrK   r   r   ú<module>rP      sF   ðÝ %Ý &ã Û ã Ý !Ý Ý ô9Xˆxô 9Xðx ˆzÒØ€H‡M�M…Oð r   