File: //usr/local/lib/python3.7/test/__pycache__/test_contextlib_async.cpython-37.pyc
B
��g�: � @ s� d dl Z d dlmZmZmZ d dlZd dlmZ d dlZd dl m
Z
dd� ZG dd� dej�Z
G d d
� d
ej�ZG dd� de
ej�Zed
kr�e�� dS )� N)�asynccontextmanager�AbstractAsyncContextManager�AsyncExitStack)�support)�TestBaseExitStackc s t �� �� fdd��}|S )z5Decorator to turn an async function into a test case.c s@ � | |�}t �� }t �|� z
|�|�S |�� t �d � X d S )N)�asyncio�new_event_loop�set_event_loopZrun_until_complete�close)�args�kwargs�coro�loop)�func� �6/usr/local/lib/python3.7/test/test_contextlib_async.py�wrapper s
z_async_test.<locals>.wrapper)� functools�wraps)r r r )r r �_async_test
s
r c @ s4 e Zd Zedd� �Zedd� �Zdd� Zdd� Zd S )
�TestAbstractAsyncContextManagerc
� sZ G dd� dt �}|� }| �|�� I d H |� |4 I d H �}| �||� W d Q I d H R X d S )Nc s e Zd Z� fdd�Z� ZS )z@TestAbstractAsyncContextManager.test_enter.<locals>.DefaultEnterc � s t � j|� I d H d S )N)�super� __aexit__)�selfr )� __class__r r r s zJTestAbstractAsyncContextManager.test_enter.<locals>.DefaultEnter.__aexit__)�__name__�
__module__�__qualname__r �
__classcell__r r )r r �DefaultEnter s r )r �assertIs�
__aenter__)r r Zmanager�contextr r r �
test_enter s
z*TestAbstractAsyncContextManager.test_enterc � s� t dd� �� � fdd�}g }td�}| �t��b � � 4 I d H �B x:|� 2 y3 d H }W n
tk
spX |�|� |�qH Y W W d Q I d H R X W d Q R X | �|dg� d S )Nc S s
d V d S )Nr r r r r �ctx+ s zUTestAbstractAsyncContextManager.test_async_gen_propagates_generator_exit.<locals>.ctxc
s* � � 4 I d H � dV W d Q I d H R X d S )N� r r )r$ r r �gen/ s zUTestAbstractAsyncContextManager.test_async_gen_propagates_generator_exit.<locals>.gen� r% )r �
ValueError�assertRaises�StopAsyncIteration�append�assertEqual)r r&