a
    	3j:                     @   s`   d dl Z d dlZd dlmZ ddlmZ G dd de jZG dd dejZ	G d	d
 d
e	Z
dS )    N)mock   )utilsc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestPolicyc                 C   s   || _ d | _d S N)loop_factoryloop)selfr    r
   Z/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_asyncio/test_runners.py__init__
   s    zTestPolicy.__init__c                 C   s   t d S r   )RuntimeErrorr	   r
   r
   r   get_event_loop   s    zTestPolicy.get_event_loopc                 C   s   |   S r   )r   r   r
   r
   r   new_event_loop   s    zTestPolicy.new_event_loopc                 C   s   |d ur|| _ d S r   r   )r	   r   r
   r
   r   set_event_loop   s    zTestPolicy.set_event_loopN)__name__
__module____qualname__r   r   r   r   r
   r
   r
   r   r      s   r   c                       s0   e Zd Zdd Z fddZ fddZ  ZS )BaseTestc                    sB   t   t  _t  _d jj_d _ fdd}| _	 S )Nr
   Fc                      s
   d _ d S NT)shutdown_ag_runr
   r   r
   r   shutdown_asyncgens%   s    z-BaseTest.new_loop.<locals>.shutdown_asyncgens)
asyncioZBaseEventLoopr   MockZ_process_events	_selectorselectZreturn_valuer   r   )r	   r   r
   r   r   new_loop   s    


zBaseTest.new_loopc                    s"   t    t| j}t| d S r   )supersetUpr   r   r   set_event_loop_policyr	   Zpolicy	__class__r
   r   r    +   s    

zBaseTest.setUpc                    sH   t  }|jd ur0| |j  | |jj t d  t   d S r   )	r   Zget_event_loop_policyr   
assertTrueZ	is_closedr   r!   r   tearDownr"   r#   r
   r   r&   1   s    

zBaseTest.tearDown)r   r   r   r   r    r&   __classcell__r
   r
   r#   r   r      s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )RunTestsc                 C   s    dd }|  t| d d S )Nc                      s   t dI d H  dS )Nr   *   r   sleepr
   r
   r
   r   main>   s    z.RunTests.test_asyncio_run_return.<locals>.mainr)   )assertEqualr   runr	   r,   r
   r
   r   test_asyncio_run_return=   s    z RunTests.test_asyncio_run_returnc                 C   sD   dd }|  td t|  W d    n1 s60    Y  d S )Nc                      s   t dI d H  tdd S )Nr   spam)r   r+   
ValueErrorr
   r
   r
   r   r,   E   s    z.RunTests.test_asyncio_run_raises.<locals>.mainr1   )assertRaisesRegexr2   r   r.   r/   r
   r
   r   test_asyncio_run_raisesD   s    z RunTests.test_asyncio_run_raisesc              
   C   sx   ddd hD ]f}| j |dF | td t| W d    n1 sJ0    Y  W d    q1 sh0    Y  qd S )Nr   c                   S   s   d S r   r
   r
   r
   r
   r   <lambda>M       z5RunTests.test_asyncio_run_only_coro.<locals>.<lambda>)objza coroutine was expected)ZsubTestr3   r2   r   r.   )r	   or
   r
   r   test_asyncio_run_only_coroL   s    z#RunTests.test_asyncio_run_only_coroc                    s    fdd}t |d t j|ddd tddd 0 t |d t j|ddd W d    n1 sr0    Y  d S )	Nc                    s   t  } | |  d S r   )r   r   ZassertIsZ	get_debug)Zexpectedr   r   r
   r   r,   T   s    z-RunTests.test_asyncio_run_debug.<locals>.mainFT)debugz!asyncio.coroutines._is_debug_modec                   S   s   dS r   r
   r
   r
   r
   r   r5   Z   r6   z1RunTests.test_asyncio_run_debug.<locals>.<lambda>)r   r.   r   Zpatchr/   r
   r   r   test_asyncio_run_debugS   s    zRunTests.test_asyncio_run_debugc                    sH    fdd |  td t   W d    n1 s:0    Y  d S )Nc                     s,     } zt |  W |   n
|   0 d S r   )r   r.   close)coror,   r
   r   r,   _   s    z9RunTests.test_asyncio_run_from_running_loop.<locals>.mainzcannot be called from a running)r3   r   r   r.   r   r
   r>   r   "test_asyncio_run_from_running_loop^   s
    z+RunTests.test_asyncio_run_from_running_loopc                    s@   d dd   fdd}|  t| d |   d S )Nc                      s   t dI d H  d S )N皙?r*   r
   r
   r
   r   leftoverm   s    zARunTests.test_asyncio_run_cancels_hanging_tasks.<locals>.leftoverc                      s   t   dS N{   )r   create_taskr
   rA   lo_taskr
   r   r,   p   s    z=RunTests.test_asyncio_run_cancels_hanging_tasks.<locals>.mainrC   )r-   r   r.   r%   doner/   r
   rE   r   &test_asyncio_run_cancels_hanging_tasksj   s
    z/RunTests.test_asyncio_run_cancels_hanging_tasksc                    sh   d t   dd  fdd}| t| d |    t	dt
td d S )Nc                      s6   zt dI d H  W n t jy0   dd  Y n0 d S )Nr@   r   r   )r   r+   CancelledErrorr
   r
   r
   r   rA   |   s    zHRunTests.test_asyncio_run_reports_hanging_tasks_errors.<locals>.leftoverc                     s   t  }  | _t  dS rB   )r   get_running_loopcall_exception_handlerrD   r   Zcall_exc_handler_mockrA   rF   r
   r   r,      s    zDRunTests.test_asyncio_run_reports_hanging_tasks_errors.<locals>.mainrC   zasyncio.run.*shutdown)messageZtask	exception)r   r   r-   r   r.   r%   rG   Zassert_called_with
test_utilsZMockPatternZMockInstanceOfZeroDivisionErrorr/   r
   rL   r   -test_asyncio_run_reports_hanging_tasks_errorsx   s    z6RunTests.test_asyncio_run_reports_hanging_tasks_errorsc                    s   d d G dd dt  dd fdd fdd}|   t|  W d    n1 sj0    Y  |   | j | j	 d S )	Nc                   @   s   e Zd ZdS )zSRunTests.test_asyncio_run_closes_gens_after_hanging_tasks_errors.<locals>.FancyExitN)r   r   r   r
   r
   r
   r   	FancyExit   s   rR   c                   S  s   dV  t dI d H  q d S )Nr   r*   r
   r
   r
   r   fidget   s    zPRunTests.test_asyncio_run_closes_gens_after_hanging_tasks_errors.<locals>.fidgetc                     s@     z2 z3 d H W } q6 W n t jy:   dd  Y n0 d S )Nr   r   )r   rI   )Zthe_meaning_of_life)rS   spinnerr
   r   spin   s    zNRunTests.test_asyncio_run_closes_gens_after_hanging_tasks_errors.<locals>.spinc                     s&   t  } t | _t   d S r   )r   rJ   r   r   rK   rD   r   )rR   lazyboyrU   r
   r   r,      s    
zNRunTests.test_asyncio_run_closes_gens_after_hanging_tasks_errors.<locals>.main)
	ExceptionZassertRaisesr   r.   r%   rG   ZassertIsNoneag_frameZassertFalse
ag_runningr/   r
   )rR   rS   rV   rU   rT   r   7test_asyncio_run_closes_gens_after_hanging_tasks_errors   s    	*z@RunTests.test_asyncio_run_closes_gens_after_hanging_tasks_errorsN)r   r   r   r0   r4   r9   r;   r?   rH   rQ   rZ   r
   r
   r
   r   r(   ;   s   r(   )r   Zunittestr    r   rO   ZAbstractEventLoopPolicyr   ZTestCaser   r(   r
   r
   r
   r   <module>   s   