Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/test_tasks.cpython-35.opt-2.pyc



���]	-�@suddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddlm
Z
ddlZddlmZddlm
Z
yddlmZWn"ek
r�ddlmZYnXyddlmZWnKek
rNyddlmZWn"ek
rIddlmZYnXYnXejdd	fkZejdd
fkZejdd��Zejd
d��Zddd�ZGdd�d�ZGdd�de
j�Z Gdd�d�Z!Gdd�de!e
j�Z"Gdd�de!e
j�Z#Gdd�de
j�Z$Gdd�de
j�Z%e&d krqej'�dS)!�N)�mock)�
coroutines)�
test_utils)�support)�test_support)�assert_python_ok���cCsdS)N�rrr�//opt/alt/python35/lib64/python3.5/test_tasks.py�coroutine_function#sr
ccs5tj}|j}z||_dVWd||_XdS)N)�asyncior�_DEBUG)ZenabledrZ	old_debugrrr�set_coroutine_debug(s				rFcCsg|rd|}n
d|}|dk	rR|d}d||||d|dfSd|||fSdS)Nz%sz%s, defined�z%coro=<%s() %s at %s> created at %s:%srzcoro=<%s() %s at %s>���r)�qualname�state�src�source_traceback�	generator�framerrr�format_coroutine5s


rc@s(eZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r)�selfrrr�__repr__DszDummy.__repr__cGsdS)Nr)r�argsrrr�__call__GszDummy.__call__N)�__name__�
__module__�__qualname__rrrrrrrBsrcsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jed�dd��Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"d<d=�Z#d>d?�Z$d@dA�Z%dBdC�Z&dDdE�Z'dFdG�Z(dHdI�Z)dJdK�Z*dLdM�Z+dNdO�Z,dPdQ�Z-dRdS�Z.dTdU�Z/dVdW�Z0dXdY�Z1dZd[�Z2d\d]�Z3d^d_�Z4d`da�Z5dbdc�Z6ddde�Z7dfdg�Z8dhdi�Z9djdk�Z:dldm�Z;dndo�Z<dpdq�Z=drds�Z>dtdu�Z?dvdw�Z@dxdy�ZAdzd{�ZBd|d}�ZCd~d�ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSe
jeTd��d�d���ZUeVjWd��d�d���ZXeVjWd��d�d���ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_�S)��	TaskTestscs t�j�|j�|_dS)N)�super�setUp�
new_test_loop�loop)r)�	__class__rrr$Ms
zTaskTests.setUpcCsytj�}tjd|�}tjdd��}z4|jtd��|jj||��WdQRXWd|j�XdS)Nr&css
|EdHdS)Nr)�futrrr�runUsz-TaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)	r�new_event_loop�Future�	coroutine�assertRaisesRegex�RuntimeErrorr&�run_until_complete�close)r�
other_loopr(r)rrr�test_other_loop_futureQs	
!z TaskTests.test_other_loop_futurec	sdtj�fdd��}tj|�d|j��|jtd��|jj��WdQRXdS)Nc3s
�EdHdS)Nrr)�taskrr�testasz2TaskTests.test_task_awaits_on_itself.<locals>.testr&zTask cannot await on itself)rr,�
ensure_futurer&r-r.r/)rr4r)r3r�test_task_awaits_on_itself`s
	
z$TaskTests.test_task_awaits_on_itselfcCs�tjdd��}tj|�d|j�}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�tj|�d|�}|j	|j
|�|j|�|j
�dS)NcSsdS)N�okrrrrr�notmuchlsz*TaskTests.test_task_class.<locals>.notmuchr&r7)rr,�Taskr&r/�
assertTrue�done�assertEqual�result�assertIs�_loopr*�set_event_loopr0)rr8�tr&rrr�test_task_classks

zTaskTests.test_task_classcCs�tjdd��}tj|�d|j�}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�tj|�d|�}|j	|j
|�|j|�|j
�dS)NcSsdS)Nr7rrrrrr8}sz7TaskTests.test_ensure_future_coroutine.<locals>.notmuchr&r7)rr,r5r&r/r:r;r<r=r>r?r*r@r0)rr8rAr&rrr�test_ensure_future_coroutine|s

z&TaskTests.test_ensure_future_coroutinecCs�tjd|j�}|jd�tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj|d|�}WdQRX|j�tj|d|j�}|j
||�dS)Nr&�ko)rr+r&�
set_resultr5r/r:r;r<r=r>r*r@�assertRaises�
ValueErrorr0)rZf_orig�fr&rrr�test_ensure_future_future�s


z#TaskTests.test_ensure_future_futurecCstjdd��}tj|�d|j�}tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj|d|�}WdQRX|j�tj|d|j�}|j
||�dS)NcSsdS)Nr7rrrrrr8�sz2TaskTests.test_ensure_future_task.<locals>.notmuchr&r7)rr,r9r&r5r/r:r;r<r=r>r*r@rFrGr0)rr8Zt_origrAr&rrr�test_ensure_future_task�s

z!TaskTests.test_ensure_future_taskzneed python 3.5 or latercCspGdd�d�}tjdd��}tj�}|j|�tj||��d|�}|j|�dS)Nc@s(eZdZdd�Zdd�ZdS)z2TaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dS)N)�coro)rrKrrr�__init__�sz;TaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHS)N)rK)rrrr�	__await__�sz<TaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)rr r!rLrMrrrr�Aw�srNcSsdS)Nr7rrrrrrK�sz4TaskTests.test_ensure_future_awaitable.<locals>.coror&)rr,r*r@r5r/)rrNrKr&r(rrr�test_ensure_future_awaitable�s

z&TaskTests.test_ensure_future_awaitablec	Cs(|jt��tjd�WdQRXdS)Nr7)rF�	TypeErrorrr5)rrrr�test_ensure_future_neither�sz$TaskTests.test_ensure_future_neithercCsLtjd|j�}|jtd��|j|tj|��WdQRXdS)Nr&z#function is deprecated, use ensure_)rr+r&ZassertWarnsRegex�DeprecationWarningr>�async)rrHrrr�test_async_warning�s	
zTaskTests.test_async_warningcswd�tj�fdd���tj��fdd���tj���fdd��}�jj|��dS)Nc3s��EdHdS)Nrr)�barrr�foo�sz%TaskTests.test_get_stack.<locals>.fooc
s��jdd�}z�j|djjd�Wdd}Xtj�}�jddd|�|jd�|j�}�j	|d�dS)N�limitrrrV�filezfoo\(\) running)
Z	get_stackr<�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)rHrX�tb)�TrrrrU�s
z%TaskTests.test_get_stack.<locals>.barc3s(tj��d�j���EdHdS)Nr&)rr5r&r)rbrVrrr�runner�sz(TaskTests.test_get_stack.<locals>.runner)rr,r&r/)rrcr)rbrUrVrr�test_get_stack�s
!zTaskTests.test_get_stackc	Cs|jjd�tjdd��}|j|jd�trQ|j|jd�|j|jt�t	j
|�\}}d||f}|�}tjs�tr�d}nd}|j|jd�tr�|j|j|�tj
|d|j�}|jt��t|d||jdd	�}|jt|�d
|�|j�|jt|�d|�|jtj|jj|�t|d||j�}|jt|�d
|�tj
|�d|j�}|jj|�t|d||j�}|jt|�d|�dS)NFcss
gEdHdS)N�abcrrrrrr8�s	z)TaskTests.test_task_repr.<locals>.notmuchr8z%s:%sr&�runningrTz <Task pending %s cb=[<Dummy>()]>z#<Task cancelling %s cb=[<Dummy>()]>r;z<Task cancelled %s>z<Task finished %s result='abc'>)r&�	set_debugrr,r<r�PY35r!r r�get_function_sourcerrr9�add_done_callbackrr�_source_traceback�repr�cancelrF�CancelledErrorr/)	rr8�filename�linenor�gen�
coro_qualnamerArKrrr�test_task_repr�sL		
zTaskTests.test_task_reprcCs|jjd�tjdd��}|j|jd�trQ|j|jd�|j|jt�|�}t	j
s|tr�d}d}n
d}}|j|j|�tr�|j|j|�t	j
rUt	j
rtj|�\}}|j
d}d||||d|df}n"|j}	d	||	j|	jf}|jt|�d
|�tj|d|j�}
|
jt��t	j
r�dtj|�}n|j}	d|	j|	jf}t|d
||
j
dt	j
�}|jt|
�d|�|jj|
�dS)NFcSsdS)N�{rrrrrr81sz8TaskTests.test_task_repr_coro_decorator.<locals>.notmuchr8rKrz0%s() running, defined at %s:%s, created at %s:%srz%s() running at %s:%sz<CoroWrapper %s>r&z%s:%srfrz <Task pending %s cb=[<Dummy>()]>r)r&rgrr,r<rrhr!r rrrrirk�gi_code�co_filename�co_firstlinenorlr9rjrrr/)rr8rqZ	coro_namerrrorprrK�coderArrrr�test_task_repr_coro_decorator.sN		
		
			
			
z'TaskTests.test_task_repr_coro_decoratorcCs�|jjd�tjdd��}tjd|j�}tj||�d|j�}tj|j�|jt	|�dt
jt	|���|jd�|jj
|�dS)NFcss	|EdHS)Nr)r(rrr�wait_forusz3TaskTests.test_task_repr_wait_for.<locals>.wait_forr&z<Task .* wait_for=%s>)r&rgrr,r+r9r�run_brieflyr`rl�re�escaperEr/)rrzr(r3rrr�test_task_repr_wait_forrs
z!TaskTests.test_task_repr_wait_forcCs�td��y|jjd�tjdd��}tjtj|d��}|jj|d��}d|_|j	|j
j�WdQRXt|j
�}d}|j
|j|�|�dS)NTcsstjd�EdHdS)Nr)r�sleep)�x�yrrr�func�sz:TaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzV<CoroWrapper TaskTests.test_task_repr_partial_corowrapper.<locals>.func(1)() running, )rr&rgrr,�	functools�partial�create_taskZ_log_destroy_pending�
addCleanupZ_coror0rlr:�
startswith)rr�Zpartial_funcr3Z	coro_repr�expectedrrr�"test_task_repr_partial_corowrapper�s
	z,TaskTests.test_task_repr_partial_corowrappercsqtj��fdd��}tjdd���tjdd���|�}|j|jj|�d�dS)Nc3s$��EdH}��EdH}||S)Nr)�a�b)�inner1�inner2rr�outer�sz)TaskTests.test_task_basics.<locals>.outercSsdS)N�*rrrrrr��sz*TaskTests.test_task_basics.<locals>.inner1cSsdS)Ni�rrrrrr��sz*TaskTests.test_task_basics.<locals>.inner2i)rr,r<r&r/)rr�rAr)r�r�r�test_task_basics�s
	zTaskTests.test_task_basicsc	s��fdd�}�j|��tj�fdd��}tj|�d��}�j|j��jtj���j|�WdQRX�j	|j
���j	|j���j|j��dS)Nc3s dV}�jd|�dVdS)Ng$@r)�assertAlmostEqual)�when)rrrrq�sz"TaskTests.test_cancel.<locals>.genc3stjdd��EdHdS)Ng$@r&�)rrr)r&rrr3�sz#TaskTests.test_cancel.<locals>.taskr&)
r%rr,r9�	call_soonrmrFrnr/r:r;�	cancelled�assertFalse)rrqr3rAr)r&rr�test_cancel�szTaskTests.test_cancelcCs�tjdd��}tj|�d|j�}tj|j�|j�|jtj|jj	|�|j
|j��|j
|j��|j
|j��dS)NcssdVdVdS)Nr�rrrrrr3�sz)TaskTests.test_cancel_yield.<locals>.taskr&)rr,r9r&rr{rmrFrnr/r:r;r�r�)rr3rArrr�test_cancel_yield�s
zTaskTests.test_cancel_yieldc	s�tjd|j��tj�fdd��}tj|�d|j�}tj|j��j�|jtj	��|jj
|�WdQRX|j�j��|j|j��dS)Nr&c3s
�EdHdS)Nr�rr)rHrrr3�s	z0TaskTests.test_cancel_inner_future.<locals>.task)
rr+r&r,r9rr{rmrFrnr/r:r�)rr3rAr)rHr�test_cancel_inner_future�s
z"TaskTests.test_cancel_inner_futurec	s�tjd|j��tj�fdd��}tj|�d|j�}tj|j��j�|j�|jtj	��|jj
|�WdQRX|j|j��|j�j
��|j|j
��dS)Nr&c3s
�EdHdS)Nr�rr)rHrrr3�s	z>TaskTests.test_cancel_both_task_and_inner_future.<locals>.task)rr+r&r,r9rr{rmrFrnr/r:r;r�)rr3rAr)rHr�&test_cancel_both_task_and_inner_future�s

z0TaskTests.test_cancel_both_task_and_inner_futurecstjd|j��tjd|j��tj��fdd��}tj|�d|j�}tj|j�|j|j���j	d�tj|j�|j|j��|j
�|j�j��|jj
|�}|j|d�|j|j��dS)Nr&c3s6�EdHy
�EdHWntjk
r1dSYnXdS)Nr�)rrnr)�fut1�fut2rrr3�s
	
z1TaskTests.test_cancel_task_catching.<locals>.taskr�)rr+r&r,r9rr{r>�_fut_waiterrErmr:r�r/r<r�)rr3rA�resr)r�r�r�test_cancel_task_catching�s

z#TaskTests.test_cancel_task_catchingcsgtjd|j��tjd|j��tjd|j��tj���fdd��}tj|�d|j�}tj|j�|j|j���j	d�tj|j�|j|j��|j
�|j�j��tj|j�|j|j���j	d�|jj
|�}|j|d�|j�j��|j|j��dS)Nr&c3s=�EdHy
�EdHWntjk
r-YnX�EdH}|S)N)rrn)r�)r�r��fut3rrr3s	
z1TaskTests.test_cancel_task_ignoring.<locals>.taskr�)rr+r&r,r9rr{r>r�rErmr:r�r/r<r�)rr3rAr�r)r�r�r�r�test_cancel_task_ignorings&!



z#TaskTests.test_cancel_task_ignoringcs�tj���j��tj���fdd��}tj|�d����jtj�j���j�j	���j
�j��j
�j��dS)Nc3s6�j��j�j�tjdd��EdHdS)N�dr&r�)rmr:�_must_cancelrrr)r&rrArrr31s
z0TaskTests.test_cancel_current_task.<locals>.taskr&)
rr*r@r,r9rFrnr/r:r;r�r�rm)rr3r)r&rrAr�test_cancel_current_task-s
!z"TaskTests.test_cancel_current_taskcs�tj�}�j|�tj��fdd��}tj|�d|���jtj|j���j�j	���j
�j��j
�j��dS)Ncs�j��j�j�dS)Nr�)rmr:r�r)rrArrr3Es
z*TaskTests.test_cancel_at_end.<locals>.taskr&)
rr*r@r,r9rFrnr/r:r;r�r�rm)rr&r3r)rrAr�test_cancel_at_end@s
zTaskTests.test_cancel_at_endcs �fdd�}�j|��d�g�tj���fdd��}tj|�d��}�jt��}�j|�WdQRX�jt|j	�d��j
|j���j�d��jd	�j
��x�D]}|j�q�W|j��jtj�j|�dS)
Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?g333333�?)r�)r�)rrrrqTsz6TaskTests.test_stop_while_run_in_complete.<locals>.genrc3s`xY�dkr[�jtjdd����dEdH�d7��dkr�j�qWdS)N�
g�������?r&rr�r)�appendrr�stopr)r&�waitersr�rrr3bs

z7TaskTests.test_stop_while_run_in_complete.<locals>.taskr&z+Event loop stopped before Future completed.r�g333333�?)r%rr,r9rFr.r/r<�str�	exceptionr�r;r��timer0rmrn)rrqr3rA�cm�wr)r&rr�r�r�test_stop_while_run_in_completeRs"	!


z)TaskTests.test_stop_while_run_in_completec
s��fdd�}�j|��d�tj��fdd��}tj|�d��}�jtj��$�jtj|dd���WdQRX�j|j	���j|j
���jd�j���j
�d�dS)Nc3s9dV}�jd|�dV}�jd|�dV}dS)Ng�������?rg�������?)r�)r�)rrrrq}s
z$TaskTests.test_wait_for.<locals>.genc
3s0d�ztjdd��EdHWdd�XdS)NTg�������?r&Fr;)rrr)�foo_runningr&rrrV�s
z$TaskTests.test_wait_for.<locals>.foor&g�������?F)r%rr,r9rF�TimeoutErrorr/rzr:r;r�r�r�r<)rrqrVr(r)r�r&rr�
test_wait_for{s
&zTaskTests.test_wait_forcCs\|j�}tjdd��}|jtj|�ddd|��}|j|d�dS)NcSsdS)Nr;rrrrrrK�sz.TaskTests.test_wait_for_blocking.<locals>.coro�timeoutr&r;)r%rr,r/rzr<)rr&rKr�rrr�test_wait_for_blocking�sz TaskTests.test_wait_for_blockingcs��fdd�}�j|��tj�fdd��}tj��zOtj|�d��}�jtj���jtj|d��WdQRXWdtjd�X�j	d�j
���j|j���j|j
��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg{�G�z�?)r�)r�)rrrrq�s
z5TaskTests.test_wait_for_with_global_loop.<locals>.genc3stjdd��EdHdS)Ng�������?r&r;)rrr)r&rrrV�sz5TaskTests.test_wait_for_with_global_loop.<locals>.foor&g{�G�z�?)r%rr,r@r9rFr�r/rzr�r�r:r;r�)rrqrVr(r)r&rr�test_wait_for_with_global_loop�s
$z(TaskTests.test_wait_for_with_global_loopcCs�dd�}|j|�}tjd|�}tj|ddd|�}|jd|jd�|j|�}|j|d�dS)NcssdVdVdVdS)Ng�������?rrrrrrq�sz3TaskTests.test_wait_for_race_condition.<locals>.genr&r�g�������?g�������?r7)r%rr+rz�
call_laterrEr/r<)rrqr&r(r3r�rrr�test_wait_for_race_condition�sz&TaskTests.test_wait_for_race_conditioncs�fdd�}�j|��tjtjdd��d���tjtjdd��d���tj����fdd��}�jtj|�d���}�j|d��jd�j���jtj|�d���}�jd�j���j|d�dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrq�s
z TaskTests.test_wait.<locals>.geng�������?r&g333333�?c3sYtj��gd��EdH\}}�j|t��g���j|t��dS)Nr&r�)r�waitr<�set)r;�pending)r�r�r&rrrrV�s&z TaskTests.test_wait.<locals>.foor�)	r%rr9rr,r/r<r�r�)rrqrVr�r)r�r�r&rr�	test_wait�s$$$!!zTaskTests.test_waitcs��fdd�}�j|�}tjtjdd|�d|��tjtjdd|�d|��tj���fdd��}tj|�|jtj|�d|��}�j|d�dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng{�G�z�?rg���Q��?)r�)r�)rrrrq�s
z1TaskTests.test_wait_with_global_loop.<locals>.geng{�G�z�?r&g���Q��?c3sStj��g�EdH\}}�j|t��g���j|t��dS)Nr�)rr�r<r�)r;r�)r�r�rrrrV�s z1TaskTests.test_wait_with_global_loop.<locals>.foor�)r%rr9rr,r@r/r<)rrqr&rVr�r)r�r�rr�test_wait_with_global_loop�s$$!
z$TaskTests.test_wait_with_global_loopcCs�tjdd��}|d�}tjtj|||d�gd|j�d|j�}|jj|�\}}|j|�|jtdd�|D��ddh�dS)NcSs|S)Nr)�srrrrK
sz6TaskTests.test_wait_duplicate_coroutines.<locals>.coror4�spamr&css|]}|j�VqdS)N)r=)�.0rHrrr�	<genexpr>sz;TaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)	rr,r9r�r&r/r�r<r�)rrK�cr3r;r�rrr�test_wait_duplicate_coroutiness'
z(TaskTests.test_wait_duplicate_coroutinescCs�|jt|jjtjt�d|j��tjdd|j�}tj|gddd|j�}|jt|jj|�|j�dS)Nr&g$@�return_whenrr)	rFrGr&r/rr�r�rr0)rZ
sleep_coroZ	wait_cororrr�test_wait_errorss!	zTaskTests.test_wait_errorscsY�fdd�}�j|�}tjtjdd|�d|�}tjtjdd|�d|�}tjtj||gdtjd|�d|�}|j|�\}}�j|h|��j|h|��j|j	���j
|j	���j|j���j
d|j��|jd�|jtj||gd|��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng$@rg�������?)r�)r�)rrrrq*s
z0TaskTests.test_wait_first_completed.<locals>.geng$@r&g�������?r�r�)r%rr9rr��FIRST_COMPLETEDr/r<r�r;r:�assertIsNoner=r�r��advance_time)rrqr&r�r�r3r;r�r)rr�test_wait_first_completed(s"$$		
z#TaskTests.test_wait_first_completedcCstjdd��}tjdd��}tj|�d|j�}tj|�d|j�}tjtj||gdtjd|j�d|j�}|jj|�\}}|j||h|�|j|j	��|j
|j��|j|j	��|j
|j��dS)Ncss	dVdS)Nrrrrr�coro1Jsz.TaskTests.test_wait_really_done.<locals>.coro1cssdVdVdS)Nrrrrr�coro2Nsz.TaskTests.test_wait_really_done.<locals>.coro2r&r�)rr,r9r&r�r�r/r<r:r;r�r=)rr�r�r�r�r3r;r�rrr�test_wait_really_doneFszTaskTests.test_wait_really_donec	s)�fdd�}�j|�}tjtjdd|�d|�}tjdd��}tj|�d|�}tjtj||gdtjd|�d|�}|j|�\}}�j|h|��j|h|��j	d|j
��|jd	�|jtj||gd|��dS)
Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrqcsz0TaskTests.test_wait_first_exception.<locals>.geng$@r&cSstd��dS)N�err)�ZeroDivisionErrorrrrr�excmsz0TaskTests.test_wait_first_exception.<locals>.excr�rr�)r%rr9rr,r��FIRST_EXCEPTIONr/r<r�r�r�)	rrqr&r�r�r�r3r;r�r)rr�test_wait_first_exceptionas$		
z#TaskTests.test_wait_first_exceptioncs �fdd�}�j|��tjtjdd��d��}tj�fdd��}tj|�d��}tj||gdtjd��}�j|�\}}�j|h|��j|h|��j	d�j
���jd	��jtj||gd���dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng$@rg{�G�z�?)r�)r�)rrrrq�s
z8TaskTests.test_wait_first_exception_in_wait.<locals>.geng$@r&c3s(tjdd��EdHtd��dS)Ng{�G�z�?r&r�)rrr�r)r&rrr��sz8TaskTests.test_wait_first_exception_in_wait.<locals>.excr�g{�G�z�?r�)r%rr9rr,r�r�r/r<r�r�r�)rrqr�r�r�r3r;r�r)r&rr�!test_wait_first_exception_in_wait�s$	
z+TaskTests.test_wait_first_exception_in_waitcs
�fdd�}�j|��tjtjdd��d���tj�fdd��}tj|�d���tj����fdd��}�jtj|�d����jd	�j���jtj|�d����jd	�j��dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrq�s
z/TaskTests.test_wait_with_exception.<locals>.geng�������?r&c3s(tjdd��EdHtd��dS)Ng333333�?r&Zreally)rrr�r)r&rr�sleeper�sz3TaskTests.test_wait_with_exception.<locals>.sleeperc3s�tj��gd��EdH\}}�jt|�d��j|t��tdd�|D��}�jt|�d�dS)Nr&r�css'|]}|j�dk	r|VqdS)N)r�)r�rHrrrr��szBTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�r<�lenr�)r;r��errors)r�r�r&rrrrV�s
&z/TaskTests.test_wait_with_exception.<locals>.foog333333�?)r%rr9rr,r/r�r�)rrqr�rVr)r�r�r&rr�test_wait_with_exception�s$$z"TaskTests.test_wait_with_exceptioncs��fdd�}�j|��tjtjdd��d���tjtjdd��d���tj����fdd��}�jtj|�d����jd�j���jd	��jtj	��gd���dS)
Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?g)\��(�?)r�)r�)rrrrq�sz-TaskTests.test_wait_with_timeout.<locals>.geng�������?r&g333333�?c3sbtj��gddd��EdH\}}�j|t�g���j|t�g��dS)Nr�g)\��(�?r&)rr�r<r�)r;r�)r�r�r&rrrrV�sz-TaskTests.test_wait_with_timeout.<locals>.foog)\��(�?r�)
r%rr9rr,r/r�r�r�r�)rrqrVr)r�r�r&rr�test_wait_with_timeout�s	$$$
z TaskTests.test_wait_with_timeoutcs�fdd�}�j|�}tjtjdd|�d|�}tjtjdd|�d|�}|jtj||gddd|��\}}�j|t|g���j|t|g���jd|j	��|j
d�|jtj||gd|��dS)Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrq�sz4TaskTests.test_wait_concurrent_complete.<locals>.geng�������?r&g333333�?r�r�)r%rr9rr/r�r<r�r�r�r�)rrqr&r�r�r;r�r)rr�test_wait_concurrent_complete�s	$$*
z'TaskTests.test_wait_concurrent_completecsedd�}|j|��d�_t��d�tj���fdd��}|dd��|dd	��|d
d��tj����fdd
��}�jtj|�d���}|jd
�j��|j	d|dd�k�|j	d	|dd�k�|j
|dd��jtj|�d���}|jd
�j��dS)NcssdVdVdVdVdS)Nrg{�G�z�?rrrrrrq�sz(TaskTests.test_as_completed.<locals>.geng�?Fc3s[tj|d��EdH�j|��rWd�krWd�krWd��jd�|S)Nr&r�r�Tg�Q���?)rr�addr�)�dtr�)�	completedr&�time_shiftedrrr�	s

z,TaskTests.test_as_completed.<locals>.sleeperg{�G�z�?r�r�g333333�?r�c3sEg}x8tj���gd��D]}|j|EdH�q%W|S)Nr&)r�as_completedr�)�valuesrH)r�r�r�r&rrrVs%z(TaskTests.test_as_completed.<locals>.foor&r�)r%Zslow_callback_durationr�rr,r/r9r�r�r:r<)rrqr�rVr�r)r�r�r�r�r&r�r�test_as_completed�s"		!
$!!zTaskTests.test_as_completedcs6dd�}|j|��tjddd���tjddd���tj���fdd	��}�jtj|�d���}|jt|�d
|�|j|dd�|j|ddd
�|j|ddtj	�|j
d
�j���jd��jtj
��gd���dS)NcssdVdVdVdVdS)Nrg�������?rrrrrrq*sz5TaskTests.test_as_completed_with_timeout.<locals>.geng�������?r�r&g333333�?r�c3s�g}x�tj��gddd��D]y}|rA�jd�y"|EdH}|jd|f�Wq(tjk
r�}z|jd|f�WYdd}~Xq(Xq(W|S)Nr�g���Q��?r&g{�G�z�?rr�)rr�r�r�r�)r�rH�vr�)r�r�r&rrrV5s(
*z5TaskTests.test_as_completed_with_timeout.<locals>.foor�rrg���Q��?r�)rr�)r%rrr,r/r9r<r��assertIsInstancer�r�r�r�r�)rrqrVr�r)r�r�r&r�test_as_completed_with_timeout(s!
!
z(TaskTests.test_as_completed_with_timeoutcswdd�}�j|��tjddd���tj���fdd��}�jtj|�d���dS)NcssdVdVdVdS)Nrg{�G�z�?rrrrrrqOsz<TaskTests.test_as_completed_with_unused_timeout.<locals>.geng{�G�z�?r�r&c3sHxAtj�gddd��D]!}|EdH}�j|d�qWdS)Nr�rr&r�)rr�r<)rHr�)r�r&rrrrVXs%z<TaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r%rrr,r/r9)rrqrVr)r�r&rr�%test_as_completed_with_unused_timeoutMs
!z/TaskTests.test_as_completed_with_unused_timeoutc	Csdd�}|j|�}tjddd|�}tjddd|�}||h}ttj|d|��}|jt|�d�|j|d	�}|j|d�|jd|j	��|j
d�|j|d
�}|j|d�|jd|j	��dS)NcssdVdVdVdS)Nrg�������?rrrrrrqbsz5TaskTests.test_as_completed_reverse_wait.<locals>.geng�������?r�r&g�������?r�r�rr)r%rr�listr�r<r�r/r�r�r�)	rrqr&r�r��fs�futsr�r�rrr�test_as_completed_reverse_wait`s
z(TaskTests.test_as_completed_reverse_waitc
s��fdd�}�j|�}tjddd|�}tjddd|�}||h}ttj|d|��}�jt|�d�tj|d|�}|j|�\}}	�jt	dd	�|D��ddh�dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?r)r�)r�)rrrrqys
z3TaskTests.test_as_completed_concurrent.<locals>.geng�������?r�r&r�r�css|]}|j�VqdS)N)r=)r�rHrrrr��sz9TaskTests.test_as_completed_concurrent.<locals>.<genexpr>)
r%rrr�r�r<r�r�r/r�)
rrqr&r�r�r�r��waiterr;r�r)rr�test_as_completed_concurrentwsz&TaskTests.test_as_completed_concurrentcs�tjdd���tj��fdd��}tj|�d�j�}�jj|�|j�}�jt|�ddh��jt|�d�dS)	NcSs|S)Nr)r�rrrrK�sz>TaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3sZg}�d�}xAtj||�d�gd�j�D]}|j|EdH�q:W|S)N�hamr�r&)rr�r&r�)r=r�rH)rKrrrrc�sz@TaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr&r�r�r�)	rr,r9r&r/r=r<r�r�)rrcr(r=r)rKrr�&test_as_completed_duplicate_coroutines�s	z0TaskTests.test_as_completed_duplicate_coroutinescs��fdd�}�j|��tj�fdd��}tj|dd�d��}�j|��j|j���j|j�d��j	d�j
��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?)r�)r�)rrrrq�s
z!TaskTests.test_sleep.<locals>.genc3sAtj|dd��EdHtj|d|d��EdH}|S)Nr�r&)rr)r��argr�)r&rrr��s!z%TaskTests.test_sleep.<locals>.sleeperg�������?�yeahr&)r%rr,r9r/r:r;r<r=r�r�)rrqr�rAr)r&rr�
test_sleep�s
zTaskTests.test_sleepcs��fdd�}�j|�}tjtjddd|�d|�}d�|j���fdd�}||_tj|��j�j�|j	�tj|��j
�j�dS)Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrq�sz(TaskTests.test_sleep_cancel.<locals>.geng$@r�r&cs�|||���S)Nr)�delay�callbackr)�handle�orig_call_laterrrr��sz/TaskTests.test_sleep_cancel.<locals>.call_later)r%rr9rr�rr{r�Z
_cancelledrmr:)rrqr&rAr�r)r�r�rr�test_sleep_cancel�s			


zTaskTests.test_sleep_cancelcs��fdd�}�j|��tj�fdd���tj��fdd��}|�}�j�j|�d��jd�j��dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?ri�)r�)r�)rrrrq�s
z5TaskTests.test_task_cancel_sleeping_task.<locals>.genc3stj|d��EdHdS)Nr&)rr)r�)r&rrr�sz7TaskTests.test_task_cancel_sleeping_task.<locals>.sleepc3s_tj�d�d��}�jd|j�y
|EdHWntjk
rVdSYnXdSdS)Ni�r&g�������?r�zslept in)rr9r�rmrn)r�)r&rrr�doit�s
	z6TaskTests.test_task_cancel_sleeping_task.<locals>.doitr�g�������?)r%rr,r<r/r�r�)rrqr�Zdoerr)r&rrr�test_task_cancel_sleeping_task�s	z(TaskTests.test_task_cancel_sleeping_taskcs�tjd|j��tj�fdd��}tj|�d|j�}tj|j�|j|j��|j	�tj|j�|j
tj|jj|�|j
|j�|j�j��dS)Nr&c3s
�EdHdS)Nrr)r(rrrK�sz6TaskTests.test_task_cancel_waiter_future.<locals>.coro)rr+r&r,r9rr{r>r�rmrFrnr/r�r:r�)rrKr3r)r(r�test_task_cancel_waiter_future�s
z(TaskTests.test_task_cancel_waiter_futurecCsdtjdd��}|�}tj|d|j�}|jd�|jt|j�|j�dS)NcSsdS)NrDrrrrrr8sz6TaskTests.test_step_in_completed_task.<locals>.notmuchr&r7)	rr,r9r&rErF�AssertionError�_stepr0)rr8rqr3rrr�test_step_in_completed_tasks	
z%TaskTests.test_step_in_completed_taskcCs5tjdd��}|jt|jj|��dS)NcssdVdVdS)NrrDrrrrrr8sz+TaskTests.test_step_result.<locals>.notmuch)rr,rFr.r&r/)rr8rrr�test_step_resultszTaskTests.test_step_resultcs�Gdd�dtj�}|d|j��d�tj��fdd��}tj|�d|j�}tj|j�|j�j�t	�}�j
|�tj|j�|j|��|j|j��|j
|j��dS)Ncs4eZdZ�fdd�Z�fdd�Z�S)z.TaskTests.test_step_result_future.<locals>.Futcs d|_t�j||�dS)NF)�cb_addedr#rL)rr�kwds)r'rrrLs	z7TaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j|�dS)NT)r�r#rj)r�fn)r'rrrj"s	z@TaskTests.test_step_result_future.<locals>.Fut.add_done_callback)rr r!rLrjrr)r'r�Futsr�r&c3s�EdH�dS)Nrr)r(r=rr�wait_for_future)sz:TaskTests.test_step_result_future.<locals>.wait_for_future)rr+r&r,r9rr{r:r��objectrEr>r;r�r=)rr�r�rAr�r)r(r=r�test_step_result_futures		
z!TaskTests.test_step_result_futurecCsptjdd��}tj|�d|j�}|jt|j�|j|j��|j	|j
�t�dS)NcSs
t��dS)N)�
BaseExceptionrrrr�notmutch:sz8TaskTests.test_step_with_baseexception.<locals>.notmutchr&)rr,r9r&rFrr�r:r;r�r�)rrr3rrr�test_step_with_baseexception9s
z&TaskTests.test_step_with_baseexceptioncs��fdd�}�j|��tj�fdd���t��tj��fdd��}tj|�d��}tj��|j��j|j	���j
ttj���j|j	���j|j���j
|j���dS)Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrqFsz7TaskTests.test_baseexception_during_cancel.<locals>.genc3stjdd��EdHdS)Nr�r&)rrr)r&rrr�Msz;TaskTests.test_baseexception_during_cancel.<locals>.sleeperc3s2y��EdHWntjk
r-��YnXdS)N)rrnr)�base_excr�rrrSsz<TaskTests.test_baseexception_during_cancel.<locals>.notmutchr&)r%rr,rr9rr{rmr�r;rFr:r�r>r�)rrqrr3r)rr&rr�r� test_baseexception_during_cancelDs	

z*TaskTests.test_baseexception_during_cancelcCs�dd�}|jtj|��dd�}|jtj|��tjdd��}|jtj|��|jtjtj���dS)NcSsdS)Nrrrrrr�gsz.TaskTests.test_iscoroutinefunction.<locals>.fncss	dVdS)Nrrrrr�fn1lsz/TaskTests.test_iscoroutinefunction.<locals>.fn1css	dVdS)Nrrrrr�fn2psz/TaskTests.test_iscoroutinefunction.<locals>.fn2)r�r�iscoroutinefunctionr,r:r�Mock)rr�rrrrr�test_iscoroutinefunctionfsz"TaskTests.test_iscoroutinefunctionc	swtjd|j��tj�fdd��}|�}|jt��|jj|�WdQRX|j�j��dS)Nr&c3s	�VdS)Nrr)r(rrr�zsz;TaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)	rr+r&r,rFr.r/r�r;)rr�r3r)r(r�test_yield_vs_yield_fromws	z"TaskTests.test_yield_vs_yield_fromcsVtjdd���tj�fdd��}|�}|jt|jj|�dS)Ncss	dVdS)NrrrrrrK�sz:TaskTests.test_yield_vs_yield_from_generator.<locals>.coroc
3s$��}z	|VWd|j�XdS)N)r0)rq)rKrrr��s		zETaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_future)rr,rFr.r&r/)rr�r3r)rKr�"test_yield_vs_yield_from_generator�s	z,TaskTests.test_yield_vs_yield_from_generatorcCsptjdd��}|jtj|��|�}|jtj|��|jj|�}|j|d�dS)NcSsdS)Nr4rrrrrr��sz7TaskTests.test_coroutine_non_gen_function.<locals>.funcr4)rr,r:r	�iscoroutiner&r/r<)rr�rKr�rrr�test_coroutine_non_gen_function�s	z)TaskTests.test_coroutine_non_gen_functioncs�tjd|j��tj�fdd��}tj�fdd��}tj|�d|j�}tj|�d|j�}|jj|�}|j|d�|j|j��dS)Nr&cs�S)Nrr)r(rrr��szETaskTests.test_coroutine_non_gen_function_return_future.<locals>.funccs�jd�dS)Nr4)rEr)r(rrrK�szETaskTests.test_coroutine_non_gen_function_return_future.<locals>.coror4)	rr+r&r,r9r/r<r�r=)rr�rK�t1�t2r�r)r(r�-test_coroutine_non_gen_function_return_future�sz7TaskTests.test_coroutine_non_gen_function_return_futurecs��jtjjd�j��tj��fdd��}tj|�j�d�j���jj���jtjjd�j��dS)Nr&cs&�jtjjd|��k�dS)Nr&)r:rr9�current_task)r&)rr3rrrK�sz)TaskTests.test_current_task.<locals>.coro)r�rr9rr&r,r/)rrKr)rr3r�test_current_task�s
!zTaskTests.test_current_taskcs�jtjjd�j��tjd�j��tjd�j��tj����fdd��}tj����fdd��}tj|�j�d�j��tj|�j�d�j���jjtj��fd�j���jtjjd�j��dS)Nr&c3s^�jtjjd|��k��EdH�jtjjd|��k��jd�dS)Nr&T)r:rr9rrE)r&)r�r�r�task1rrr��s"	"zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c3s^�jtjjd|��k��jd��EdH�jtjjd|��k�dS)Nr&T)r:rr9rrE)r&)r�r�r�task2rrr��s"
	zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)	r�rr9rr&r+r,r/r�)rr�r�r)r�r�rrrr�)test_current_task_with_interleaving_tasks�s$$!!
z3TaskTests.test_current_task_with_interleaving_taskscs�d�tjd�j��tj���fdd���tj��fdd��}tj|�d�j�}tj�j�|j��jj|��j	�d��j
�j��dS)Nrr&c3sCy
�EdHWn"tjk
r1�d7��YnX�jd�dS)Nrzgot past sleep() in inner())rrn�failr)�proofrr�rr�inner�s

z8TaskTests.test_yield_future_passes_cancel.<locals>.innerc3s@y��EdHWntjk
r1�d7�YnX�d7�dS)Nr�r�)rrnr)rrrrr��s
z8TaskTests.test_yield_future_passes_cancel.<locals>.outer�e)rr+r&r,r5rr{rmr/r<r:r�)rr�rHr)rrrr�r�test_yield_future_passes_cancel�s!

z)TaskTests.test_yield_future_passes_cancelcs�d�tjd�j��tj��fdd���tj���fdd��}tj|�d�j�}tj�j�|j��jtj	�jj
|��jd�tj�j��j�d�dS)Nrr&c3s�EdH�d7�dS)Nrrr)rr�rrrs	z?TaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc3s7tj��gd�j�EdH\}}�d7�dS)Nr&r�)rr�r&)�d�p)rrrrrr�
s)z?TaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerr)
rr+r&r,r5rr{rmrFrnr/rEr<)rr�rHr)rrrr�r�&test_yield_wait_does_not_shield_cancel�s!

z0TaskTests.test_yield_wait_does_not_shield_cancelcCsWtjd|j�}tj|�}|jd�|jj|�}|j|d�dS)Nr&r�)rr+r&�shieldrEr/r<)rrr�r�rrr�test_shield_results

zTaskTests.test_shield_resultcCswtjd|j�}tj|�}tj|j�td�}|j|�tj|j�|j|j	�|�dS)Nr&r�)
rr+r&r rr{r.�
set_exceptionr>r�)rrr�r�rrr�test_shield_exception s
zTaskTests.test_shield_exceptioncCsetjd|j�}tj|�}tj|j�|j�tj|j�|j|j��dS)Nr&)	rr+r&r rr{rmr:r�)rrr�rrr�test_shield_cancel)s
zTaskTests.test_shield_cancelcCsQtjd|j�}|jd�|jjtj|��}|j|d�dS)Nr&r�)rr+r&rEr/r r<)rr(r�rrr�test_shield_shortcut1s
zTaskTests.test_shield_shortcutc
s�d�tjd�j��tj��fdd���tj���fdd��}tj|�d�j�}tj�j�|j��jtj	���jj
|�WdQRX�jd�tj�j��j�d�dS)Nrr&c3s�EdH�d7�dS)Nrrr)rr�rrr<s	z+TaskTests.test_shield_effect.<locals>.innerc3s,tj��d�j�EdH�d7�dS)Nr&r�)rr r&r)rrrrrr�Bsz+TaskTests.test_shield_effect.<locals>.outerr)
rr+r&r,r5rr{rmrFrnr/rEr<)rr�rHr)rrrr�r�test_shield_effect7s!

zTaskTests.test_shield_effectcCs�tjd|j�}tjd|j�}tj||d|j�}tj|d|j�}tj|j�|j�tj|j�|j|j	��|j
d�|j
d�tj|j�|j|j�ddg�dS)Nr&rr�)
rr+r&�gatherr rr{rmr:r�rEr<r=)r�child1�child2�parentr�rrr�test_shield_gatherQs


zTaskTests.test_shield_gathercCstjd|j�}tjd|j�}tj|d|j�}tj|d|j�}tj||d|j�}tj|j�|j�tj|j�|j|j	�tj
�|j|j��|j|j��|j
d�|j
d�tj|j�dS)Nr&rr�)rr+r&r r'rr{rmr�r�rnr:r�rE)rr(r)r�r�r*rrr�test_gather_shield_s


zTaskTests.test_gather_shieldcCs�tjd|j�}|jt|jjtj|d|j��t�}|jt|jjtj|d|j��|j�dS)Nr&)	rr+r&rFrPr/r�r
r0)rr(rKrrr�test_as_completed_invalid_argsps	z(TaskTests.test_as_completed_invalid_argscCs�tjd|j�}|jt|jjtj|d|j��t�}|jt|jjtj|d|j��|j�|jt	|jjtjgd|j��dS)Nr&)
rr+r&rFrPr/r�r
r0rG)rr(rKrrr�test_wait_invalid_args{s	
z TaskTests.test_wait_invalid_argscsL�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs�tj���fdd��}tjd�j���jd�|���jtj����j�jt	j
��j�j��j�j
t	j��jj���j�j�dS)Nc3s�j�j��EdHdS)N)r:�
gi_runningr)r(rqrrrrK�szGTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coror&)rr,r+r&rEr:rr��gi_frame�types�	FrameTyper�r/ru�CodeTyper/r�)rK)r)r(rqr�check�s!
	z9TaskTests.test_corowrapper_mocks_generator.<locals>.checkFT)r)rr4r)rr� test_corowrapper_mocks_generator�s


z*TaskTests.test_corowrapper_mocks_generatorcs�td���tj�fdd��}tj��fdd���tjdd���tj|�d�j�}�jj|�}�j|d�WdQRXdS)
NTc3s��EdHS)Nrr)rrrr�sz1TaskTests.test_yield_from_corowrapper.<locals>.t1c3s:tjd�j�}tj�|�d�j�|EdHS)Nr&)rr+r&r9)rH)r�t3rrr�sz1TaskTests.test_yield_from_corowrapper.<locals>.t2cSs|jd�dS)Nrr�r)rr�r)rE)rHrrrr6�sz1TaskTests.test_yield_from_corowrapper.<locals>.t3r&rr�r)rr�r)rrr,r9r&r/r<)rrr3�valr)rrr6r�test_yield_from_corowrapper�s
z%TaskTests.test_yield_from_corowrappercsNdd���fdd�}|j|d�d	�|j|d�d�dS)
NcssdV}|S)Nr)r�rrrrV�sz7TaskTests.test_yield_from_corowrapper_send.<locals>.foocsvtjj���}|jd�y|j|�Wn0tk
re}z|jdSWYdd}~Xn
Xtd��dS)NrzStopIteration was expected)rr�CoroWrapper�send�
StopIterationrr�)r��cw�ex)rVrr�call�s
z8TaskTests.test_yield_from_corowrapper_send.<locals>.callrr�r�)rr�)rr�)r<)rr>r)rVr� test_yield_from_corowrapper_send�s
z*TaskTests.test_yield_from_corowrapper_sendcCsDtj�}dd�}tjj|��}||d<d|_dS)Ncss
gEdHdS)NrrrrrrV�sz/TaskTests.test_corowrapper_weakref.<locals>.foor<)�weakref�WeakValueDictionaryrrr9rq)rZwdrVr<rrr�test_corowrapper_weakref�s

z"TaskTests.test_corowrapper_weakrefcCsFdd�}td�}tjj|��}|jd�|j||j|��tjj|��}|jd�|j||jt|��tjj|��}|jd�|jtd�}|j|t�|j|j	d�tjj|��}|jd�|jtdd�}|j|t�|j|j	d�dS)NcssJd}x=y|V}Wq	tk
rA}z|}WYdd}~Xq	Xq	WdS)N)�	Exception)�value�errrrV�sz-TaskTests.test_corowrapper_throw.<locals>.foorV)rV)rV)
rCrrr9r:r>�throwr�r<r)rrVr�r<rrr�test_corowrapper_throw�s$



z TaskTests.test_corowrapper_throwzneed python 3.4 or latercCs=tjdd��}tj�}|jjd�|jj|�||j�}tj|d|j�}|jtj	j
d|j�|h�|jj�|jt|jj
�d�|jjd=d}|j}d}tj�|jtj	j
d|j�t��|j|jddd	tjd
|i�|j�dS)Ncss+tjd|�}|EdHtd��dS)Nr&zcode never reached)rr+rC)r&�futurerrr�kill_mes	z:TaskTests.test_log_destroyed_pending_task.<locals>.kill_meTr&rrH�messagez%Task was destroyed but it is pending!r3r)rr,rr
r&rg�set_exception_handlerr5r<r9�	all_tasksZ	_run_oncer��_readyr0�f_localsrkr�
gc_collectr�Zassert_called_with�ANYZ
reset_mock)rrIZmock_handlerrKr3rrrr�test_log_destroyed_pending_task�s(%

	
%	
z)TaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsstj��|j��tjdd���tj��fdd��}�j|��|j|jj�dS)NcSs
t�dS)N)rPrrrrrK,sz>TaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc3s>�j���}tjdd��EdH|j�d}dS)Ng�������?r&)r�rrrm)r3)rKr&rrrc0s
z@TaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rr*r@r,r/r��error�called)r�m_logrcr)rKr&r�&test_tb_logger_not_called_after_cancel's
z0TaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc	
Cs�td��tjdd��}WdQRXt}tj�jd}|�tj�|j	|j
j�|j
jdd}t
j|�\}}dtj|j�tj|�|tj|�|f}|j|tj|tj��dS)NTcSsdS)Nrrrrr�	coro_noop=sz9TaskTests.test_coroutine_never_yielded.<locals>.coro_noopr�rz�^<CoroWrapper %s\(?\)? .* at %s:%s, .*> was never yielded from\nCoroutine object created at \(most recent call last\):\n.*\n  File "%s", line %s, in test_coroutine_never_yielded\n    coro_noop\(\)$)rrr,�__file__�sys�	_getframe�f_linenorrOr:rRrS�	call_argsrrir|r}r!r`�compile�DOTALL)	rrTrVZtb_filename�	tb_linenorJZ
func_filenameZfunc_linenoZregexrrr�test_coroutine_never_yielded:s

z&TaskTests.test_coroutine_never_yieldedcsL�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs>tjdd��}�jj|��}�j|d�dS)NcSstjdd��}|�S)NcSsdS)Nrrrrrr�
inner_coro^szeTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)rr,)r`rrr�
outer_coro\szQTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror)rr,r&r/r<)rar=)rrrr4[sz=TaskTests.test_return_coroutine_from_coroutine.<locals>.checkFT)r)rr4r)rr�$test_return_coroutine_from_coroutineWs



z.TaskTests.test_return_coroutine_from_coroutinecCs�|jjd�tjt�d|j�}tj�jd}|j|j	t
�|j|j	ddd�t|df�|jj
|�dS)NTr&rr�test_task_source_tracebackr)r&rgrr9r
rXrYrZr�rkr�r<rWr/)rr3rprrrrcos
z$TaskTests.test_task_source_tracebackcs�tj��|j�j�tj�fdd��}�j|��}�jtj||d���}�j|j�|j	tj
�j|�|j|j
��dS)Nc3stjd��}|EdHdS)Nr&)rr+)r()r&rr�blocking_coroutinesz;TaskTests._test_cancel_wait_for.<locals>.blocking_coroutiner&)rr*r�r0r,r�rzr�rmrFrnr/r:r�)rr�rdr3r�r)r&r�_test_cancel_wait_for{s!
zTaskTests._test_cancel_wait_forcCs|jd�dS)N)re)rrrr�test_cancel_blocking_wait_for�sz'TaskTests.test_cancel_blocking_wait_forcCs|jd�dS)NgN@)re)rrrr�test_cancel_wait_for�szTaskTests.test_cancel_wait_forcs�tj�}|j|j�tjd|���fdd�}tj|�d|�}tj|d|��d���fdd�}�j|��jd�|j	��|j
�d�|j�j��|j
�j
�dg�dS)Nr&c3s	�EdHS)Nrr)r(rr�
child_coro�sz0TaskTests.test_cancel_gather.<locals>.child_corocs�j��dS)N)rm)�_)�
cancel_result�gather_taskrr�cancelling_callback�sz9TaskTests.test_cancel_gather.<locals>.cancelling_callbackr�F)rr*r�r0r+r'r5rjrEr/r<r�r�r=)rr&rhZ
gather_futurerlr)rjr(rkr�test_cancel_gather�s


zTaskTests.test_cancel_gather)`rr r!r$r2r6rBrCrIrJ�unittestZ
skipUnlessrhrOrQrTrdrsryr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr
rrrrrrr!r#r$r%r&r+r,r-r.r5r8r?rBrG�PY34rQrZpatchrUr_rbrcrerfrgrmrr)r'rr"Ks�;D)!
 "-%
"

!	'	)r"csveZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�S)�GatherTestsBasecsEt�j�|j�|_|j�|_|j|jdd�dS)N�cleanupF)r#r$r%�one_loopr1r@)r)r'rrr$�s
zGatherTestsBase.setUpcCs!x|jrtj|�qWdS)N)rMrr{)rr&rrr�	_run_loop�szGatherTestsBase._run_loopcs��fdd�td�D�\}}}tj�j|||�|�}tj�}|j|�|jd�|jd��j�j	��j
|jd��j|j
��|jd��j�j	�|j|��j
|j�dddg�dS)Ncs%g|]}tjd�j��qS)r&)rr+rr)r��i)rrr�
<listcomp>�s	z2GatherTestsBase._check_success.<locals>.<listcomp>rrr�F)�rangerr'�wrap_futuresr�MockCallbackrjrErsrrr<rSr�r;�assert_called_once_withr=)r�kwargsr�r�r�r(�cbr)rr�_check_success�s(!




zGatherTestsBase._check_successcCs|j�|jdd�dS)N�return_exceptionsF)r|)rrrr�test_success�s
zGatherTestsBase.test_successcCs|jdd�dS)Nr}T)r|)rrrr�test_result_exception_success�sz-GatherTestsBase.test_result_exception_successc	s	�fdd�td�D�\}}}}}tj�j|||||��}tj�}|j|�t�}|jd�|j	|��j
�j��j|j
��|j|��j|j�|�|jd�|j�|j	t��|j�dS)Ncs%g|]}tjd�j��qS)r&)rr+rr)r�rt)rrrru�s	z6GatherTestsBase.test_one_exception.<locals>.<listcomp>r
rr)rvrr'rwrrxrjr�rEr"rsrrr:r;ryr>r�rmr.)	rr�r�r�rrEr(r{r�r)rr�test_one_exception�s.$
	




z"GatherTestsBase.test_one_exceptionc	s*�fdd�td�D�\}}}}tj�j||||�dd�}tj�}|j|�t�}t�}|j	d�|j
|�|j	d��j�j��j
|j��|j
|��j�j��j|j��|j|��j|j�dd||g�dS)Ncs%g|]}tjd�j��qS)r&)rr+rr)r�rt)rrrru�s	z:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>r	r}Trr)rvrr'rwrrxrjr�r.rEr"rsrrr�r;r:ryr<r=)	rr�r�r�rr(r{r�Zexc2r)rr�test_return_exceptions�s"+	
		




z&GatherTestsBase.test_return_exceptionscCstjjtjjtj��}djd�}tdd|d|�\}}}|j|j�d�td|dd	d|�\}}}|j|j�d�td|dd
d|�\}}}|j|j�d�tdd|dd
d|�\}}}|j|j�d�dS)
N�
�import asyncio.coroutines� print(asyncio.coroutines._DEBUG)z-Ez-c�
PYTHONPATHsFalseZPYTHONASYNCIODEBUG��1sTrue)r�r�)	�os�path�dirnamerrW�joinrr<�rstrip)rZaio_pathrx�sts�stdout�stderrrrr�test_env_var_debug�s&!	z"GatherTestsBase.test_env_var_debug)rr r!r$rsr|r~rr�r�r�rr)r'rrp�srpc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|S)Nr)r�futuresrrrrwszFutureGatherTests.wrap_futurescCs�tj|j�|jtjd�tj|�}|j|tj�|j|j|j�|j	|j�|j
|j��|j|j
�g�tj|d|j�}|j|j|j�dS)Nr&)rr@rrr�r'r�r+r>r?rsr:r;r<r=r1)rZseq_or_iterr(rrr�_check_empty_sequencesz'FutureGatherTests._check_empty_sequencecCsA|jg�|jf�|jt��|jtd��dS)Nr�)r�r��iter)rrrr�test_constructor_empty_sequence*s

z1FutureGatherTests.test_constructor_empty_sequencecCs�tjd|j�}tjd|j�}|jt��tj||�WdQRX|jt��tj|d|j�WdQRXdS)Nr&)rr+rrr1rFrGr')rr�r�rrr�%test_constructor_heterogenous_futures0sz7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}�j|j�j��j�j��j|j��tj|d�j�}�j|j�j��j�j��j|j��dS)Ncs%g|]}tjd�j��qS)r&)rr+r1)r�rt)rrrru9s	zIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>rr&)	rvrr'r>r?r1rsr�r;)rZchildrenr(r)rr�#test_constructor_homogenous_futures8sz5FutureGatherTests.test_constructor_homogenous_futurescs
�fdd�td�D�\}}}}}tj|||||�}tj�}|j|�|jd�|j��j�j	��j
|j��|j|��j
|j���j|j�tj�|jd�|j�|jt��|j�dS)Ncs%g|]}tjd�j��qS)r&)rr+rr)r�rt)rrrruDs	z;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r
rr)rvrr'rrxrjrErmrsrrr:r;ryr�r�r�r�rnr"r.)rr�r�r�rrEr(r{r)rr�test_one_cancellationCs.





z'FutureGatherTests.test_one_cancellationc	sp�fdd�td�D�\}}}}}}tj||||||dd�}tj�}|j|�|jd�t�}	|j|	�|j	��j
�j��j|j
��|jd�|j	�t�}
|j|
��jj|�}�j|dtj��j|d	tj�d|d<|d	<�j|d|	ddd|
g�|j|�dS)
Ncs%g|]}tjd�j��qS)r&)rr+rr)r�rt)rrrruVs	zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>�r}Trrr�r	)rvrr'rrxrjrEr�r"rmrsrrr�r;r.r/r�rnr<ry)rr�r�r�rrErHr(r{ZzdeZrter�r)rr�&test_result_exception_one_cancellationUs*"$

	



	
"z8FutureGatherTests.test_result_exception_one_cancellationN)
rr r!rwr�r�r�r�r�r�rrrrr�sr�cs^eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�S)
�CoroutineGatherTestscs!t�j�tj|j�dS)N)r#r$rr@rr)r)r'rrr$os
zCoroutineGatherTests.setUpcGsCg}x6|D].}tj|dd��}|j|��q
W|S)Ncss	|EdHS)Nr)r(rrrrKvsz/CoroutineGatherTests.wrap_futures.<locals>.coro)rr,r�)rr�Zcorosr(rKrrrrwss
z!CoroutineGatherTests.wrap_futurescCs�tjdd��}|�}|�}tj||�}|j|j|j�|jj|�|j|jdd�|�}|�}tj||d|j�}|j|j|j�|jj|�dS)NcSsdS)NrerrrrrrK}szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.cororqFr&)	rr,r'r>r?rrr/r@r1)rrKZgen1Zgen2r(Zgen3Zgen4r�rrr�test_constructor_loop_selection|s				z4CoroutineGatherTests.test_constructor_loop_selectioncCs~tjdd��}|d�}tj|||d�|d|j�}|j|j�|j|j�ddddg�dS)NcSs|S)Nr)r�rrrrK�sz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.corore�defr&)rr,r'rrrsr<r=)rrKr�r(rrr�test_duplicate_coroutines�s
'z.CoroutineGatherTests.test_duplicate_coroutinesc
std�tjd�j��tj��fdd��}tj|�d�j��tj|�d�j��d�tj�����fdd��}tj|�d�j�}tj�j��j|j���j	tj
���jj|�WdQRX�j�j���j�j
���j�j
���j�j
��tj�j��j�d�dS)Nrr&c3s�EdH�d7�dS)Nrrr)rr�rrr�s	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerc3s2tj��d�j���EdH�d7�dS)Nr&r�)rr'rrr)r(r)�gathererrrrrr��s	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)rr+rrr,r5rr{r:rmrFrnr/r�r�r<)rrr�rHr)r(r)r�rrr�r�test_cancellation_broadcast�s$'z0CoroutineGatherTests.test_cancellation_broadcastcs�tjdd���tjd�j��tjd�j��tj����fdd��}tj|�d�j�}tj�j��jd�tj�j��jd�tj�j��j|j	�t
�dS)Ncss|EdHtd��dS)Nzshould not be ignored)r.)rHrrrr�s	z:CoroutineGatherTests.test_exception_marking.<locals>.innerr&c3s.tj������d�j�EdHdS)Nr&)rr'rrr)r�r�rrrrr��sz:CoroutineGatherTests.test_exception_marking.<locals>.outer)rr,r+rrr5rr{rEr�r�r.)rr�rHr)r�r�rrr�test_exception_marking�s$

z+CoroutineGatherTests.test_exception_marking)	rr r!r$rwr�r�r�r�rr)r'rr�ms		"r�cs�eZdZ�fdd�Zejdddd��Zdddddd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Z�S)�RunCoroutineThreadsafeTestscs0t�j�tj�|_|j|j�dS)N)r#r$rr*r&r@)r)r'rrr$�s
z!RunCoroutineThreadsafeTests.setUpFccs\tjdd|j�EdH|r-td��|rTtjjj|j�j�dV||S)Ng�������?r&zFail!)rrr&r.Ztasksr9rrm)rr�r�rrmrrrr��szRunCoroutineThreadsafeTests.addNc
Cs~|jddd|d|�}tj||j�}|rO|jj|jd�z|j|�SWd|j�px|j�XdS)Nrr�rrm)	r�rZrun_coroutine_threadsafer&Zcall_soon_threadsafer:r=r;rm)rrrmr��advance_cororKrHrrr�target�sz"RunCoroutineThreadsafeTests.targetcCs>|jjd|j�}|jj|�}|j|d�dS)Nr)r&�run_in_executorr�r/r<)rrHr=rrr�test_run_coroutine_threadsafe�sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec
Cs^|jjd|jd�}|jt��}|jj|�WdQRX|jd|jj�dS)NTzFail!)	r&r�r�rFr.r/�assertInr�r)rrH�exc_contextrrr�,test_run_coroutine_threadsafe_with_exception�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc
s��fdd�}�jjd|�}�jtj���jj|�WdQRXtj�j�x0tjj	�j�D]}�j
|j��qwWdS)Ncs�jdd�S)Nr�r)r�r)rrr�<lambda>	szXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>)r&r�rFrr�r/rr{r9rLr:r;)rr�rHr3r)rr�*test_run_coroutine_threadsafe_with_timeout	szFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sU�fdd�}�jjd|�}�jtj���jj|�WdQRXdS)Ncs�jdd�S)NrmT)r�r)rrrr�	szZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>)r&r�rFrrnr/)rr�rHr)rr�,test_run_coroutine_threadsafe_task_cancelled	szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledcs��jjd�fdd��}�jjdd��tj�}�jj|��jt��}�jj|�WdQRX�j	d|j
jd��jt
|j�d�|j\\}}}�j|d|j
�dS)Ncs�jdd�S)Nr�T)r�r)rrrr�	szbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>cSstS)N)�
wrong_name)r&rKrrrr�	sr�rrr�)r&r�Zset_task_factoryrrxrKrF�	NameErrorr/r�r�rr<r�Zcall_args_listr[)rrHr�r�r&�contextrzr)rr�4test_run_coroutine_threadsafe_task_factory_exception	s	zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)
rr r!r$rr,r�r�r�r�r�r�r�rr)r'rr��s
	r�cs@eZdZ�fdd�Z�fdd�Zdd�Z�S)�
SleepTestscs-t�j�tj�|_tjd�dS)N)r#r$rr*r&r@)r)r'rrr$.	s
zSleepTests.setUpcs'|jj�d|_t�j�dS)N)r&r0r#�tearDown)r)r'rrr�3	s
	zSleepTests.tearDowncs`d��fdd��tj���fdd��}�jj|���j�d�dS)Nrcs�|7�dS)Nr)�num)r=rr�
inc_result;	sz.SleepTests.test_sleep_zero.<locals>.inc_resultc3sd�jj�d��j�d�tjdd�jdd�EdH}�j�d��|�dS)Nrrr&r=r�)r&r�r<rr)r�)r�r=rrrrK?	s
#z(SleepTests.test_sleep_zero.<locals>.coro�)rr,r&r/r<)rrKr)r�r=rr�test_sleep_zero8	s
!zSleepTests.test_sleep_zero)rr r!r$r�r�rr)r'rr�-	sr��__main__)(�
contextlibr�r[r�r|rXr�r1rnr@rrrrr4r�ImportErrorrZtest.support.script_helperrZtest.script_helperZasyncio.test_support�version_infororhr,r
�contextmanagerrrrZTestCaser"rpr�r�r�r�r�mainrrrr�<module>sZ




	�������qdTc]