o
    ce                     @   s   d dl mZ d dl mZ d dlZd dlmZ d dlZddlmZ ddlm	Z	 dd	 Z
G d
d de	Zedkr>ed  dS dS )    )print_function)absolute_importN)Process   )_test_extension_cpp)TestCasec                  C   s   dd } t  | }|  d S )Nc                   S   s   t t j d S N)r   Z"test_exception_switch_and_do_in_g2test_exception_throw r
   r
   GD:\Projects\ConvertPro\env\Lib\site-packages\greenlet/tests/test_cpp.py_   s   z5run_unhandled_exception_in_greenlet_aborts.<locals>._)greenletswitch)r   g1r
   r
   r   *run_unhandled_exception_in_greenlet_aborts   s   
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CPPTestsc                 C   sX   g }t dD ]}ttj}|| || qt|D ]\}}| | | qd S )N   )ranger   r   test_exception_switchr   append	enumerateassertEqual)selfZ	greenletsigr
   r
   r   r      s   
zCPPTests.test_exception_switchc                 C   sZ   dd l }|jd}t|d}|  |d |s"tj tj fnd}| 	|j
| d S )Nr   win)target
   )   )sysplatform
startswithr   startjoinsignalSIGABRTSIGSEGVZassertInexitcode)r   r   r   ZWINpZexpected_exitr
   r
   r   _do_test_unhandled_exception!   s   


z%CPPTests._do_test_unhandled_exceptionc                 C   s   |  tj d S r   )r)   r   r	   r   r
   r
   r   test_unhandled_exception_abortsE   s   z(CPPTests.test_unhandled_exception_abortsc                 C   s   |  t d S r   )r)   r   r*   r
   r
   r   +test_unhandled_exception_in_greenlet_abortsJ   s   z4CPPTests.test_unhandled_exception_in_greenlet_abortsN)__name__
__module____qualname__r   r)   r+   r,   r
   r
   r
   r   r      s
    	$r   __main__Zunittest)
__future__r   r   r$   multiprocessingr   r    r   r   r   r   r-   
__import__mainr
   r
   r
   r   <module>   s    8