a  zey@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddl mZddlZddlmZddlmZddlmZddlmZddlmZdd lmZd d Zd d ZejddZdSddZddZ GdddZ!GdddZ"dZ#GdddZ$ddZ%GdddZ&e 'e(ed o\e(ed!d"Gd#d$d$e$e&ej)Z*e 'e(ed oe(ed!d"e%Gd%d&d&e$ej)Z+e 'e(ed!d"e%Gd'd(d(e$ej)Z,e 'e(ed d"e%Gd)d*d*e$ej)Z-e 'e(ed!d"Gd+d,d,e$ej)Z.e 'e(ed d"Gd-d.d.e$ej)Z/Gd/d0d0e$e&ej)Z0e%Gd1d2d2e$ej)Z1e 'e(ed!d"Gd3d4d4ej)Z2Gd5d6d6Z3Gd7d8d8ej)e3Z4e 'e(ed9d"Gd:d;d;ej)e3Z5Gdd?d?e6ej)Z7e 'e(ed!d"Gd@dAdAe6ej)Z8GdBdCdCej)Z9GdDdEdEZ:GdFdGdGe:ej)Z;GdHdIdIe:ej)ZGdNdOdOej)Z?GdPdQdQej)Z@eAdRkre BdS)TzTests for tasks.py.N)mock) coroutines)futures)tasks)utils)support)assert_python_okcCstddSN)asyncioZset_event_loop_policyr r P/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_tasks.pytearDownModulesr csdSr r r r r r coroutine_function srccs0tj}|j}z||_dVW||_n||_0dSr )r r_DEBUG)ZenabledrZ old_debugr r r set_coroutine_debug$s rFcCsR|rd|}nd|}|dur@|d}d||||d|dfSd|||fSdS)Nz%sz %s, definedz%coro=<%s() %s at %s> created at %s:%srzcoro=<%s() %s at %s>r )qualnamestatesrcsource_traceback generatorframer r r format_coroutine0s rcCs2d}|j}|durq"|}|d7}qt||j|fS)zP Return information about the innermost exception context in the chain. rNr) __context__typeargs)excdepthcontextr r r get_innermost_context=s r c@seZdZddZddZdS)DummycCsdS)Nzr selfr r r __repr__OszDummy.__repr__cGsdSr r )r#rr r r __call__RszDummy.__call__N)__name__ __module__ __qualname__r$r%r r r r r!Msr!c@s,eZdZddZddZddZddZd S) CoroLikeObjectcCs tddSN*) StopIteration)r#vr r r sendWszCoroLikeObject.sendcGsdSr r )r#rr r r throwZszCoroLikeObject.throwcCsdSr r r"r r r close]szCoroLikeObject.closecCs|Sr r r"r r r __await__`szCoroLikeObject.__await__N)r&r'r(r.r/r0r1r r r r r)Vsr)g-C6?cs<eZdZdZdZdddZddZfddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkdlZ9dmdnZ:dodpZ;dqdrZdwdxZ?dydzZ@d{d|ZAd}d~ZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcdd„ZdddĄZeddƄZfddȄZgddʄZhdd̄Zidd΄ZjddЄZkdd҄ZlddԄZmddքZneopdסddلZqeopdڡdd܄ZrddބZsddZtddZuddZvddZwddZxddZyddZzeopdסddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZZS( BaseTaskTestsNTestTaskcCs|jj|||dS)N)loopname) __class__Task)r#r4coror5r r r new_taskoszBaseTaskTests.new_taskcCs|jj|dSNr4)r6Futurer#r4r r r new_futurerszBaseTaskTests.new_futurecs6t_jjfddj_dS)Ncs jSr )r>r4r r"r r yz%BaseTaskTests.setUp..)supersetUp new_test_loopr4set_task_factoryr9 create_futurer"r6r"r rBus  zBaseTaskTests.setUpcCsdd}||j|}|t|d||jd|d||jd|tj |j |Wdn1s|0YdS)NcsdSr r r r r r r8|sz;BaseTaskTests.test_task_cancel_message_getter..coro_cancel_message my message) r9r4 assertTruehasattr assertEqualrGcancel assertRaisesr CancelledErrorrun_until_completer#r8tr r r test_task_cancel_message_getter{s z-BaseTaskTests.test_task_cancel_message_gettercCsrdd}||j|}|dd|_||jd|tj|j|Wdn1sd0YdS)NcsdSr r r r r r r8sz;BaseTaskTests.test_task_cancel_message_setter..cororHzmy new message) r9r4rLrGrKrMr rNrOrPr r r test_task_cancel_message_setters z-BaseTaskTests.test_task_cancel_message_settercsDGdddfddjtjfddtdDdS)Nc@seZdZddZdS)z1BaseTaskTests.test_task_del_collect..EvilcSs tdSr )gccollectr"r r r __del__sz9BaseTaskTests.test_task_del_collect..Evil.__del__N)r&r'r(rVr r r r EvilsrWcsSr r r )rWr r runsz0BaseTaskTests.test_task_del_collect..runcsg|]}jqSr )r9r4).0_)rXr#r r sz7BaseTaskTests.test_task_del_collect..d)r4rOr gatherranger"r )rWrXr#r test_task_del_collects z#BaseTaskTests.test_task_del_collectcCsrt}||}dd}zH|td |j||Wdn1sN0YW|n |0dS)Ncs|IdHdSr r futr r r rXsz1BaseTaskTests.test_other_loop_future..runzTask .* got Future .* attached)r new_event_loopr>assertRaisesRegex RuntimeErrorr4rOr0)r# other_looprarXr r r test_other_loop_futures 0z$BaseTaskTests.test_other_loop_futurecsZfdd}tj||jd|td|jWdn1sL0YdS)NcsIdHdSr r r taskr r testsz6BaseTaskTests.test_task_awaits_on_itself..testr;zTask cannot await on itself)r ensure_futurer4rcrdrO)r#rir rgr test_task_awaits_on_itselfs  z(BaseTaskTests.test_task_awaits_on_itselfcCsdd}||j|}|j|||||d||j|j|| |jt }| ||||}||j|||| dS)NcsdSNokr r r r r notmuchsz.BaseTaskTests.test_task_class..notmuchrm)r9r4rOrIdonerKresultassertIs_loopget_loopr rbset_event_loopr0r#rnrQr4r r r test_task_classs   zBaseTaskTests.test_task_classcCs|ttjdd}Wdn1s.0Ytj||jd}|j|||| | d| |j |jt }||tj||d}| |j ||||dS)NcSsdSrlr r r r r rnsz;BaseTaskTests.test_ensure_future_coroutine..notmuchr;rm) assertWarnsDeprecationWarningr coroutinerjr4rOrIrorKrprqrrrbrtr0rur r r test_ensure_future_coroutines (   z*BaseTaskTests.test_ensure_future_coroutinecCs||j}|dt|}|j||||| d| ||t }| || ttj||d}Wdn1s0Y|tj||jd}| ||dS)Nkor;)r>r4 set_resultr rjrOrIrorKrprqrbrtrM ValueErrorr0)r#Zf_origfr4r r r test_ensure_future_futures       ,z'BaseTaskTests.test_ensure_future_futurecCsdd}||j|}t|}|j|||||d| ||t }| || t tj||d}Wdn1s0Y|tj||jd}| ||dS)NcsdSrlr r r r r rnsz6BaseTaskTests.test_ensure_future_task..notmuchrmr;)r9r4r rjrOrIrorKrprqrbrtrMr}r0)r#rnZt_origrQr4r r r test_ensure_future_tasks     ,z%BaseTaskTests.test_ensure_future_taskcCszGddd}|ttjdd}Wdn1s<0Yt}||tj|||d}||dS)Nc@seZdZddZddZdS)z6BaseTaskTests.test_ensure_future_awaitable..AwcSs ||_dSr r8r#r8r r r __init__sz?BaseTaskTests.test_ensure_future_awaitable..Aw.__init__css |jEdHSr rr"r r r r1 sz@BaseTaskTests.test_ensure_future_awaitable..Aw.__await__N)r&r'r(rr1r r r r AwsrcSsdSrlr r r r r r8sz8BaseTaskTests.test_ensure_future_awaitable..coror;)rwrxr ryrbrtrjrO)r#rr8r4rar r r test_ensure_future_awaitables (  z*BaseTaskTests.test_ensure_future_awaitablecCs8|ttdWdn1s*0YdSrl)rM TypeErrorr rjr"r r r test_ensure_future_neithers z(BaseTaskTests.test_ensure_future_neithercCsZt}||j}|tdtj||dWdn1sD0Y|dS)NzRThe future belongs to a different loop than the one specified as the loop argumentr;)r rbr>r4rcr}rjr0)r#r4r~r r r test_ensure_future_error_msgs  ,z*BaseTaskTests.test_ensure_future_error_msgcs@dfddfddfdd}j|dS)NcsIdHdSr r r )barr r foo(sz)BaseTaskTests.test_get_stack..foocshjdd}z|djjdWd}nd}0t}jd|d|d|} |ddS)Nr)limitrr)rfilezfoo\(\) running) Z get_stackrKf_codeco_nameioStringIO print_stackseekread assertRegex)r~rtb)Tr#r r r+s   z)BaseTaskTests.test_get_stack..barcs tjjdIdHdSr:)r rjr4r )rrr#r r runner:sz,BaseTaskTests.test_get_stack..runnerr4rO)r#rr )rrrr#r test_get_stack%s  zBaseTaskTests.test_get_stackc CsX|jddd}||jd||jd||jtt|\}}d||f}|}d}||jd||j|| |j|}| t t |d||j dd }|t|d |||t|d ||tj|jj|t |d ||j }|t|d || |j|}|j|t |d ||j }|t|d|dS)NFcsdSNabcr r r r r rnDsz-BaseTaskTests.test_task_repr..notmuchrnz#\w+.test_task_repr..notmuch%s:%srunningTr0()]>z3()]>roz#z/)r4 set_debugrKr&rr(r' test_utilsget_function_sourcer9add_done_callbackr!r_source_tracebackreprrLrMr rNrO) r#rnfilenamelinenorgen coro_qualnamerQr8r r r test_task_reprAsT        zBaseTaskTests.test_task_reprcCsdd}||j|d}||j|d}|t|t|tdt|}||tdt|}|||t| dt| d|j ||j |dS)NcsdSN{r r r r r rnusz;BaseTaskTests.test_task_repr_autogenerated..notmuchz ^.notmuchz{6})r9r4set_namerKget_namerO)r#rnrQr r r test_task_repr_name_not_strs  z)BaseTaskTests.test_task_repr_name_not_strc Cs|jd|ttjdd}Wdn1s:0Y||jd||j d||j t|}d}d}||j|||j |t j rt j rt |\}}|jd}d||||d|d f}n|j} d || j| jf}|t|d |||j|} | tt j r8d t |} n|j} d | j| jf} t|d | | jt j d}|t| d||j| dS)NFcSsdSrr r r r r rnsz.notmuchrnz4\w+.test_task_repr_coro_decorator\.\.notmuchrz0%s() running, defined at %s:%s, created at %s:%srrz%s() running at %s:%szrrrr)r4rrwrxr ryrKr&rr(r'rrrrrgi_code co_filenameco_firstlinenorr9rr!rrO) r#rnrZ coro_namerrrrr8coderQrr r r test_task_repr_coro_decoratorsX  (    z+BaseTaskTests.test_task_repr_coro_decoratorcCsv|jddd}||j}||j||}t|j|t|dt t|| d|j |dS)NFcs |IdHSr r r`r r r wait_forsz7BaseTaskTests.test_task_repr_wait_for..wait_forz) r4rr>r9r run_brieflyrrrescaper|rO)r#rrarhr r r test_task_repr_wait_fors     z%BaseTaskTests.test_task_repr_wait_forc Cstd|jddd}|t"tt|d}Wdn1sP0Y|j |d}d|_ | |j j Wdn1s0Yt|j }d}|||dS)NTcstdIdHdSNrr sleep)xyr r r funcsz>BaseTaskTests.test_task_repr_partial_corowrapper..funcrFzL\.func at)rr4rrwrxr ry functoolspartial create_task_log_destroy_pending addCleanupZ_coror0rr)r#rZ partial_funcrhZ coro_reprexpectedr r r "test_task_repr_partial_corowrappers   0, z0BaseTaskTests.test_task_repr_partial_corowrappercs<fdd}dddd|}||j|ddS)Ncs IdH}IdH}||Sr r )abinner1inner2r r outers  z-BaseTaskTests.test_task_basics..outercsdSr*r r r r r rsz.BaseTaskTests.test_task_basics..inner1csdS)Nir r r r r rsz.BaseTaskTests.test_task_basics..inner2i)rKr4rO)r#rrQr rr test_task_basicss zBaseTaskTests.test_task_basicscs^tddfdd}z$|}|Wn 0dS)NcstdSr r}r r r r raise_error szFBaseTaskTests.test_exception_chaining_after_await..raise_errorc sz tdWnty}z~}z|IdHWnTty}z<t|t|j}t||jftdfWYd}~n d}~00WYd}~n d}~00dS)N)r)KeyError Exceptionr9rKrr}rr)rrhchainedr4rr#r r rXs z>BaseTaskTests.test_exception_chaining_after_await..run)r rbrtr9rOr0r#rXrhr rr #test_exception_chaining_after_awaits   z1BaseTaskTests.test_exception_chaining_after_awaitcspdtddfdd}z$|}|Wn 0ddS)Ncs|dSr r )rr r r process_exc(szYBaseTaskTests.test_exception_chaining_after_await_with_context_cycle..process_excc sz tdWnxty}z`|}z|IdHWn4tyn}z||jud|_WYd}~n d}~00WYd}~n d}~00dS)Nr)rrr9 BaseExceptionr)rrhZ has_cycler4rr#r r rX+s  zQBaseTaskTests.test_exception_chaining_after_await_with_context_cycle..runF)r rbrtr9rOr0rKrr rr 6test_exception_chaining_after_await_with_context_cycle!s   zDBaseTaskTests.test_exception_chaining_after_await_with_context_cyclecsfdd}|}dd}||}||jtj||Wdn1sd0Y| |  |dS)Nc3sdV}d|dVdSN$@rassertAlmostEqualZwhenr"r r rBs z&BaseTaskTests.test_cancel..gencstdIdHdS)Nr rr r r r rhIsz'BaseTaskTests.test_cancel..task) rCr9 call_soonrLrMr rNrOrIro cancelled assertFalse)r#rr4rhrQr r"r test_cancel@s   (zBaseTaskTests.test_cancelc sgd}|D]\}jdtddfdd}|}tj}|Wdn1s0Y|j} |j dt |} |tj|dfWdq 1s0Yq dS) N)r r )r r )rHr)r cancel_argscstdIdHdSN rr r r r rcszHBaseTaskTests.test_cancel_with_message_then_future_result..sleepcsJ}tdIdH|jt|gIdH\}}|dSr)r9r rrLwaitrprhropendingrr4r#rr r r8fs  zGBaseTaskTests.test_cancel_with_message_then_future_result..coror r subTestr rbrtr9rMrNrO exceptionrKrr r#cases expected_argsr8rhcmractualr rr +test_cancel_with_message_then_future_resultUs   ( z9BaseTaskTests.test_cancel_with_message_then_future_resultc sgd}|D]\}jdtddfdd}|}tj}|Wdn1s0Y|j} |j dt |} |tj|dfWdq 1s0Yq dS) NrrcstdIdHdSrrr r r r rszKBaseTaskTests.test_cancel_with_message_then_future_exception..sleepcsJ}tdIdH|jt|gIdH\}}|dSrr9r rrLrrrrr r r8s  zJBaseTaskTests.test_cancel_with_message_then_future_exception..coror rrrr rr .test_cancel_with_message_then_future_exceptionws   ( z.sleepcs:}|dt|gIdH\}}|dS)NrH)r9rLr rrrr4r#rr r r8s zIBaseTaskTests.test_cancel_with_message_before_starting_task..coror rr) r rbrtr9rMrNrOrrKrr )r#r8rhrrrr rr -test_cancel_with_message_before_starting_tasks ( z;BaseTaskTests.test_cancel_with_message_before_starting_taskcCs|ttjdd}Wdn1s.0Y||j|}t|j|| tj |jj || | | |||dS)NcssdVdVdSNrr r r r r rhsz-BaseTaskTests.test_cancel_yield..task)rwrxr ryr9r4rrrLrMrNrOrIrorrr#rhrQr r r test_cancel_yields (  zBaseTaskTests.test_cancel_yieldcs||jfdd}||j|}t|j|tj|j |Wdn1sj0Y| | | dS)NcsIdHdSrr r r~r r rhs z4BaseTaskTests.test_cancel_inner_future..task) r>r4r9rrrLrMr rNrOrIrrr r r test_cancel_inner_futures   *z&BaseTaskTests.test_cancel_inner_futurecs||jfdd}||j|}t|j||tj|j |Wdn1sr0Y| | | | | dS)NcsIdHdSrr r r r r rhs zBBaseTaskTests.test_cancel_both_task_and_inner_future..task) r>r4r9rrrLrMr rNrOrIrorrr r r &test_cancel_both_task_and_inner_futures   *z4BaseTaskTests.test_cancel_both_task_and_inner_futurecs||j||jfdd}||j|}t|j||jdt|j||j||  |j |}| |d| | dS)Ncs4IdHzIdHWntjy.YdS0dSr*r rNr fut1fut2r r rhs  z5BaseTaskTests.test_cancel_task_catching..taskr+r>r4r9rrrq _fut_waiterr|rLrIrrOrKrr#rhrQresr rr test_cancel_task_catchings       z'BaseTaskTests.test_cancel_task_catchingcs||j||j||jfdd}||j|}t|j||jdt|j||j||  t|j||jd|j |}| |d|  | | dS)Ncs<IdHzIdHWntjy,Yn0IdH}|Sr r )rrrZfut3r r rhs  z5BaseTaskTests.test_cancel_task_ignoring..taskr+rrr rr test_cancel_task_ignorings&           z'BaseTaskTests.test_cancel_task_ignoringcst}|fdd}||tj|j   j  dS)Ncs(jtdIdHdS)Nr\r)rLrI _must_cancelr rr r#rQr r rhs z4BaseTaskTests.test_cancel_current_task..task r rbrtr9rrrMrNrOrIrorrLr#r4rhr rr test_cancel_current_tasks   z&BaseTaskTests.test_cancel_current_taskcst}|fdd}||tj|j   j  dS)z+coroutine end right after task is cancelledcsjdSr)rLrIrr rr r rh3s z.BaseTaskTests.test_cancel_at_end..taskNrrr rr test_cancel_at_end.s   z BaseTaskTests.test_cancel_at_endcstfdddfddfdd}|tjWdn1s0Y   dS)NcsSr r0r r;r r r?Ir@z8BaseTaskTests.test_cancel_awaited_task..csIdHdSr r r r`r r nestedNsz6BaseTaskTests.test_cancel_awaited_task..nestedcs4tdIdHIdHdSrr9r rrLr )r4r nested_taskr#rhr r r8Qsz4BaseTaskTests.test_cancel_awaited_task..coro) r rbrr>r9rMrNrOrIrrr )rar4rr!r#rhr test_cancel_awaited_taskAs   (z&BaseTaskTests.test_cancel_awaited_taskcCs"||vrtd|d|ddS)Nztext z not found in: >>>z<<<rd)r#textsubstrr r r assert_text_containsesz"BaseTaskTests.assert_text_containscstddfdd}|}z|Wn4tjyzt}|d|dYn 0 ddS)NcstdIdHdSrrr r r r roszEBaseTaskTests.test_cancel_traceback_for_future_result..nestedcs4}tdIdH||IdHdSrr rgr4rr#r r r8sszCBaseTaskTests.test_cancel_traceback_for_future_result..coroawait asyncio.sleep(10)zawait task # search targetCancelledError did not occur r rbrtr9rOrN traceback format_excr&failr#r8rhrr r'r 'test_cancel_traceback_for_future_resultis  z5BaseTaskTests.test_cancel_traceback_for_future_resultcstddfdd}|}z|Wn4tjyzt}|d|dYn 0 ddS)NcstdIdHdSrrr r r r rszHBaseTaskTests.test_cancel_traceback_for_future_exception..nestedcsH}tdIdH|t|gIdH\}}|dSrrrr'r r r8s zFBaseTaskTests.test_cancel_traceback_for_future_exception..coror(z!task.exception() # search targetr)r*r.r r'r *test_cancel_traceback_for_future_exceptions   z8BaseTaskTests.test_cancel_traceback_for_future_exceptioncsfdd}|dfdd}|}t}|Wdn1s`0Yt|jd| d d | t jj|dS) Nc3s@dV}d|dV}d|dV}d|dVdS)N皙?皙?333333?rrr"r r rs   z:BaseTaskTests.test_stop_while_run_in_complete..genrcs6dkr2tdIdHd7dkrqdS)Nrr1rr)r rstopr )r4rr r rhs z;BaseTaskTests.test_stop_while_run_in_complete..taskz+Event loop stopped before Future completed.rr3)rCr9rMrdrOrKstrrrrortimerLr rN)r#rrhrQrr )r4r#rr test_stop_while_run_in_completes  (  z-BaseTaskTests.test_stop_while_run_in_completecCsZdd}||j|}|tdd|_Wdn1s@0Y|j|dS)NcsdSr r r r r r r8sz.BaseTaskTests.test_log_traceback..corozcan only be set to FalseT)r9r4rcr}Z_log_tracebackrOr#r8rhr r r test_log_tracebacks $z BaseTaskTests.test_log_tracebackcsjfdd}|}|}|d|t|d}|d| d| dS)Nc3sdV}d|dSrrrr"r r rszMBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_future_done..genror) rCr>r|rOr rrKrIrorr6)r#rr4raretr r"r 2test_wait_for_timeout_less_then_0_or_0_future_dones     z@BaseTaskTests.test_wait_for_timeout_less_then_0_or_0_future_donecsfdd}|}dfdd}tj$|t|dWdn1s\0Yd|ddS)Nc3sdV}d|dSrrrr"r r rszZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started..genFcsddSNTr r ) foo_startedr r rszZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started..foor) rCrMr TimeoutErrorrOrrr6rKr#rr4rr )r=r#r ?test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_starteds   2zMBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_startedc sfdd}dD]}j|d|}dfdd}||}tj"|t||Wdn1s~0Y| |  d|  dWdq1s0YqdS) Nc3s(dV}d|dV}d|dS)Nr2rrrr"r r rs zABaseTaskTests.test_wait_for_timeout_less_then_0_or_0..gen)rrtimeoutcs(dztdIdHWdnd0dSNTr2Frorr  foo_runningr r rs  zABaseTaskTests.test_wait_for_timeout_less_then_0_or_0..foorF)rrCr9rMr r>rOrrIrorrr6rK)r#rrBr4rrar rEr#r &test_wait_for_timeout_less_then_0_or_0s   0z4BaseTaskTests.test_wait_for_timeout_less_then_0_or_0csfdd}|}dfdd}||}tj"|t|dWdn1sh0Y||  d|  ddS)Nc3s.dV}d|dV}d|dV}dS)Nr2rr1rrr"r r rs   z(BaseTaskTests.test_wait_for..gencs(dztdIdHWdnd0dSrCrr rDr r rs  z(BaseTaskTests.test_wait_for..foor1F) rCr9rMr r>rOrrIrorrr6rKr#rr4rrar rFr test_wait_fors   0zBaseTaskTests.test_wait_forcCs6|}dd}|tj|dd}||ddS)NcsdS)Nror r r r r r83sz2BaseTaskTests.test_wait_for_blocking..cororAro)rCrOr rrK)r#r4r8rr r r test_wait_for_blocking0sz$BaseTaskTests.test_wait_for_blockingc sfdd}|}dd}t|zZ||}tj"|t|dWdn1sl0YWtdn td0d|  |  | dS)Nc3s.dV}d|dV}d|dVdS)Nr2r{Gz?rrr"r r r;s   z9BaseTaskTests.test_wait_for_with_global_loop..gencstdIdHdS)Nr2rorr r r r rDsz9BaseTaskTests.test_wait_for_with_global_loop..foorK) rCr rtr9rMr>rOrrr6rIrorrHr r"r test_wait_for_with_global_loop9s   2z,BaseTaskTests.test_wait_for_with_global_loopcCsTdd}||}||}tj|dd}|d|jd||}||ddS)NcssdVdVdVdSNr1r r r r r rVsz7BaseTaskTests.test_wait_for_race_condition..genr2rAr1rm)rCr>r r call_laterr|rOrKr#rr4rarhrr r r test_wait_for_race_conditionTs   z*BaseTaskTests.test_wait_for_race_conditioncCshdd}||}||}|d|jd|tj|dd}|d|j||}| |ddS)NcssdVdVdVdVdSrMr r r r r rdszDBaseTaskTests.test_wait_for_cancellation_race_condition..genr1rmrrA) rCr>rNr|rr rrLrOrKrOr r r )test_wait_for_cancellation_race_conditioncs   z7BaseTaskTests.test_wait_for_cancellation_race_conditioncstjdfdd}tj}|Wdn1sV0Y|jj } t |tj dS)NFcs2fdd}|}tj|tdIdHdS)NcsPzDztdIdHWn&tjy<ttIdHYn0Wdnd0dS)Nr2Tr rrN_EPSILONr  task_doner r innerzs  zSBaseTaskTests.test_wait_for_waits_for_task_cancellation..foo..innerrAr9r rrSrV inner_taskr4r#rUr r rys zDBaseTaskTests.test_wait_for_waits_for_task_cancellation..foo r rbrr0rMr>rOrIrrrKrrNr#rrrr rZr )test_wait_for_waits_for_task_cancellationss * z7BaseTaskTests.test_wait_for_waits_for_task_cancellationcstjdfdd}tj}|Wdn1sV0Y|jj } t |tj dS)NFcsBfdd}|}ttIdHtj|ddIdHdS)NcsPzDztdIdHWn&tjy<ttIdHYn0Wdnd0dS)NrTrRr rTr r rVs  z_BaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0..foo..innerrrA)r9r rrSrrXrZr r rs zPBaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0..foor[r\r rZr 5test_wait_for_waits_for_task_cancellation_w_timeout_0s * zCBaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0csntjGdddtfdd}|Wdn1s`0YdS)Nc@s eZdZdS)zXBaseTaskTests.test_wait_for_reraises_exception_during_cancellation..FooExceptionNr&r'r(r r r r FooExceptionsr`cs2fdd}|}tj|tdIdHdS)Ncs$ztdIdHWn0dSNr2rr )r`r r rVsz^BaseTaskTests.test_wait_for_reraises_exception_during_cancellation..foo..innerrArWrXr`r4r#r r rs zOBaseTaskTests.test_wait_for_reraises_exception_during_cancellation..foo)r rbrr0rrMrOr#rr rbr 4test_wait_for_reraises_exception_during_cancellations   zBBaseTaskTests.test_wait_for_reraises_exception_during_cancellationcs^tjfdd}tj|Wdn1sP0YdS)Ncs.dd}|}tj|tdIdHdS)Ncs0ztdIdHWntjy*YdS0dS)Nr2r+r rrNr r r r rVszlBaseTaskTests.test_wait_for_raises_timeout_error_if_returned_during_cancellation..foo..innerrArWrXr4r#r r rsz]BaseTaskTests.test_wait_for_raises_timeout_error_if_returned_during_cancellation..foo)r rbrr0rMr>rOrcr rfr Btest_wait_for_raises_timeout_error_if_returned_during_cancellations   zPBaseTaskTests.test_wait_for_raises_timeout_error_if_returned_during_cancellationcs2tjfdd}|dS)Ncsdd}|}tj|dd}|}tdIdH|tj|IdHWdn1st0Y|IdHddS)Nc shztdIdHWnNtjybztdIdHWn$tjy\tdIdHYn0Yn0dS)Nr3r+rer r r r rVszIBaseTaskTests.test_wait_for_self_cancellation..foo..innerr1rAr2r+)r9r rrrLrMrNrK)rVrYrrhrfr r rs  (z:BaseTaskTests.test_wait_for_self_cancellation..foo)r rbrr0rOrcr rfr test_wait_for_self_cancellations z-BaseTaskTests.test_wait_for_self_cancellationcsfdd}|}|td|tdfdd}|||}|dd||||}d||ddS)Nc3s.dV}d|dV}d|dVdSNr1r333333?rrr"r r rs   z$BaseTaskTests.test_wait..genr1rjcs>tgIdH\}}|tg|tdSr*r rrKsetrorrrr#r r rsz$BaseTaskTests.test_wait..foor+rCr9r rrOrKrr6r#rr4rrr rnr test_waits   zBaseTaskTests.test_waitcsxfdd}|}|td|tdfdd}t||||}|ddS)Nc3s.dV}d|dV}d|dVdS)NrKrQ?rrr"r r rs   z5BaseTaskTests.test_wait_with_global_loop..genrKrrcs>tgIdH\}}|tg|tdSr*rkrmrnr r rsz5BaseTaskTests.test_wait_with_global_loop..foor+)rCr9r rrtrOrKrpr rnr test_wait_with_global_loops    z(BaseTaskTests.test_wait_with_global_loopc Cs|ttjdd}Wdn1s.0Y|d}||jt|||dg}|t |j|\}}Wdn1s0Y||| t dd|DddhdS)NcSs|Sr r sr r r r8-sz:BaseTaskTests.test_wait_duplicate_coroutines..cororispamcss|]}|VqdSr rprYr~r r r 9r@z?BaseTaskTests.test_wait_duplicate_coroutines..) rwrxr ryr9r4rrOrrKrl)r#r8crhrorr r r test_wait_duplicate_coroutines*s ( . z,BaseTaskTests.test_wait_duplicate_coroutinescCsR|t|jjtttd}tj|gdd}|t|jj||dS)Nrr return_when) rMr}r4rOr rrlrr0)r#Z sleep_coroZ wait_coror r r test_wait_errors;s  zBaseTaskTests.test_wait_errorscsfdd}|}|td}|td}|tj||gtjd}||\}}|h||h||  |  |  d||d|t||gdS)Nc3s.dV}d|dV}d|dVdS)Nrrr1rrr"r r rJs   z4BaseTaskTests.test_wait_first_completed..genrr1r|r)rCr9r rrFIRST_COMPLETEDrOrKrrorI assertIsNonerprr6 advance_time)r#rr4rrrhrorr r"r test_wait_first_completedHs"   z'BaseTaskTests.test_wait_first_completedcCsdd}dd}||j|}||j|}||jtj||gtjd}|j|\}}|||h|||| | ||| | dS)NcstdIdHdSrrr r r r coro1isz2BaseTaskTests.test_wait_really_done..coro1cs$tdIdHtdIdHdSrrr r r r coro2lsz2BaseTaskTests.test_wait_really_done..coro2r|) r9r4r rrrOrKrIrorrp)r#rrrrrhrorr r r test_wait_really_doneesz#BaseTaskTests.test_wait_really_donec sfdd}|}|td}dd}||}|tj||gtjd}||\}}|h||h|d| | d|t||gdS) Nc3sdV}d|dVdSrrrr"r r rs z4BaseTaskTests.test_wait_first_exception..genrcs tddS)Nerr)ZeroDivisionErrorr r r r rsz4BaseTaskTests.test_wait_first_exception..excr|rr rCr9r rrFIRST_EXCEPTIONrOrKrr6r r#rr4rrrrhrorr r"r test_wait_first_exception}s   z'BaseTaskTests.test_wait_first_exceptionc sfdd}|}|td}dd}||}tj||gtjd}||\}}|h||h|d| | d|t||gdS) Nc3s.dV}d|dV}d|dVdS)NrrrKrrr"r r rs   z.genrcstdIdHtddS)NrKrr rrr r r r rsz.excr|rKrrrr r"r !test_wait_first_exception_in_waits   z/BaseTaskTests.test_wait_first_exception_in_waitcsfdd}|}|tddd}||fdd}|||d||||d|dS) Nc3s.dV}d|dV}d|dVdSrirrr"r r rs   z3BaseTaskTests.test_wait_with_exception..genr1cstdIdHtddS)NrjZreallyrr r r r sleepersz7BaseTaskTests.test_wait_with_exception..sleepercs\tgIdH\}}t|d|ttdd|D}t|ddS)Nrcss|]}|dur|VqdSr )rrxr r r ryr@zFBaseTaskTests.test_wait_with_exception..foo..r)r rrKlenrl)rorerrorsrnr r rs z3BaseTaskTests.test_wait_with_exception..foorj)rCr9r rrOrr6)r#rr4rrr rnr test_wait_with_exceptions  z&BaseTaskTests.test_wait_with_exceptioncsfdd}|}|td|tdfdd}|||d||d|tgdS) Nc3s@dV}d|dV}d|dV}d|dVdS)Nr1rrj)\(?rrr"r r rs   z1BaseTaskTests.test_wait_with_timeout..genr1rjcsDtjgddIdH\}}|tg|tgdS)NrrArkrmrnr r rsz1BaseTaskTests.test_wait_with_timeout..foorr) rCr9r rrOrr6rrr?r rnr test_wait_with_timeouts  z$BaseTaskTests.test_wait_with_timeoutcsfdd}|}|td}|td}|tj||gdd\}}|t|g|t|gd| | d|t||gdS)Nc3s@dV}d|dV}d|dV}d|dVdSrirrr"r r rs   z8BaseTaskTests.test_wait_concurrent_complete..genr1rjrAr) rCr9r rrOrrKrlrr6r)r#rr4rrrorr r"r test_wait_concurrent_completes  z+BaseTaskTests.test_wait_concurrent_completecs~fdd}|}|td|tdfdd}|||}|dd|dS)Nc3s.dV}d|dV}d|dVdSrirrr"r r rs   z;BaseTaskTests.test_wait_with_iterator_of_tasks..genr1rjcsBttgIdH\}}|tg|tdSr*)r riterrKrlrmrnr r rsz;BaseTaskTests.test_wait_with_iterator_of_tasks..foor+rorpr rnr test_wait_with_iterator_of_taskss   z.BaseTaskTests.test_wait_with_iterator_of_taskscsdd}||d_td|t&tjfdd}Wdn1sX0Y|dd|dd |d d fd d }|t$}||}Wdn1s0Y| |j dj t | d |d|ddv|d |ddv| |dd |t$||}Wdn1sf0Y| d dS)NcssdVdVdVdVdSNrrKr r r r r r)sz,BaseTaskTests.test_as_completed..geng?Fc3s@t|EdH|s.sleeperrKrrrjrzcs2g}tjgdD]}||IdHq|Sr:)r as_completedappend)valuesr~)rrrzr4r r rDsz,BaseTaskTests.test_as_completed..foorr)rCZslow_callback_durationrlrwrxr ryrOr9rKwarningsr__file__rr6rI)r#rrrwrr )rrrzrr4rr test_as_completed's,  0    2 4zBaseTaskTests.test_as_completedcsdd}||tddtddfdd}|t$||}Wdn1sz0Y|t |d |||d d ||d d d | |d d tj | d  dtgdS)NcssdVdVdVdVdS)Nrr1r r r r r rXsz9BaseTaskTests.test_as_completed_with_timeout..genr1rrjrc sg}tjgddD]d}|r*dz|IdH}|d|fWqtjyz}z|d|fWYd}~qd}~00q|S)NQ?rBr4g{Gz?rr)r rrrr>)rr~r-rrrr4r r rcs  &z9BaseTaskTests.test_as_completed_with_timeout..foorr)rrrrr)rCrr rrwrxrOr9rKrassertIsInstancer>rr6rr)r#rrrr rr test_as_completed_with_timeoutVs  2 z,BaseTaskTests.test_as_completed_with_timeoutcspdd}|tddfdd}t$|Wdn1sb0YdS)NcssdVdVdVdSrr r r r r r}sz@BaseTaskTests.test_as_completed_with_unused_timeout..genrKrcs2tjgddD]}|IdH}|dqdS)Nrrr)r rrK)r~r-rr4r#r r rs z@BaseTaskTests.test_as_completed_with_unused_timeout..foo)rCr rrwrxrOr9)r#rrr rr %test_as_completed_with_unused_timeout{s    z3BaseTaskTests.test_as_completed_with_unused_timeoutc Csdd}||}tdd}tdd}||h}|t"ttj||d}Wdn1sd0Y|t|d| |d }||d| d| | d| |d }||d| d| dS) NcssdVdVdVdS)Nr皙?r r r r r rsz9BaseTaskTests.test_as_completed_reverse_wait..genrrr1rr;rrr) rCr rrwrxlistrrKrrOrr6r) r#rr4rrfsfutsrrr r r test_as_completed_reverse_waits    0   z,BaseTaskTests.test_as_completed_reverse_waitc sfdd}|}tdd}tdd}||h}t"ttj||d}Wdn1sh0Yt|dt |}t| |\}} Wdn1s0Yt dd |DddhdS) Nc3s.dV}d|dV}d|dVdS)Nrrrrr"r r rs   z7BaseTaskTests.test_as_completed_concurrent..genrrrr;rcss|]}|VqdSr rwrxr r r ryr@z=BaseTaskTests.test_as_completed_concurrent..) rCr rrwrxrrrKrrrOrl) r#rr4rrrrwaiterrorr r"r test_as_completed_concurrents     0  ,z*BaseTaskTests.test_as_completed_concurrentcsttjddWdn1s.0Yt$tjfdd}Wdn1sl0Yt,j|}j|Wdn1s0Y|}t |ddht |ddS)NcSs|Sr r rtr r r r8szBBaseTaskTests.test_as_completed_duplicate_coroutines..coroc3s@g}d}tj||dgjdD]}||EdHq&|S)Nhamrvr;)r rr4r)rprzr~r8r#r r rs zDBaseTaskTests.test_as_completed_duplicate_coroutines..runnerrrvr) rwrxr ryr9r4rOrprKrlr)r#rrarpr rr &test_as_completed_duplicate_coroutiness ( . *z4BaseTaskTests.test_as_completed_duplicate_coroutinescslfdd}|}dd}||dd}||||dd|dS)Nc3s.dV}d|dV}d|dVdS)Nrr1rrr"r r rs   z%BaseTaskTests.test_sleep..gencs.t|dIdHt|d|IdH}|S)Nrr)rargrr r r rsz)BaseTaskTests.test_sleep..sleeperr1yeah) rCr9rOrIrorKrprr6)r#rr4rrQr r"r test_sleeps   zBaseTaskTests.test_sleepcsfdd}|}|tdd}d|jfdd}||_t|j| t| jdS)Nc3sdV}d|dVdSrrrr"r r rs z,BaseTaskTests.test_sleep_cancel..genrrcs||g|RSr r )delaycallbackr)handleorig_call_laterr r rNsz3BaseTaskTests.test_sleep_cancel..call_later) rCr9r rrNrrrZ _cancelledrLrI)r#rr4rQrNr )rrr#r test_sleep_cancels     zBaseTaskTests.test_sleep_cancelcsZfdd}|ddfdd}|}|dddS) Nc3s.dV}d|dV}d|dVdS)Nr1rrrr"r r r s   z9BaseTaskTests.test_task_cancel_sleeping_task..gencst|IdHdSr r)rr r r rsz;BaseTaskTests.test_task_cancel_sleeping_task..sleepcsLd}d|jz|IdHWntjyBYdS0dSdS)Nrr1rzslept in)r9rNrLr rN)rrr r doitsz:BaseTaskTests.test_task_cancel_sleeping_task..doitrr1)rCrKrOrr6)r#rrZdoerr rr test_task_cancel_sleeping_tasks   z,BaseTaskTests.test_task_cancel_sleeping_taskcs||jfdd}||j|}t|j||j|t|j|t j |jj || |j| dS)NcsIdHdSr r r r`r r r8'sz:BaseTaskTests.test_task_cancel_waiter_future..coro)r>r4r9rrrqrrLrMr rNrOrrIrr8r r`r test_task_cancel_waiter_future$s      z,BaseTaskTests.test_task_cancel_waiter_futurecCsdd}|}||j|}|td|dWdn1sH0Y|td|tWdn1s0Y||j|ddS)NcsdS)Nr{r r r r r rn6sz4BaseTaskTests.test_task_set_methods..notmuchznot support set_resultrmznot support set_exceptionr{) r9r4rcrdr| set_exceptionr}rKrO)r#rnrrhr r r test_task_set_methods5s(* z#BaseTaskTests.test_task_set_methodscCsP|ttjdd}Wdn1s.0Y|t|jj|dS)NcssdVdVdS)Nrr{r r r r r rnHsz/BaseTaskTests.test_step_result..notmuchrwrxr ryrMrdr4rO)r#rnr r r test_step_resultFs  ( zBaseTaskTests.test_step_resultcsGdddtj}||jddfdd}||j|}t|j|jt} |t|j| ||| | | dS)Ncs(eZdZfddZfddZZS)z2BaseTaskTests.test_step_result_future..Futcsd|_tj|i|dSNF)cb_addedrAr)r#rkwdsrFr r rUsz;BaseTaskTests.test_step_result_future..Fut.__init__csd|_tj|i|dSr<)rrArr#rkwargsrFr r rYszDBaseTaskTests.test_step_result_future..Fut.add_done_callbackr&r'r(rr __classcell__r r rFr FutTs rr;csIdHdSr r r rarpr r wait_for_future`sz>BaseTaskTests.test_step_result_future..wait_for_future)r r<r4r9rrrIrobjectr|rqrorrp)r#rrrQrr rr test_step_result_futureQs      z%BaseTaskTests.test_step_result_futurecsfdd}|}ddtfdd}||}t|||ttj| ||  | dS)Nc3sdV}d|dVdSrrrr"r r rqs z;BaseTaskTests.test_baseexception_during_cancel..gencstdIdHdSrrr r r r rxsz?BaseTaskTests.test_baseexception_during_cancel..sleepercs.zIdHWntjy(Yn0dSr r r )base_excrr r notmutch}sz@BaseTaskTests.test_baseexception_during_cancel..notmutch) rC SystemExitr9rrrLrrorMrIrrqr)r#rr4rrhr )rr#rr test_baseexception_during_cancelos   z.BaseTaskTests.test_baseexception_during_cancelcCsdd}|t|dd}|t||ttjdd}Wdn1s^0Y|t||ttdS)NcSsdSr r r r r r fnsz2BaseTaskTests.test_iscoroutinefunction..fncss dVdSr r r r r r fn1sz3BaseTaskTests.test_iscoroutinefunction..fn1css dVdSr r r r r r fn2sz3BaseTaskTests.test_iscoroutinefunction..fn2) rr iscoroutinefunctionrwrxryrIrMock)r#rrrr r r test_iscoroutinefunctions (z&BaseTaskTests.test_iscoroutinefunctioncs||j|t"tjfdd}Wdn1s>0Y|}|t|j|Wdn1sz0Y| dS)Nc3s VdSr r r r`r r rsz?BaseTaskTests.test_yield_vs_yield_from..wait_for_future) r>r4rwrxr ryrMrdrOrror#rrhr r`r test_yield_vs_yield_froms  , *z&BaseTaskTests.test_yield_vs_yield_fromcs|ttjddWdn1s.0Y|t"tjfdd}Wdn1sj0Y|}|t|jj|dS)Ncss dVdSr r r r r r r8sz>BaseTaskTests.test_yield_vs_yield_from_generator..coroc3s(}z|VW|n |0dSr r)rrr r rszIBaseTaskTests.test_yield_vs_yield_from_generator..wait_for_futurerrr rr "test_yield_vs_yield_from_generators ( ,z0BaseTaskTests.test_yield_vs_yield_from_generatorcCsz|ttjdd}Wdn1s.0Y|t||}|t||j|}| |ddS)NcSsdSNrir r r r r rsz;BaseTaskTests.test_coroutine_non_gen_function..funcri) rwrxr ryrIr iscoroutiner4rOrK)r#rr8rr r r test_coroutine_non_gen_functions ( z-BaseTaskTests.test_coroutine_non_gen_functioncs||j|t"tjfdd}Wdn1s>0Yfdd}||j|}||j|}|j|}||d| | dS)NcsSr r r r`r r rszIBaseTaskTests.test_coroutine_non_gen_function_return_future..funccsddSrr|r r`r r r8szIBaseTaskTests.test_coroutine_non_gen_function_return_future..corori) r>r4rwrxr ryr9rOrKrrp)r#rr8rrrr r`r -test_coroutine_non_gen_function_return_futures  ,   z;BaseTaskTests.test_coroutine_non_gen_function_return_futurecsZtjjdfdd}j|jjtjjddS)Nr;cs:tj|dtdtdSr:)rqr current_taskr;r#rhr r r8sz-BaseTaskTests.test_current_task..coro)rr rr4r9rOrr rr test_current_tasks  zBaseTaskTests.test_current_taskcstjjdjjfdd}fdd}j|jj|jjtftjjddS)Nr;csDtj|duIdHtj|duddSNr;TrIr rr|r;)rrr#task1r r rs zFBaseTaskTests.test_current_task_with_interleaving_tasks..coro1csDtj|dudIdHtj|dudSrrr;)rrr#task2r r rs  zFBaseTaskTests.test_current_task_with_interleaving_tasks..coro2)rr rr4r>r9rOr)r#rrr )rrr#rrr )test_current_task_with_interleaving_taskss  z7BaseTaskTests.test_current_task_with_interleaving_taskscs~djfddfdd}tj|jd}tj|j|d  dS)Nrcs<zIdHWntjy,d7Yn 0ddS)Nrzgot past sleep() in inner())r rNr-r )proofr#rr r rVs z.innercs:zIdHWntjy,d7Yn 0d7dS)Nr\rr r rVrr r rs z.outerr;e) r>r4r rjrrrLrOrKrIrr#rr~r rVrr#rr test_yield_future_passes_cancel s      z-BaseTaskTests.test_yield_future_passes_cancelcsdjfddfdd}tj|jd}tj|tjjj | dtj ddS)NrcsIdHd7dSNrr r rrr r rV/s zCBaseTaskTests.test_yield_wait_does_not_shield_cancel..innercsNt(tgIdH\}}Wdn1s80Yd7dSNr\)rwrxr r)dp)rVrr#r r r4s 6zCBaseTaskTests.test_yield_wait_does_not_shield_cancel..outerr;r r>r4r rjrrrLrMrNrOr|rKrr rr &test_yield_wait_does_not_shield_cancel)s     z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<||j}t|}|d|j|}||ddSr*)r>r4r shieldr|rOrK)r#rVrrr r r test_shield_resultCs     z BaseTaskTests.test_shield_resultcCsT||j}t|}t|jtd}||t|j|| |dS)Nr) r>r4r rrrrdrrqr)r#rVrrr r r test_shield_exceptionJs     z#BaseTaskTests.test_shield_exceptioncCsH||j}t|}t|j|t|j||dSr ) r>r4r rrrrLrIrr#rVrr r r test_shield_cancel_innerSs     z&BaseTaskTests.test_shield_cancel_innercCsh||j}t|}t|j|t|j||| d|j durXdnt |j dSr) r>r4r rrrrLrIrrKZ _callbacksrrr r r test_shield_cancel_outer[s    z&BaseTaskTests.test_shield_cancel_outercCs8||j}|d|jt|}||ddSr*)r>r4r|rOr rrK)r#rarr r r test_shield_shortcutds  z"BaseTaskTests.test_shield_shortcutcsd||jfddfdd}tj||jd}t|j||tj|j |Wdn1s0Y dt|j| ddS)NrcsIdHd7dSrr r rr r rVos z/BaseTaskTests.test_shield_effect..innercstIdHd7dSr)r rr rr r rtsz/BaseTaskTests.test_shield_effect..outerr;rrrr )rVrrr test_shield_effectjs  *  z BaseTaskTests.test_shield_effectcCs||j}||j}t||}t|}t|j|t|j|| | d| dt|j| | ddgdSNrr) r>r4r r]rrrrLrIrr|rKrp)r#child1child2parentrr r r test_shield_gathers         z BaseTaskTests.test_shield_gathercCs||j}||j}t|}t|}t||}t|j|t|j|| tj | | | | | d| dt|jdSr)r>r4r rr]rrrLrrrNrIrr|)r#rrrrrr r r test_gather_shields         z BaseTaskTests.test_gather_shieldcCsZ||j}|t|jjtj||jdt}|t|jjtj||jd|dSr:) r>r4rMrrOr rrr0r#rar8r r r test_as_completed_invalid_argss   z,BaseTaskTests.test_as_completed_invalid_argscCsf||j}|t|jjt|t}|t|jjt|||t |jjtgdSr ) r>r4rMrrOr rrr0r}rr r r test_wait_invalid_argss    z$BaseTaskTests.test_wait_invalid_argscslfdd}td|Wdn1s00Ytd|Wdn1s^0YdS)Ncst&tjfdd}Wdn1s60Yjd|t j t j  j jt jjj dS)Nc3sjEdHdSr )rI gi_runningr )rarr#r r r8s zKBaseTaskTests.test_corowrapper_mocks_generator..check..coro)rwrxr ryr>r4r|rIrrgi_frametypes FrameTyperrrCodeTyperOrrr")rarr checks 0    z=BaseTaskTests.test_corowrapper_mocks_generator..checkFTrr#r r r"r test_corowrapper_mocks_generators   $ z.BaseTaskTests.test_corowrapper_mocks_generatorc stdt"tjfdd}Wdn1s<0Yt$tjfddWdn1sz0YttjddWdn1s0Yj|}j|}|dWdn1s0YdS) NTc3s EdHSr r r )rr r rsz5BaseTaskTests.test_yield_from_corowrapper..t1c3s(j}j||EdHSr )r>r4r9r )r#t3r r rs z5BaseTaskTests.test_yield_from_corowrapper..t2cSs|ddS)Nrrrrr r r r rsz5BaseTaskTests.test_yield_from_corowrapper..t3r) rrwrxr ryr9r4rOrK)r#rrhvalr )r#rrr test_yield_from_corowrappers  , . ( z)BaseTaskTests.test_yield_from_corowrappercs8ddfdd}||dd||dddS)Ncss dV}|Sr r )rr r r rsz;BaseTaskTests.test_yield_from_corowrapper_send..fooc sbtj}|dz||Wn.tyT}z|jdWYd}~Sd}~00tddS)NrzStopIteration was expected)r r CoroWrapperr.r,rAssertionError)rcwexrr r calls  z.call)rrrv)rK)r#rr rr test_yield_from_corowrapper_sends z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0t}dd}tj|}||d<d|_dS)NcssgEdHdSr r r r r r r r@z3BaseTaskTests.test_corowrapper_weakref..foor)weakrefWeakValueDictionaryr rrr)r#Zwdrrr r r test_corowrapper_weakref s z&BaseTaskTests.test_corowrapper_weakrefcCsdd}td}tj|}|d||||tj|}|d|||t|tj|}|d|td}||t||j dtj|}|d|tdd}||t||j ddS)Nc ss>d}z |V}Wqty6}z|}WYd}~qd}~00qdSr )r)valueer r r r s  z1BaseTaskTests.test_corowrapper_throw..foorr) rr rrr.rqr/rrKr)r#rrrr r r test_corowrapper_throw s$       z$BaseTaskTests.test_corowrapper_throwcsjj}t"tjfdd}Wdn1s:0Yt}j dj ||j}tj |jd} tj jd|htdj tjjd|jjd=d}|j}d}t tj jdt|jdtj|d|dS) Nc3s |}|EdHtddS)Nzcode never reached)r>r)r4futurer"r r kill_me6 s  z>BaseTaskTests.test_log_destroyed_pending_task..kill_meTr;rr"z%Task was destroyed but it is pending!)messagerhr)r6r7rwrxr ryrrr4rset_exception_handlerrjrK all_tasksrtZ _run_oncer_readyr f_localsrr gc_collectrlZassert_called_withANYZ reset_mock)r#r7r#Z mock_handlerr8rhrr r"r test_log_destroyed_pending_task2 s2 ,      z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsHtddfdd}||jjdS)NcstdSr )rr r r r r8e szBBaseTaskTests.test_tb_logger_not_called_after_cancel..corocs.}tdIdH|d}dS)Nrr rgr8r4r#r r rh szDBaseTaskTests.test_tb_logger_not_called_after_cancel..runner)r rbrtrOrerrorcalled)r#m_logrr r,r &test_tb_logger_not_called_after_cancel` s   z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc CstdH|ttjdd}Wdn1s80YWdn1sV0Yt}tjd}|t | |j j |j jdd}t|\}}dt|jt||t||f}||t|tjdS)NTcSsdSr r r r r r coro_noopu sz=BaseTaskTests.test_coroutine_never_yielded..coro_nooprrz^ was never yielded from\nCoroutine object created at \(most recent call last, truncated to \d+ last lines\):\n.*\n File "%s", line %s, in test_coroutine_never_yielded\n coro_noop\(\)$)rrwrxr ryrsys _getframef_linenorr)rIr-r. call_argsrrrrr(rcompileDOTALL) r#r/r1Z tb_filename tb_linenor$Z func_filenameZ func_linenoZregexr r r test_coroutine_never_yieldedq s$  F    z*BaseTaskTests.test_coroutine_never_yieldedcslfdd}td|Wdn1s00Ytd|Wdn1s^0YdS)zReturn of @asyncio.coroutine()-wrapped function generator object from @asyncio.coroutine()-wrapped function should have same effect as returning generator object or Future.csZt"tjfdd}Wdn1s20Yj|}|ddS)Ncs>ttjdd}Wdn1s.0Y|S)NcSsdSrr r r r r inner_coro sziBaseTaskTests.test_return_coroutine_from_coroutine..check..outer_coro..inner_coro)rwrxr ry)r:r"r r outer_coro s (zUBaseTaskTests.test_return_coroutine_from_coroutine..check..outer_cororrwrxr ryr4rOrK)r;rpr"r r r  s  ,zABaseTaskTests.test_return_coroutine_from_coroutine..checkFNTrrr r"r $test_return_coroutine_from_coroutine s   $ z2BaseTaskTests.test_return_coroutine_from_coroutinecCsh|jd||jt}tjd}||jt | |jdddt |df|j |dS)NTrrtest_task_source_traceback) r4rr9rr2r3r4rrrrKrrO)r#rhrr r r r? s z(BaseTaskTests.test_task_source_tracebackcsptjfdd}|}t||}|jtj j | | dS)Ncs}|IdHdSr )r>r`rfr r blocking_coroutine s z?BaseTaskTests._test_cancel_wait_for..blocking_coroutine) r rbrr0rrrrLrMrNrOrIr)r#rBr@rhrr rfr _test_cancel_wait_for s   z#BaseTaskTests._test_cancel_wait_forcCs|ddSr rAr"r r r test_cancel_blocking_wait_for sz+BaseTaskTests.test_cancel_blocking_wait_forcCs|ddS)NgN@rBr"r r r test_cancel_wait_for sz"BaseTaskTests.test_cancel_wait_forcst}||j||fdd}|t tj||d}Wdn1sZ0Ytj||ddfdd} | d| | d| | dgdS) zYEnsure that a gathering future refuses to be cancelled once all children are donec3s EdHSr r r r`r r child_coro sz6BaseTaskTests.test_cancel_gather_1..child_coror;Ncs dSr rL)rZ) cancel_result gather_taskr r cancelling_callback sz?BaseTaskTests.test_cancel_gather_1..cancelling_callbackr+F)r rbrr0r>rwrxr]rjrr|rOrKrrrp)r#r4rEZ gather_futurerIr )rGrarHr test_cancel_gather_1 s    .    z"BaseTaskTests.test_cancel_gather_1c sgd}|D]\}jdtjfddfdd}z|Wndtjy}zJ|jdt |\}}}||ftj|f |dWYd}~nd}~00 d Wdq 1s0Yq dS) Nrrcsdd}|d7}t,tjtdddIdHWdn1sH0Y|dkrdSqdS)NrrT)return_exceptionsr4r)rwrxr r]r)r6rfr r ri s  *z0BaseTaskTests.test_cancel_gather_2..testcs6}tdIdH|j|IdHdSrar )Zqwerr4r#rir r main s z0BaseTaskTests.test_cancel_gather_2..mainr )rrz1gather did not propagate the cancellation request) rr rbrr0rOrNrKrr assertInr-)r#rrrMrexc_typeZexc_argsrr rLr test_cancel_gather_2 s"    "z"BaseTaskTests.test_cancel_gather_2cs(ddfdd}j|dS)Ncs dddS)Nrrr r r r r r sz3BaseTaskTests.test_exception_traceback..foocs4j}tdIdH|jdSr)r9r4r rrr __traceback__rgrr#r r rM sz4BaseTaskTests.test_exception_traceback..mainrr#rMr rRr test_exception_traceback sz&BaseTaskTests.test_exception_tracebackc Csdd}||j_|ttjdd}Wdn1s>0Y||jj| t <|}z| |j|W| n | 0Wdn1s0Yt ||jj|jjdd}|d||t|jtdS)Nc_stdSr r)rrrr r r r( sz8BaseTaskTests.test_error_in_call_soon..call_sooncSsdSr r r r r r r8- sz3BaseTaskTests.test_error_in_call_soon..cororz$Task was destroyed but it is pending)r4rrwrxr ryrr-r.rMr}r9r0rTrUrIr5rNrKr&rl)r#r/rr8rr$r r r test_error_in_call_soon& s  ( 2 z%BaseTaskTests.test_error_in_call_sooncCsx|td||jdWdn1s00Y|td||jdWdn1sj0YdS)Nz!a coroutine was expected, got 123r)rcrr9r4r"r r r "test_create_task_with_noncoroutineA s,z0BaseTaskTests.test_create_task_with_noncoroutinecCs|ttjdd}Wdn1s.0Y||j|}|||j|j|||j|}|||j|j|dS)NcSsdSr r r r r r r8O szDBaseTaskTests.test_create_task_with_oldstyle_coroutine..coro) rwrxr ryr9r4rr7rOr8r r r (test_create_task_with_oldstyle_coroutineL s ( z6BaseTaskTests.test_create_task_with_oldstyle_coroutinecCs`dd}||j|}|||j|j|||j|}|||j|j|dS)NcsdSr r r r r r r8_ sz@BaseTaskTests.test_create_task_with_async_function..coro)r9r4rr7rOr8r r r $test_create_task_with_async_function] s z2BaseTaskTests.test_create_task_with_async_functioncCsh||jt}|||j||j|d||jt}|||j||j|ddSr*)r9r4r)rr7rKrOrr r r (test_create_task_with_asynclike_functionl s z6BaseTaskTests.test_create_task_with_asynclike_functioncs(ddfdd}j|dS)NcsdSrr r r r r rVy sz2BaseTaskTests.test_bare_create_task..innercs4t}|j|IdH}d|dSr)r rrr7rK)rhr:rVr#r r r8| s  z1BaseTaskTests.test_bare_create_task..cororrr rZr test_bare_create_taskw sz#BaseTaskTests.test_bare_create_taskcs(ddfdd}j|dS)NcsdSr r r r r r r1 sz.coro_noopcs.tjdd}|d|IdHdS)NzNo-op)r5)r rrKrrgr1r#r r r8 sz7BaseTaskTests.test_bare_create_named_task..cororrr r\r test_bare_create_named_task sz)BaseTaskTests.test_bare_create_named_taskcsjtjdddfddfdd}tz$|}|Wn 0dS)Ncvarnopedefaultcs.tdIdHdddS)NrKr_something else)r rrKgetrlr r^r#r r sub sz)BaseTaskTests.test_context_1..subcsVd}dd|IdHddS)Nr_yes)rKrcr9rl)Zsubtaskr^r4r#rer r rM s   z*BaseTaskTests.test_context_1..main) contextvars ContextVarr rbr9rOr0r#rMrhr rgr test_context_1 s zBaseTaskTests.test_context_1csjtjdddfdd}tz$|}|Wn 0ddS)Nr^r_r`c sfdd}dtdD]}}||d||jd|IdHd|tdD]F}d|d|t dIdHd|d|qq$dS) NcsddS)Nrb)rlr`)r^r r fut_on_done sz?BaseTaskTests.test_context_2..main..fut_on_doner_rrfr-MbP?) rKrcr^r>rrlrr|r r)rljrair^r4r#r r rM s      z*BaseTaskTests.test_context_2..main) rhrir rbr9rOr0rKrcrjr rqr test_context_2 s zBaseTaskTests.test_context_2csjtjdddfddfdd}tz|Wn 0ddS)Nr^rr`csLtdD]>}||ttddIdH||qdS)Nrrnr)r^rlr rrandomuniformrKrc)numrprdr r re s z)BaseTaskTests.test_context_3..subcsFg}tdD]$}tdd}||q tj|IdHdS)Nr\rr)r^rrsrandintrr r])rrprh)r4rer r rM s   z*BaseTaskTests.test_context_3..main)rhrir rbrOr0rKrcrSr rgr test_context_3 szBaseTaskTests.test_context_3cCsPt}t}z2|||}|||||W|n |0dSr )r rbrr9rOrqZget_coror0)r#r4r8rhr r r test_get_coro s  zBaseTaskTests.test_get_coro)r3)r&r'r(r7r<r9r>rBrRrSr_rfrkrvrzrrrrrrrrrrrrrrrrrrrr r r rrrrr"r&r/r0r7r9r;r@rGrIrJrLrPrQr]r^rdrgrhrqrsr{r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!r+rZpatchr0r9r=r?rArCrDrJrPrTrUrVrWrXrYr[r]rkrrrwrxrr r rFr r2js       3 >""$#    !  /%      (.   +      " r2cCsv|j}|j}|dus|dur |SGddd}Gddd||}Gddd||}dd}||_||_||_d|_|S) Ncs(eZdZfddZfddZZS)z(add_subclass_tests..CommonFuturecs&tdd|_tj|i|dS)NcSsdSrr r r r r r? r@zCadd_subclass_tests..CommonFuture.__init__..) collections defaultdictcallsrArrrFr r r sz1add_subclass_tests..CommonFuture.__init__cs$|jdd7<tj|i|S)Nrr)r{rArrrFr r r sz:add_subclass_tests..CommonFuture.add_done_callbackrr r rFr CommonFuture s r|c@s eZdZdS)z add_subclass_tests..TaskNr_r r r r r7 sr7c@s eZdZdS)z"add_subclass_tests..FutureNr_r r r r r< sr<csvjjdfdd}j|jd}j|}|dt|jdditjddidS)Nr;csjfddIdHS)Ncs dSNrvrr r`r r r? r@zYadd_subclass_tests..test_subclasses_ctask_cfuture..func..)r4rr rar#r r r szGadd_subclass_tests..test_subclasses_ctask_cfuture..funcrvrr)r<r4r7rOrKdictr{)r#rrhrpr r~r test_subclasses_ctask_cfuture s  z9add_subclass_tests..test_subclasses_ctask_cfuture)r7r<rr?)clsZBaseTaskZ BaseFuturer|r7r<rr r r add_subclass_tests s rc@seZdZddZddZdS)SetMethodsTestcCst|j}t|j_}dd}|}||j|}||d||j |d| |j ddd}| t jd|Wdn1s0Y|dS)NcstdIdHdSNr1rrr r r r r/ sz@SetMethodsTest.test_set_result_causes_invalid_state..foorvrrstep\(\): already done)rr<rrr4call_exception_handlerr9r|rKrOassert_called_oncer5rcr InvalidStateErrorr0)r#r< exc_handlerrr8rhrr r r $test_set_result_causes_invalid_state+ s"   "z3SetMethodsTest.test_set_result_causes_invalid_statecCsGdddt}t|j}t|j_}dd}|}||j|}|||| ||j |Wdn1s0Y| |j ddd}| tjd|Wdn1s0Y|dS)Nc@s eZdZdS)zESetMethodsTest.test_set_exception_causes_invalid_state..MyExcNr_r r r r MyExcD srcstdIdHdSrrr r r r rJ szCSetMethodsTest.test_set_exception_causes_invalid_state..foorrr)rrr<rrr4rr9rrMrOrr5rcr rr0)r#rr<rrr8rhrr r r 'test_set_exception_causes_invalid_stateC s   *"z6SetMethodsTest.test_set_exception_causes_invalid_stateN)r&r'r(rrr r r r r) sr_CFuture_CTaskzrequires the C _asyncio modulec@s:eZdZeeddZeeddZej ddZ ddZ dS)CTask_CFuture_TestsrNrcCs|ttd}dd}||j|}|j||}tdD]"}|j||jd|j|q>|j||ddddS) NgettotalrefcountcsdSr r r r r r r8j sz@CTask_CFuture_Tests.test_refleaks_in_task___init__..coror\r;rr)Zdelta) rZ get_attributer2r9r4rOr^rr)r#rr8rhZ refs_beforerpr r r test_refleaks_in_task___init__g s   z2CTask_CFuture_Tests.test_refleaks_in_task___init__cCsVdd}||j|}|j||t|`Wdn1sH0YdS)NcsdSr r r r r r r8u szHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault..coro)r9r4rOrMAttributeErrorrr8r r r &test_del__log_destroy_pending_segfaultt s   z:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault) r&r'r(getattrrr7rr<rZ refcount_testrrr r r r r^ s    rc@s$eZdZeeddZeeddZdS)CTask_CFuture_SubclassTestsrNr)r&r'r(rrr7rr<r r r r r} s rc@seZdZeeddZejZdS)CTaskSubclass_PyFuture_TestsrN r&r'r(rrr7r _PyFuturer<r r r r r s rc@seZdZeeddZejZdS)PyTask_CFutureSubclass_TestsrN) r&r'r(rrr<r_PyTaskr7r r r r r s rc@seZdZeeddZejZdS)CTask_PyFuture_TestsrNrr r r r r s rc@seZdZejZeeddZdS)PyTask_CFuture_TestsrN) r&r'r(rrr7rrr<r r r r r src@seZdZejZejZdS)PyTask_PyFuture_TestsN r&r'r(rrr7rrr<r r r r r src@seZdZejZejZdS)PyTask_PyFuture_SubclassTestsNrr r r r r src@seZdZddZdS)CTask_Future_TestscsGdddtj}fdd}t|_zF||jd|jdjd|j|}|j|}W|jn |j0| |ddS) Nc@seZdZeddZdS)z+CTask_Future_Tests.test_foobar..FutcSstdSr )rr"r r r rs sz4CTask_Future_Tests.test_foobar..Fut.get_loopN)r&r'r(propertyrsr r r r r srcsIdHdSr}r r r`r r r8 s z,CTask_Future_Tests.test_foobar..coror;r1rrv) r r<rbr4rNr|rrOr0rK)r#rr8rhrr r`r test_foobar s   zCTask_Future_Tests.test_foobarN)r&r'r(rr r r r r src@sleZdZdZdZdZdZddZddZddZ dd Z d d Z d d Z ddZ ddZddZddZdS)BaseTaskIntrospectionTestsNcs`Gfddd}|}t|tt|||t|h||dS)Ncs$eZdZefddZddZdS)zBBaseTaskIntrospectionTests.test__register_task_1..TaskLikecsSr r r"r;r r rr szHBaseTaskIntrospectionTests.test__register_task_1..TaskLike._loopcSsdSrr r"r r r ro szGBaseTaskIntrospectionTests.test__register_task_1..TaskLike.doneN)r&r'r(rrrror r;r r TaskLike srrrrKr r&rl_register_task_unregister_taskr#rrhr r;r test__register_task_1 s z0BaseTaskIntrospectionTests.test__register_task_1cs`Gfddd}|}t|tt|||t|h||dS)Ncs eZdZfddZddZdS)zBBaseTaskIntrospectionTests.test__register_task_2..TaskLikecsSr r r"r;r r rs szKBaseTaskIntrospectionTests.test__register_task_2..TaskLike.get_loopcSsdSrr r"r r r ro szGBaseTaskIntrospectionTests.test__register_task_2..TaskLike.doneNr&r'r(rsror r;r r r s rrrr r;r test__register_task_2 s z0BaseTaskIntrospectionTests.test__register_task_2cs`Gfddd}|}t|tt|||tt||dS)Ncs eZdZfddZddZdS)zBBaseTaskIntrospectionTests.test__register_task_3..TaskLikecsSr r r"r;r r rs szKBaseTaskIntrospectionTests.test__register_task_3..TaskLike.get_loopcSsdSr<r r"r r r ro szGBaseTaskIntrospectionTests.test__register_task_3..TaskLike.doneNrr r;r r r s rrrr r;r test__register_task_3 s z0BaseTaskIntrospectionTests.test__register_task_3cCsNt}t}|t|||||t|||||dSr )rrrr r _enter_taskrq _leave_taskr#rhr4r r r test__enter_task s  z+BaseTaskIntrospectionTests.test__enter_taskcCs|t}t}t}||||t|||Wdn1sP0Y|t|||||dSr ) rrrrMrdrqr rrr#rrr4r r r test__enter_task_failure s  *z3BaseTaskIntrospectionTests.test__enter_task_failurecCs<t}t}|||||||t|dSr )rrrrrr rrr r r test__leave_task s   z+BaseTaskIntrospectionTests.test__leave_taskcCs|t}t}t}||||t|||Wdn1sP0Y|t|||||dSr ) rrrrMrdrrqr rrr r r test__leave_task_failure1 s  *z4BaseTaskIntrospectionTests.test__leave_task_failure1cCsZt}t}|t|||Wdn1s<0Y|t|dSr )rrrMrdrrr rrr r r test__leave_task_failure2* s  *z4BaseTaskIntrospectionTests.test__leave_task_failure2csJt}tfdd|_|||||ttdS)NcsSr r r r;r r r?4 r@zBBaseTaskIntrospectionTests.test__unregister_task..) rrrsrrrKr r&rlrr r;r test__unregister_task1 s   z0BaseTaskIntrospectionTests.test__unregister_taskcCs2t}t}|||t|tdSr )rrrrKr r&rlrr r r $test__unregister_task_not_registered9 s z?BaseTaskIntrospectionTests.test__unregister_task_not_registered)r&r'r(rrrrrrrrrrrrrrr r r r r s  rc@s4eZdZeejZeejZeej Z eej Z dS)PyIntrospectionTestsN) r&r'r( staticmethodrZ_py_register_taskrZ_py_unregister_taskrZ_py_enter_taskrZ_py_leave_taskrr r r r r@ s   r_c_register_taskc@sPeZdZeedrfdd}|jtjjddS)Ncs<tjjdtdtdSr:)rqr rr4r rr r r8e szGBaseCurrentLoopTests.test_current_task_with_implicit_loop..coror;)r9r4rOrr rrr rr $test_current_task_with_implicit_loopd s  z9BaseCurrentLoopTests.test_current_task_with_implicit_loop) r&r'r(rBr9rrrrr r rFr rS s  rc@seZdZddZdS)PyCurrentLoopTestscCstj||jdSr:)rrr4rr r r r9r szPyCurrentLoopTests.new_taskNr&r'r(r9r r r r rp src@seZdZddZdS)CCurrentLoopTestscCsttd||jdS)Nrr;)rrr4rr r r r9z szCCurrentLoopTests.new_taskNrr r r r rv src@s"eZdZddZejddZdS)GenericTaskTestscCs|ttjtjdSr )rI issubclassr r7r<r"r r r test_future_subclass sz%GenericTaskTests.test_future_subclasscCshzddl}ddl}ddl}Wnty8|dYn,0z ddl}Wntyb|dYn0dS)NrzC modules are not availablez_asyncio module is missing) _functools_json_pickle ImportErrorZskipTest_asyncior-)r#rrrrr r r test_asyncio_module_compiled s    z-GenericTaskTests.test_asyncio_module_compiledN)r&r'r(rrZ cpython_onlyrr r r r r~ srcsTeZdZfddZddZddZddZd d Zd d Zd dZ ddZ Z S)GatherTestsBasecs2t||_||_|j|jdddS)NFcleanup)rArBrCone_looprertr"rFr r rB s   zGatherTestsBase.setUpcCs|jrt|qdSr )r'rrr=r r r _run_loop szGatherTestsBase._run_loopc sfddtdD\}}}tj|||i|}t}|||d|dj  |j d | |dj || |gddS)Ncsg|]}jqSr rrErYrpr"r r r[ r@z2GatherTestsBase._check_success..rrrF)rrr)r^r r] wrap_futuresr MockCallbackrr|rrrKr.rroassert_called_once_withrp)r#rrrrzracbr r"r _check_success s       zGatherTestsBase._check_successcCs||jdddS)NFrKrr"r r r test_success szGatherTestsBase.test_successcCs|jdddS)NTrrr"r r r test_result_exception_success sz-GatherTestsBase.test_result_exception_successc sfddtdD\}}}}}tj|||||}t}||t}|d| | j  | |||||d|| t|dS)Ncsg|]}jqSr rrr"r r r[ r@z6GatherTestsBase.test_one_exception..rrr)r^r r]rrrrrr|rrrrIrorrqrrLrd) r#rrrzrr rarrr r"r test_one_exception s        z"GatherTestsBase.test_one_exceptionc sfddtdD\}}}}tj||||ddi}t}||t}t}| d| || d j  || | j ||||dd||gdS)Ncsg|]}jqSr rrr"r r r[ r@z:GatherTestsBase.test_return_exceptions..rKTrr)r^r r]rrrrrrdr|rrrrrorIrrKrp) r#rrrzrrarrZexc2r r"r test_return_exceptions s$        z&GatherTestsBase.test_return_exceptionscCsdd}tdd|\}}}||dtd|ddd\}}}||dtd|ddd\}}}||d tdd|ddd\}}}||dtdd d d|\}}}||d dS) N )zimport asyncio.coroutinesz print(asyncio.coroutines._DEBUG)z-E-csFalse)PYTHONASYNCIODEBUGZ PYTHONDEVMODE1sTruez-Xdev)joinrrKrstrip)r#rstsstdoutstderrr r r test_env_var_debug s,     z"GatherTestsBase.test_env_var_debug) r&r'r(rBrrrrrrrrr r rFr r s rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)FutureGatherTestscGs|Sr r )r#rr r r r szFutureGatherTests.wrap_futurescCst|j|tjdtj|}||tj||j|j| |j| | | | g|t"tj|d|ji}Wdn1s0Y||j|jdS)Nr4)r rtrrr]rr<rqrrrrIrorKrprwrxre)r#Z seq_or_iterrar r r _check_empty_sequence s    0z'FutureGatherTests._check_empty_sequencecCs2|g|d|t|tddS)Nr r)rrlrr"r r r test_constructor_empty_sequence s   z1FutureGatherTests.test_constructor_empty_sequencec Cs|j}|j}|tt||Wdn1s@0Y|tJ|t tj||jdWdn1s0YWdn1s0YdSr:) rrErerMr}r r]rwrx)r#rrr r r %test_constructor_heterogenous_futures s   *  z7FutureGatherTests.test_constructor_heterogenous_futurescsfddtdD}tj|}|jjj| t "tj|dji}Wdn1s|0Y|jjj|dS)Ncsg|]}jqSr )rerErr"r r r[ r@zIFutureGatherTests.test_constructor_homogenous_futures..rr4) r^r r]rqrrrerrrorwrx)r#Zchildrenrar r"r #test_constructor_homogenous_futures s   0 z5FutureGatherTests.test_constructor_homogenous_futurescsfddtdD\}}}}}t|||||}t}|||d|j  | | | ||tj|d||t|dS)Ncsg|]}jqSr rrr"r r r[* r@z;FutureGatherTests.test_one_cancellation..rrr)r^r r]rrrr|rLrrrIrorrrrrrNrrd)r#rrrzrr rarr r"r test_one_cancellation) s       z'FutureGatherTests.test_one_cancellationc sfddtdD\}}}}}}tj||||||dd}t}|||dt} || |  j  | |d| t} || j |} | dtj| d tjd| d<| d <| d| ddd| g||dS) Ncsg|]}jqSr rrr"r r r[< szLFutureGatherTests.test_result_exception_one_cancellation..rTrrrrr)r^r r]rrrr|rrrLrrrrordrOrrNrKr) r#rrrzrr r~rarZzdeZrterr r"r &test_result_exception_one_cancellation; s,        z8FutureGatherTests.test_result_exception_one_cancellationN) r&r'r(rrrrrrrr r r r r s   rcsDeZdZfddZddZddZddZd d Zd d ZZ S) CoroutineGatherTestscstt|jdSr )rArBr rtrr"rFr r rBU s zCoroutineGatherTests.setUpcGs*g}|D]}|fdd}||q|S)Ncs |IdHSr r r`r r r r8\ sz/CoroutineGatherTests.wrap_futures..coro)r)r#rZcorosrar8r r r rY s  z!CoroutineGatherTests.wrap_futurescCsdd}|}|}t||}||j|j|j||j|jdd|}|}|t "tj|||jd}Wdn1s0Y||j|j|j|dS)NcsdSrr r r r r r8b szBCoroutineGatherTests.test_constructor_loop_selection..coroFrr;) r r]rqrrrrOrtrerwrx)r#r8Zgen1Zgen2raZgen3Zgen4rr r r test_constructor_loop_selectiona s   0z4CoroutineGatherTests.test_constructor_loop_selectioncCs|ttjdd}Wdn1s.0Y|d}|t*tj|||d||jd}Wdn1sz0Y||j||gddS)NcSs|Sr r rtr r r r8t sz.corordefr;)rrrr) rwrxr ryr]rrrKrp)r#r8rzrar r r test_duplicate_coroutinesr s ( 8 z.CoroutineGatherTests.test_duplicate_coroutinescsd|jfdd}tj||jdtj||jddfdd}tj||jd}t|j|||tj |j |Wdn1s0Y| | | | t|j| ddS)NrcsIdHd7dSrr r rr r rV s z?CoroutineGatherTests.test_cancellation_broadcast..innerr;cs"tIdHd7dSrr r]r )rrgathererrr r r s  z?CoroutineGatherTests.test_cancellation_broadcast..outer)rrEr rjrrrIrLrMrNrOrrrK)r#rVrr~r )rrrrrr test_cancellation_broadcast} s$  * z0CoroutineGatherTests.test_cancellation_broadcastcsdd|j|jfdd}tj||jd}t|jdt|jdt|j||t dS)Ncs|IdHtddS)Nzshould not be ignoredr#r r r r rV s z:CoroutineGatherTests.test_exception_marking..innercstIdHdSr rr rrrVr r r sz:CoroutineGatherTests.test_exception_marking..outerr;) rrEr rjrrr|rrrdrr rr test_exception_marking s       z+CoroutineGatherTests.test_exception_marking) r&r'r(rBrrrrrrr r rFr rS s    rcs\eZdZdZfddZdddZddd Zd d Zd d ZddZ ddZ ddZ Z S)RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cs$tt|_||jdSr rr"rFr r rB s  z!RunCoroutineThreadsafeTests.setUpFcsHtdIdH|rtd|r@t|jtdIdH||S)z"Wait 0.05 second and return a + b.rNFail!r)r rrdrr4rL)r#rrr-rLr r r r szRunCoroutineThreadsafeTests.addNcCsl|jdd||d}t||j}|r4|j|jdz ||W|pN|Sn|pd|0dS)z$Run add coroutine in the event loop.rr)r-rLN) rr Zrun_coroutine_threadsafer4Zcall_soon_threadsafer.rprorL)r#r-rLrB advance_coror8r"r r r target s z"RunCoroutineThreadsafeTests.targetcCs,|jd|j}|j|}||ddS)z9Test coroutine submission from a thread to an event loop.Nr)r4run_in_executorrrOrK)r#r"rpr r r test_run_coroutine_threadsafe s z9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafecCs\|jd|jd}|t}|j|Wdn1s>0Y|d|jjdS)z]Test coroutine submission from a thread to an event loop when an exception is raised.NTr) r4rrrMrdrOrNrr)r#r" exc_contextr r r ,test_run_coroutine_threadsafe_with_exception s *zHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptioncsfdd}jd|}tjj|Wdn1sH0YtjtjD]} | qjdS)zZTest coroutine submission from a thread to an event loop when a timeout is raised.cs jddS)NrrArr r"r r r? r@zXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout..N) r4rrMr r>rOrrr&rIro)r#rr"rhr r"r *test_run_coroutine_threadsafe_with_timeout s * zFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutcsVfdd}jd|}tjj|Wdn1sH0YdS)z\Test coroutine submission from a thread to an event loop when the task is cancelled.cs jddS)NTrFrr r"r r r? r@zZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled..N)r4rrMr rNrO)r#rr"r r"r ,test_run_coroutine_threadsafe_task_cancelled s zHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledcsdd}jdfdd}t}j|jjjj|t }j |Wdn1s0Y t |j d|j\\}}} |d|jdS)zjTest coroutine submission from a thread to an event loop when the task factory raise an exception.cSstdSr ) NameError)r4r8r r r task_factory szfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception..task_factoryNcs jddS)NT)rrr r"r r r?r@zbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception..rr)r4rrrr%rrDZget_task_factoryrMrrOrKrZcall_args_listr5r)r#r rXrrr4rrr r"r 4test_run_coroutine_threadsafe_task_factory_exception s     *zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF) r&r'r(__doc__rBrrrrrrr rr r rFr r s    rcs8eZdZfddZfddZddZddZZS) SleepTestscs$tt|_||jdSr rr"rFr r rBs  zSleepTests.setUpcs|jd|_tdSr r4r0rAtearDownr"rFr r rs zSleepTests.tearDowncs>dfddfdd}j|ddS)Nrcs |7dSr r rurwr r inc_result%sz.SleepTests.test_sleep_zero..inc_resultcsFjddtjdddIdH}d|dS)Nrrrrw)r4rrKr rrrrpr#r r r8)s   z(SleepTests.test_sleep_zero..coro )r4rOrKrr rr test_sleep_zero"s  zSleepTests.test_sleep_zerocCsF|t(|jtjd|jdWdn1s80YdSNrKr;)rwrxr4rOr rr"r r r test_loop_argument_is_deprecated3s z+SleepTests.test_loop_argument_is_deprecated)r&r'r(rBrrrrr r rFr r s  r cs@eZdZfddZfddZddZddZd d ZZS) WaitTestscs$tt|_||jdSr rr"rFr r rB:s  zWaitTests.setUpcs|jd|_tdSr r r"rFr r r?s zWaitTests.tearDowncCsJ|t,|jtjtg|jdWdn1s<0YdSr:)rwrxr4rOr rrr"r r r (test_loop_argument_is_deprecated_in_waitDs z2WaitTests.test_loop_argument_is_deprecated_in_waitcCsJ|t,|jtjtd|jdWdn1s<0YdSr)rwrxr4rOr rrr"r r r ,test_loop_argument_is_deprecated_in_wait_forJs z6WaitTests.test_loop_argument_is_deprecated_in_wait_forcCs|t&|jttgWdn1s60Y|jt}|t(|jt|tgWdn1s0YdSr )rwrxr4rOr rrrrr r r test_coro_is_deprecated_in_waitPs  " z)WaitTests.test_coro_is_deprecated_in_wait) r&r'r(rBrrrrrr r rFr r9s   rcs@eZdZfddZfddZddZddZd d ZZS) CompatibilityTestscs$tt|_||jdSr rr"rFr r rB`s  zCompatibilityTests.setUpcs|jd|_tdSr r r"rFr r res zCompatibilityTests.tearDowncCsV|ttjdd}Wdn1s.0Y|j|}|d|dS)NcsstdEdHdS)Nrrmrr r r r r8msz:CompatibilityTests.test_yield_from_awaitable..corormr<)r#r8rpr r r test_yield_from_awaitablejs  (z,CompatibilityTests.test_yield_from_awaitablecs|ttjddWdn1s.0Y|ttjddWdn1sf0Yfdd}|j|}|ddg|dS) NcSsdS)Nok1r r r r r rxsz;CompatibilityTests.test_await_old_style_coro..coro1csstdEdHdS)Nrok2rr r r r r}sz;CompatibilityTests.test_await_old_style_coro..coro2cstIdHSr rr rrr r rVsz;CompatibilityTests.test_await_old_style_coro..innerrrr<)r#rVrpr rr test_await_old_style_corous ( (z,CompatibilityTests.test_await_old_style_corocCstd}tdd|dddS)Nz import asyncio async def native_coro(): pass @asyncio.coroutine def old_style_coro(): yield from native_coro() asyncio.run(old_style_coro()) z-Wignore::DeprecationWarningrr)r)textwrapdedentr)r#rr r r test_debug_mode_interops z*CompatibilityTests.test_debug_mode_interop) r&r'r(rBrrrr"rr r rFr r\s    r__main__)F)Cr ry contextlibrhrrTrrsrr2r r+r Zunittestrrr rrrZtest.test_asynciorrrirZtest.support.script_helperrr rcontextmanagerrrr r!r)rSr2rrZ skipUnlessrJZTestCaserrrrrrrrrrrrrrrrrrrrr rrr&rMr r r r s         :5     p   fW`d"#?