U
    1e>                     @   sl   d Z ddlZddlmZ ddlZddlmZ ddlmZ ddlm	Z
 ddlmZ dd	 Zd
d Zdd ZdS )z%Test suite for the deepreload module.    N)Path)TemporaryDirectory)modules_reloading)reload)prepended_to_syspathc                  C   s@  t  .} t|  t| }t|d ddd}|d W 5 Q R X t|d ddd}|d W 5 Q R X dd	l}dd	l}| }t|d
gd t	||jdkst
d|_tjt
dd t|d
gd W 5 Q R X ttdkst
|jrt
| }d|_t| |jst
t	||jdks(t
W 5 Q R X W 5 Q R X d	S )z?Test that dreload does deep reloads and skips excluded modules.zA.pywzutf-8)encodingz!class Object:
    pass
ok = True
zB.pyz$import A
assert A.ok, 'we are fine'
r   NA)excludeTFzwe are finematch)r   r   r   openwriter	   BZObjectdreload
isinstanceAssertionErrorokpytestraiseslenr   )ZtmpdirZ
tmpdirpathfr	   r   obj r   E/tmp/pip-unpacked-wheel-3hxk2k58/IPython/lib/tests/test_deepreload.pytest_deepreload   s,    

r   c                   C   s   t ttd d S )N
modulename)r   r   	TypeErrorr   r   r   r   r   test_not_module2   s    r   c               	   C   s0   t d} tjtdd t|  W 5 Q R X d S )Nfake_moduleznot in sys.modulesr   )types
ModuleTyper   r   ImportErrorr   )r   r   r   r   test_not_in_sys_modules6   s    
r#   )__doc__r    pathlibr   r   tempfiler   ZIPython.lib.deepreloadr   r   r   ZIPython.utils.syspathcontextr   r   r   r#   r   r   r   r   <module>   s    