ó
    ÷Þ j\  ã                   ó–   • S SK r S SKrS SKrS SKrS SKrSSKJr  SSKJr  SSKJr   " S S\5      r	\
S:X  a  \R                  " 5         gg)	é    Né   )ÚWIN)ÚTestCase)Ú_test_extension_cppc                   ój   • \ rS rSrS rS rS rS r\R                  " \
S5      S 5       rS rS	 rS
rg)ÚCPPTestsé   c                 ó   • / n[        S5       HI  n[        R                  " [        R                  5      nUR	                  U5        UR                  U5        MK     [        U5       H%  u  p#U R                  UR	                  5       U5        M'     g )Né   )ÚrangeÚgreenletr   Útest_exception_switchÚswitchÚappendÚ	enumerateÚassertEqual)ÚselfÚ	greenletsÚiÚgs       ÚQ/var/www/html/gaurav/venv/lib/python3.13/site-packages/greenlet/tests/test_cpp.pyr   ÚCPPTests.test_exception_switch   sn   € Øˆ	Ü�q–ˆAÜ×!Ò!Ô"5×"KÑ"KÓLˆAØ�H‰H�QŒKØ×Ñ˜QÖñ ô ˜iÖ(‰DˆAØ×Ñ˜QŸX™X›Z¨Ö+ò )ó    c                 ób  • SS K nSS KnUR                  R                  UR                  R	                  [
        5      S5      nUR                  U[        U[        5      (       d  UR                  OU/nUnU R                  [        R                  5       n[        R                  " US[        R                  S9  S S S 5        WR                  nU R!                  5       n	U R#                  UR$                  U	5        U R#                  SUR&                  5        UR&                  $ ! , (       d  f       Nn= f)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_exceptionÚ%CPPTests._do_test_unhandled_exception   sâ   € ÛÛØ—‘—‘Ø�G‰G�O‰OœHÓ%Ø#ó
ˆð —‘ ¼zÈ&ÔRU×?VÑ?V¨¯ªÐ\bÐcˆØ!ÐØ×Ñœz×<Ñ<Ô=ÀÜ×#Ò#ØØ Ü!×(Ñ(ò÷ >ð �]‰]ˆØ×IÑIÓKˆØ�‰�b—m‘m ]Ô3Ø�‰Ð5°r·y±yÔAØ�y‰yÐ÷ >Õ=ús   Â%D Ä 
D.c                 óB   • U R                  [        R                  5        g ©N)r8   r   Útest_exception_throw_nonstd©r   s    r   Ú&test_unhandled_nonstd_exception_abortsÚ/CPPTests.test_unhandled_nonstd_exception_aborts.   s   € à×)Ñ)Ô*=×*YÑ*YÕZr   c                 óB   • U R                  [        R                  5        g r;   )r8   r   Útest_exception_throw_stdr=   s    r   Ú#test_unhandled_std_exception_abortsÚ,CPPTests.test_unhandled_std_exception_aborts2   s   € à×)Ñ)Ô*=×*VÑ*VÕWr   z#XXX: This does not crash on Windowsc                 óJ   • U R                  S5      nU R                  SU5        g )NÚrun_as_greenlet_targetzThrown from an extension.)r8   r.   )r   r0   s     r   Ú8test_unhandled_std_exception_as_greenlet_function_abortsÚACPPTests.test_unhandled_std_exception_as_greenlet_function_aborts6   s)   € ð ×2Ñ2Ð3KÓLˆØ�‰ð
 (Øõ	
r   c                 ó&   • U R                  S5        g )NÚ*run_unhandled_exception_in_greenlet_aborts)r8   r=   s    r   Ú+test_unhandled_exception_in_greenlet_abortsÚ4CPPTests.test_unhandled_exception_in_greenlet_abortsD   s   € à×)Ñ)Ð*VÕWr   c                 ó’  • S n[         R                  " 5         [        R                  " S5      n[	        S5       H7  nU R                  [        5         [        R                  " U5        S S S 5        M9     [         R                  " 5         [        R                  " S5      nXB-
  nU R                  SU5        g ! , (       d  f       MŒ  = f)Nc                  ó   • [        S5      e)NÚboom)Ú
ValueError© r   r   ÚraiserÚECPPTests.test_leak_test_exception_switch_and_do_in_g2.<locals>.raiserJ   s   € Ü˜VÓ$Ð$r   r   iè  r   )
ÚgcÚcollectÚobjgraphÚcountr   r'   rO   r   Ú"test_exception_switch_and_do_in_g2r   )r   rQ   ÚbeforeÚ_ÚafterÚleakeds         r   Ú,test_leak_test_exception_switch_and_do_in_g2Ú5CPPTests.test_leak_test_exception_switch_and_do_in_g2I   s‹   € ò	%ô 	�
Š
ŒÜ—’ 
Ó+ˆä�t–ˆAØ×"Ñ"¤:Õ.Ü#×FÒFÀvÔN÷ /Ñ.ñ ô 	�
Š
ŒÜ—’˜zÓ*ˆØ‘ˆØ×Ñ˜˜FÕ#÷ /Ö.ús   ÁB7Â7
C	rP   N)r&   Ú
__module__Ú__qualname__Ú__firstlineno__r   r8   r>   rB   ÚunittestÚskipIfr   rF   rJ   r\   Ú__static_attributes__rP   r   r   r   r      sD   † ò,òò.[òXð ‡_‚_�SÐ?Ó@ñ

ó Að

òXõ
$r   r   Ú__main__)rS   r(   ra   r   rU   Ú r   r   r   r   r&   ÚmainrP   r   r   Ú<module>rg      sD   ðÛ 	Û Û ã Û å Ý Ý !ôJ$ˆxô J$ðZ ˆzÓØ‡M‚M…Oð r   