a
    Zg
                     @   sx   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	 d	eZ
ed
krte  dS )    )print_function)absolute_importN   )_test_extension_cpp)TestCase)WINc                   @   sH   e Zd Zdd Zdd Zdd Zdd Zee	d	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   )rangegreenletr   test_exception_switchswitchappend	enumerateassertEqual)selfZ	greenletsig r   e/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/greenlet/tests/test_cpp.pyr      s    
zCPPTests.test_exception_switchc           
      C   s   dd l }dd l}|j|jtd}|j|t|ts<|j	n|g}|}| 
tj"}tj|dtjd W d    n1 sz0    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	exceptionZ,get_expected_returncodes_for_aborted_processassertIn
returncodeoutput)
r   targetr   r   scriptargsZ__traceback_info__excexZexpected_exitr   r   r   _do_test_unhandled_exception   s&    
$z%CPPTests._do_test_unhandled_exceptionc                 C   s   |  tj d S N)r0   r   Ztest_exception_throw_nonstdr   r   r   r   &test_unhandled_nonstd_exception_aborts-   s    z/CPPTests.test_unhandled_nonstd_exception_abortsc                 C   s   |  tj d S r1   )r0   r   Ztest_exception_throw_stdr2   r   r   r   #test_unhandled_std_exception_aborts1   s    z,CPPTests.test_unhandled_std_exception_abortsz#XXX: This does not crash on Windowsc                 C   s   |  d}| d| d S )NZrun_as_greenlet_targetzThrown from an extension.)r0   r(   )r   r*   r   r   r   8test_unhandled_std_exception_as_greenlet_function_aborts5   s
    
zACPPTests.test_unhandled_std_exception_as_greenlet_function_abortsc                 C   s   |  d d S )NZ*run_unhandled_exception_in_greenlet_aborts)r0   r2   r   r   r   +test_unhandled_exception_in_greenlet_abortsC   s    z4CPPTests.test_unhandled_exception_in_greenlet_abortsN)r!   
__module____qualname__r   r0   r3   r4   unittestZskipIfr   r5   r6   r   r   r   r   r      s   	

r   __main__)
__future__r   r   r#   r9   r    r   r   r   r   r!   mainr   r   r   r   <module>   s   <