
    i\                         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                     dS dS )	    N   )WIN)TestCase)_test_extension_cppc                   f    e Zd Zd Zd Zd Zd Z ej        e	d          d             Z
d Zd Zd	S )
CPPTestsc                 8   g }t          d          D ]J}t          j        t          j                  }|                    |           |                    |           Kt          |          D ]-\  }}|                     |                                |           .d S )N   )rangegreenletr   test_exception_switchswitchappend	enumerateassertEqual)self	greenletsigs       g/var/www/html/crypto-mining-system/backend/venv/lib/python3.11/site-packages/greenlet/tests/test_cpp.pyr   zCPPTests.test_exception_switch   s    	q 	  	 A!"5"KLLAHHQKKKQi(( 	, 	,DAqQXXZZ++++	, 	,    c                 2   dd l }dd l}|j                            |j                            t
                    d          }|j        |t          |t                    s|j	        n|g}|}| 
                    t          j                  5 }t          j        |dt          j                   d d d            n# 1 swxY w Y   |j        }|                                 }	|                     |j        |	           |                     d|j                   |j        S )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   sH   			


GOOH%%#
 
 z&RU?V?V(b\bc!z<== 	# !(   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]IIKKbm]3335ryAAAys   "B66B:=B:c                 D    |                      t          j                   d S N)r6   r   test_exception_throw_nonstdr   s    r   &test_unhandled_nonstd_exception_abortsz/CPPTests.test_unhandled_nonstd_exception_aborts.   s     ))*=*YZZZZZr   c                 D    |                      t          j                   d S r8   )r6   r   test_exception_throw_stdr:   s    r   #test_unhandled_std_exception_abortsz,CPPTests.test_unhandled_std_exception_aborts2   s     ))*=*VWWWWWr   z#XXX: This does not crash on Windowsc                 \    |                      d          }|                     d|           d S )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23KLL
 (	
 	
 	
 	
 	
r   c                 0    |                      d           d S )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WWWWWr   c                    d }t          j                     t          j        d          }t	          d          D ]H}|                     t                    5  t          j        |           d d d            n# 1 swxY w Y   It          j                     t          j        d          }||z
  }| 	                    d|           d S )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 	O 	OA"":.. O O#FvNNNO O O O O O O O O O O O O O O 	
z**F#####s   A77A;	>A;	N)r$   
__module____qualname__r   r6   r;   r>   unittestskipIfr   rA   rD   rT   rI   r   r   r   r      s        , , ,  .[ [ [X X X X_S?@@

 

 A@

X X X
$ $ $ $ $r   r   __main__)rK   r&   rW   r   rM    r   r   r   r   r$   mainrI   r   r   <module>r\      s    				                    ! ! ! ! ! !J$ J$ J$ J$ J$x J$ J$ J$Z zHMOOOOO r   