U
    lufN                  $   @   s(  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	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mZmZ ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g$Zd+d, Zd-d. ZG d/d0 d0ejZG d1d2 d2ejZd3d4 Zed5kr$e  dS )6    )reduceN)AsyncHTTPClient)
HTTPServer)Resolver)defineadd_parse_callbackoptionsztornado.httputil.doctestsztornado.iostream.doctestsztornado.util.doctestsztornado.test.asyncio_testztornado.test.auth_testztornado.test.autoreload_testztornado.test.circlerefs_testztornado.test.concurrent_testz!tornado.test.curl_httpclient_testztornado.test.escape_testztornado.test.gen_testz!tornado.test.http1connection_testztornado.test.httpclient_testztornado.test.httpserver_testztornado.test.httputil_testztornado.test.import_testztornado.test.ioloop_testztornado.test.iostream_testztornado.test.locale_testztornado.test.locks_testztornado.test.netutil_testztornado.test.log_testztornado.test.options_testztornado.test.process_testztornado.test.queues_testztornado.test.routing_testz#tornado.test.simple_httpclient_testztornado.test.tcpclient_testztornado.test.tcpserver_testztornado.test.template_testztornado.test.testing_testztornado.test.twisted_testztornado.test.util_testztornado.test.web_testztornado.test.websocket_testztornado.test.wsgi_testc                   C   s   t jtS N)unittestZdefaultTestLoaderZloadTestsFromNamesTEST_MODULES r   r   9/tmp/pip-unpacked-wheel-bmg6zs32/tornado/test/runtests.pyall:   s    r   c                    s   G  fdddt j}|S )Nc                       s*   e Zd Z fddZ fddZ  ZS )z2test_runner_factory.<locals>.TornadoTextTestRunnerc                    s   |d< t  j|| d S )Nstream)super__init__selfargskwargs)	__class__stderrr   r   r   @   s    z;test_runner_factory.<locals>.TornadoTextTestRunner.__init__c              	      sV   t  |}|jrRtdd |jD }| jtddt	|  | jd |S )Nc                 s   s   | ]\}}|V  qd S r	   r   ).0testreasonr   r   r   	<genexpr>G   s     zItest_runner_factory.<locals>.TornadoTextTestRunner.run.<locals>.<genexpr>z#Some tests were skipped because: %sz, 
)
r   runskippedsetr   writetextwrapfilljoinsorted)r   r   resultZskip_reasonsr   r   r   r   D   s    z6test_runner_factory.<locals>.TornadoTextTestRunner.run)__name__
__module____qualname__r   r   __classcell__r   r   r&   r   TornadoTextTestRunner?   s   r,   )r
   ZTextTestRunner)r   r,   r   r+   r   test_runner_factory>   s    r-   c                       s(   e Zd ZdZ fddZdd Z  ZS )
LogCounterz3Counts the number of WARNING or higher log records.c                    s$   t  j|| d | _ | _| _d S Nr   )r   r   
info_countwarning_counterror_countr   r&   r   r   r   W   s    zLogCounter.__init__c                 C   sV   |j tjkr|  jd7  _n6|j tjkr8|  jd7  _n|j tjkrR|  jd7  _dS )N   T)levelnologgingERRORr2   WARNINGr1   INFOr0   )r   recordr   r   r   filter[   s    zLogCounter.filter)r'   r(   r)   __doc__r   r:   r*   r   r   r&   r   r.   T   s   r.   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CountingStderrc                 C   s   || _ d| _d S r/   )real
byte_count)r   r=   r   r   r   r   f   s    zCountingStderr.__init__c                 C   s   |  j t|7  _ | j|S r	   )r>   lenr=   r    )r   datar   r   r   r    j   s    zCountingStderr.writec                 C   s
   | j  S r	   )r=   flush)r   r   r   r   rA   n   s    zCountingStderr.flushN)r'   r(   r)   r   r    rA   r   r   r   r   r<   e   s   r<   c                     s  t d t jdtd t jdtd t jdtdd t jdtd t jdtdd tdtj t	dt
d dd	 d
 t	dt
d tjd
 t	dt
d tjd
 t	dt
dddd	 d t	dddd dd } t	dt
d | d
 t  t fdd	 tj}t|}|t_dd l}i }d|d< t||d< z|jjf | W 5  jdksh jdksh jdksh|jdkrtd j j j|j tjrtd X d S )Nerrorignore)categoryztornado\..*)rD   moduleztornado.accessZ
httpclientc                 S   s   t j| tdddS )NF)Z
allow_ipv6)defaults)r   	configuredict)sr   r   r   <lambda>   s    zmain.<locals>.<lambda>)typedefaultcallbackZ
httpserverresolverZdebug_gcTzhA comma-separated list of gc module debug constants, e.g. DEBUG_STATS or DEBUG_COLLECTABLE,DEBUG_OBJECTSc                 S   s   t ttjdd | D S )Nc                 s   s   | ]}t t|V  qd S r	   )getattrgc)r   vr   r   r   r      s     z)main.<locals>.<lambda>.<locals>.<genexpr>)rP   Z	set_debugr   operatoror_)valuesr   r   r   rJ      s   )rK   multiplehelprM   zfail-if-logszTIf true, fail the tests if any log output is produced (unless captured by ExpectLog))rL   rV   c                 S   s   t t j|  d S r	   )locale	setlocaleLC_ALL)xr   r   r   
set_locale   s    zmain.<locals>.set_localerW   c                      s   t  jd  S r/   )r5   	getLoggerhandlers	addFilterr   Zlog_counterr   r   rJ          r   FwarningsZ
testRunnerz?logged %d infos, %d warnings, %d errors, and %d bytes to stderrr3   )ra   filterwarningsImportWarningDeprecationWarningPendingDeprecationWarningr5   r\   setLevelCRITICALr   strr   rG   r   r.   r   sysr   r<   Ztornado.testingr-   r0   r1   r2   r>   rB   r   Zfail_if_logsexitZtestingmain)r[   orig_stderrZcounting_stderrZtornador   r   r_   r   rk   r   sz    
  
rk   __main__)	functoolsr   rP   iorW   r5   rR   r!   ri   r
   ra   Ztornado.httpclientr   Ztornado.httpserverr   Ztornado.netutilr   Ztornado.optionsr   r   r   r   r   r-   Filterr.   IOBaser<   rk   r'   r   r   r   r   <module>   sr   (`
