o
    Qœ_l  ã                   @   s^   d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlZd dlZG dd„ dej	ƒZ
dS )é    N)ÚPopen)Úmkdtempc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚAutoreloadTestc                 C   s   t ƒ | _d S )N)r   Úpath©Úself© r   ú>/usr/lib/python3/dist-packages/tornado/test/autoreload_test.pyÚsetUp   s   zAutoreloadTest.setUpc                 C   s>   z	t  | j¡ W d S  ty   t d¡ t  | j¡ Y d S w )Né   )ÚshutilÚrmtreer   ÚOSErrorÚtimeÚsleepr   r   r   r	   ÚtearDown   s   
ùzAutoreloadTest.tearDownc                 C   sÞ   d}t  t j | jd¡¡ tt j | jd¡dƒ ¡  tt j | jd¡dƒ�}| |¡ W d   ƒ n1 s5w   Y  t  ¡ }dt jv rM|t j	t jd  7 }t
tjddgtj| jtt j|d�d	d
�}| ¡ d }|  |d¡ d S )Na  import os
import sys

from tornado import autoreload

# This import will fail if path is not set up correctly
import testapp

print('Starting')
if 'TESTAPP_STARTED' not in os.environ:
    os.environ['TESTAPP_STARTED'] = '1'
    sys.stdout.flush()
    autoreload._reload()
Útestappztestapp/__init__.pyÚwztestapp/__main__.pyÚ
PYTHONPATHú-m©r   T©ÚstdoutÚcwdÚenvÚuniversal_newlinesr   úStarting
Starting
)ÚosÚmkdirr   ÚjoinÚopenÚcloseÚwriteÚgetcwdÚenvironÚpathsepr   ÚsysÚ
executableÚ
subprocessÚPIPEÚdictÚcommunicateÚassertEqual)r   ÚmainÚfÚ
pythonpathÚpÚoutr   r   r	   Útest_reload_module   s$   ÿ

ûz!AutoreloadTest.test_reload_modulec           	      C   s&  d}t  t j | jd¡¡ t j | jdd¡}t|dƒ ¡  t j | jdd¡}t|dƒ�}| |¡ W d   ƒ n1 s;w   Y  t  ¡ }dt jv rS|t j	t jd  7 }t
tjddddgtj| jtt j|d	�d
d�}tdƒD ]}| ¡ d urw nt d¡ qm| ¡  tdƒ‚| ¡ d }|  |d¡ d S )Na  import os
import sys

# This import will fail if path is not set up correctly
import testapp

if 'tornado.autoreload' not in sys.modules:
    raise Exception('started without autoreload wrapper')

import tornado.autoreload

print('Starting')
sys.stdout.flush()
if 'TESTAPP_STARTED' not in os.environ:
    os.environ['TESTAPP_STARTED'] = '1'
    # Simulate an internal autoreload (one not caused
    # by the wrapper).
    tornado.autoreload._reload()
else:
    # Exit directly so autoreload doesn't catch it.
    os._exit(0)
r   z__init__.pyr   z__main__.pyr   r   ztornado.autoreloadr   Tr   é(   gš™™™™™¹?zsubprocess failed to terminater   r   )r   r   r   r   r    r!   r"   r#   r$   r%   r   r&   r'   r(   r)   r*   ÚrangeÚpollr   r   ÚkillÚ	Exceptionr+   r,   )	r   r-   Ú	init_fileÚ	main_filer.   r/   Úautoreload_procÚir1   r   r   r	   Ú test_reload_wrapper_preservationB   s4   ÿ
û
z/AutoreloadTest.test_reload_wrapper_preservationN)Ú__name__Ú
__module__Ú__qualname__r
   r   r2   r<   r   r   r   r	   r      s
    'r   )r   r   r(   r   r&   Útempfiler   r   ÚunittestÚTestCaser   r   r   r   r	   Ú<module>   s    