U iÛf²ã@s0ddlZddlZddlmZGdd„deƒZdS)éNé)ÚTestCasecsŒeZdZd‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd ‡fdd„ Z‡ZS)!ÚIsolatedAsyncioTestCaseÚrunTestcstƒ |¡d|_d|_dS©N)ÚsuperÚ__init__Ú_asyncioTestLoopÚ_asyncioCallsQueue)ÚselfZ methodName©Ú __class__©ú8/opt/alt/python38/lib64/python3.8/unittest/async_case.pyr"s z IsolatedAsyncioTestCase.__init__cÃsdSrr©r rrrÚ asyncSetUp'sz"IsolatedAsyncioTestCase.asyncSetUpcÃsdSrrrrrrÚ asyncTearDown*sz%IsolatedAsyncioTestCase.asyncTearDowncOs|j|f|˜|ŽdSr)Z addCleanup)r ÚfuncÚargsÚkwargsrrrÚaddAsyncCleanup-s z'IsolatedAsyncioTestCase.addAsyncCleanupcCs| ¡| |j¡dSr)ZsetUpÚ _callAsyncrrrrrÚ _callSetUp<sz"IsolatedAsyncioTestCase._callSetUpcCs| |¡dSr©Ú_callMaybeAsync)r ÚmethodrrrÚ_callTestMethod@sz'IsolatedAsyncioTestCase._callTestMethodcCs| |j¡| ¡dSr)rrZtearDownrrrrÚ _callTearDownCs z%IsolatedAsyncioTestCase._callTearDowncOs|j|f|ž|ŽdSrr)r ZfunctionrrrrrÚ _callCleanupGsz$IsolatedAsyncioTestCase._callCleanupcOsL|jdk st‚|||Ž}t |¡s&t‚|j ¡}|j ||f¡|j |¡Sr©r ÚAssertionErrorÚinspectZ isawaitableÚ create_futurer Ú put_nowaitÚrun_until_complete©r rrrÚretÚfutrrrrJs   z"IsolatedAsyncioTestCase._callAsynccOsP|jdk st‚|||Ž}t |¡rH|j ¡}|j ||f¡|j |¡S|SdSrrr%rrrrRs    z'IsolatedAsyncioTestCase._callMaybeAsyncc Ãs¼t ¡|_}| d¡| ¡IdH}| ¡|dkr:dS|\}}z |IdH}| ¡s`| |¡Wqttfk r|‚Yqt tj fk r´}z| ¡s¤|  |¡W5d}~XYqXqdSr) ÚasyncioZQueuer Z set_resultÚgetZ task_doneÚ cancelledÚ SystemExitÚKeyboardInterruptÚ BaseExceptionZCancelledErrorZ set_exception)r r'ZqueueZqueryZ awaitabler&ZexrrrÚ_asyncioLoopRunner\s   z*IsolatedAsyncioTestCase._asyncioLoopRunnercCsX|jdkst‚t ¡}t |¡| d¡||_| ¡}| | |¡¡|_ |  |¡dS)NT) r r r(Znew_event_loopÚset_event_loopZ set_debugr"Z create_taskr.Z_asyncioCallsTaskr$)r Úloopr'rrrÚ_setupAsyncioLoopos  z)IsolatedAsyncioTestCase._setupAsyncioLoopc CsØ|jdk st‚|j}d|_|j d¡| |j ¡¡zˆt  |¡}|sNW¢vdS|D] }|  ¡qR| tj ||ddœŽ¡|D]0}|  ¡rŠq||  ¡dk r|| d|  ¡|dœ¡q|| | ¡¡W5t d¡| ¡XdS)NT)r0Zreturn_exceptionsz(unhandled exception during test shutdown)ÚmessageÚ exceptionÚtask)r r r r#r$Újoinr(r/ÚcloseZ all_tasksZcancelZgatherr*r3Zcall_exception_handlerZshutdown_asyncgens)r r0Z to_cancelr4rrrÚ_tearDownAsyncioLoopys4   ÿ ý  z,IsolatedAsyncioTestCase._tearDownAsyncioLoopNcs(| ¡ztƒ |¡W¢S| ¡XdSr)r1r7rÚrun)r Úresultr rrr8›szIsolatedAsyncioTestCase.run)r)N)Ú__name__Ú __module__Ú __qualname__rrrrrrrrrrr.r1r7r8Ú __classcell__rrr rrs  "r)r(r!ZcaserrrrrrÚs