
    h
                         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       @D:\EasyAligner\venv\Lib\site-packages\greenlet/tests/test_cpp.pyr   zCPPTests.test_exception_switch   sp    	qA!!"5"K"KLAHHQKQ  i(DAqQXXZ+ )    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    GGOOH%#
 z&RU?V\bc!z<<=## !(( > ]]IIKbmm]35ryyAyy >=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23K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HMMO r   