Your IP : 216.73.216.110
U
e5d��@s0ddlZddlZddlmZGdd�de�ZdS)�N�)�TestCasecs�eZdZd�fdd� Zdd�Zdd�Zdd �Zd
d�Zdd
�Zdd�Z dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zd �fdd� Z�ZS)!�IsolatedAsyncioTestCase�runTestcst��|�d|_d|_dS�N)�super�__init__�_asyncioTestLoop�_asyncioCallsQueue)�selfZ
methodName�� __class__��+/usr/lib64/python3.8/unittest/async_case.pyr"sz IsolatedAsyncioTestCase.__init__c�sdSrr�rrrr�
asyncSetUp'sz"IsolatedAsyncioTestCase.asyncSetUpc�sdSrrrrrr�
asyncTearDown*sz%IsolatedAsyncioTestCase.asyncTearDowncOs|j|f|�|�dSr)Z
addCleanup)r�func�args�kwargsrrr�addAsyncCleanup-s
z'IsolatedAsyncioTestCase.addAsyncCleanupcCs|��|�|j�dSr)ZsetUp�
_callAsyncrrrrr�
_callSetUp<sz"IsolatedAsyncioTestCase._callSetUpcCs|�|�dSr��_callMaybeAsync)r�methodrrr�_callTestMethod@sz'IsolatedAsyncioTestCase._callTestMethodcCs|�|j�|��dSr)rrZtearDownrrrr�
_callTearDownCsz%IsolatedAsyncioTestCase._callTearDowncOs|j|f|�|�dSrr)rZfunctionrrrrr�_callCleanupGsz$IsolatedAsyncioTestCase._callCleanupcOs0|||�}|j��}|j�||f�|j�|�Sr)r �
create_futurer
�
put_nowait�run_until_complete�rrrr�ret�futrrrrJs
z"IsolatedAsyncioTestCase._callAsynccOsB|||�}t�|�r:|j��}|j�||f�|j�|�S|SdSr)�inspectZisawaitabler rr
r r!r"rrrrRs
z'IsolatedAsyncioTestCase._callMaybeAsyncc
�s�t��|_}|�d�|��IdH}|��|dkr:dS|\}}z |IdH}|��s`|�|�Wqttfk
r|�Yqt tj
fk
r�}z|��s�|�|�W5d}~XYqXqdSr)�asyncioZQueuer
Z
set_result�getZ task_done� cancelled�
SystemExit�KeyboardInterrupt�
BaseExceptionZCancelledErrorZ
set_exception)rr$ZqueueZqueryZ awaitabler#Zexrrr�_asyncioLoopRunner\s
z*IsolatedAsyncioTestCase._asyncioLoopRunnercCsJt��}t�|�|�d�||_|��}|�|�|��|_|� |�dS)NT)
r&Znew_event_loop�set_event_loopZ set_debugr rZcreate_taskr,Z_asyncioCallsTaskr!)r�loopr$rrr�_setupAsyncioLoopos
z)IsolatedAsyncioTestCase._setupAsyncioLoopc Cs�|j}d|_|j�d�|�|j���z�t�|�}|s@W�vdS|D]}|� �qD|�tj
||dd���|D]0}|��r|qn|��dk rn|�
d|��|d��qn|�|���W5t�d�|��XdS)NT)r.Zreturn_exceptionsz(unhandled exception during test shutdown)�message� exception�task)r r
r r!�joinr&r-�closeZ all_tasksZcancelZgatherr(r1Zcall_exception_handlerZshutdown_asyncgens)rr.Z to_cancelr2rrr�_tearDownAsyncioLoopys2
��
z,IsolatedAsyncioTestCase._tearDownAsyncioLoopNcs(|��zt��|�W�S|��XdSr)r/r5r�run)r�resultrrrr6�szIsolatedAsyncioTestCase.run)r)N)�__name__�
__module__�__qualname__rrrrrrrrrrr,r/r5r6�
__classcell__rrrrrs
"r)r&r%Zcaserrrrrr�<module>s
?>