ó
¨œž[c           @` sc  d  d l  m Z m Z m 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 m Z m Z m Z m Z d  d l m Z m Z m Z m Z d  d l m Z m Z d  d l m Z m Z m Z d  d	 l Z d  d	 l Z d  d	 l  Z  d  d	 l! Z! d
 e f d „  ƒ  YZ" d e f d „  ƒ  YZ# d e f d „  ƒ  YZ$ e% d k r_e j& ƒ  n  d	 S(   i    (   t   absolute_importt   divisiont   print_function(   t   gen(   t   IOLoop(   t   app_log(   t   StackContextt   wrapt   NullContextt   StackContextInconsistentErrort   ExceptionStackContextt   run_with_stack_contextt   _state(   t   AsyncHTTPTestCaset   AsyncTestCaset	   ExpectLogt   gen_test(   t   unittestt   ignore_deprecation(   t   asynchronoust   Applicationt   RequestHandlerNt   TestRequestHandlerc           B` sK   e  Z d  „  Z e ƒ   e d „  ƒ Z Wd QXd „  Z d „  Z d „  Z RS(   c         C` s   t  t |  ƒ j | | ƒ d  S(   N(   t   superR   t   __init__(   t   selft   appt   request(    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR      s    c         C` s'   t  j d ƒ t j ƒ  j |  j ƒ d  S(   Ns   in get()(   t   loggingt   debugR   t   currentt   add_callbackt   part2(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   get   s    Nc         C` s'   t  j d ƒ t j ƒ  j |  j ƒ d  S(   Ns
   in part2()(   R   R   R   R   R   t   part3(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR       s    c         C` s   t  j d ƒ t d ƒ ‚ d  S(   Ns
   in part3()s   test exception(   R   R   t	   Exception(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR"   #   s    c         K` sG   d | k r6 t  | d d ƒ d k r6 |  j d ƒ n |  j d ƒ d  S(   Nt   exc_infoi   s   test exceptions   got expected exceptions   unexpected failure(   t   strt   write(   R   t   status_codet   kwargs(    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   write_error'   s    &(	   t   __name__t
   __module__R   R   R   R!   R    R"   R)   (    (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR      s   	
		t   HTTPStackContextTestc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s   t  d t f g ƒ S(   Nt   /(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   get_app/   s    c         C` s‚   t  t d ƒ > t ƒ  . |  j j |  j d ƒ |  j ƒ |  j ƒ  Wd  QXWd  QX|  j |  j	 j
 d ƒ |  j d |  j	 j k ƒ d  S(   Ns   Uncaught exception GET /R-   iô  s   got expected exception(   R   R   R   t   http_clientt   fetcht   get_urlt   handle_responset   waitt   assertEqualt   responset   codet
   assertTruet   body(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_stack_context2   s    
c         C` s   | |  _  |  j ƒ  d  S(   N(   R5   t   stop(   R   R5   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR2   :   s    	(   R*   R+   R.   R9   R2   (    (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR,   .   s   		t   StackContextTestc           B` s˜   e  Z d  „  Z d „  Z e j d „  ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z e d	 „  ƒ Z d
 „  Z e d „  ƒ Z e d „  ƒ Z RS(   c         C` sL   t  t |  ƒ j ƒ  g  |  _ t j ƒ  |  _ |  j j ƒ  t j d t	 ƒ d  S(   Nt   ignore(
   R   R;   t   setUpt   active_contextst   warningst   catch_warningst   warning_catchert	   __enter__t   simplefiltert   DeprecationWarning(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR=   @   s
    	c         C` s-   |  j  j d  d  d  ƒ t t |  ƒ j ƒ  d  S(   N(   RA   t   __exit__t   NoneR   R;   t   tearDown(   R   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRG   G   s    c         c` s2   |  j  j | ƒ d  V|  j |  j  j ƒ  | ƒ d  S(   N(   R>   t   appendR4   t   pop(   R   t   name(    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   contextK   s    c         ` sj   ‡  ‡ f d †  } ‡ f d †  ‰  ‡ f d †  } t  t j ˆ j d ƒ ƒ  | | ƒ Wd  QXˆ j ƒ  d  S(   Nc         ` sN   t  |  ƒ }  t t j ˆ j d ƒ ƒ ! ˆ j j t j ˆ  |  ƒ ƒ Wd  QXd  S(   Nt   library(   R   R   t	   functoolst   partialRK   t   io_loopR   (   t   callback(   t   library_inner_callbackR   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   library_functionT   s    	c         ` s(   ˆ  j  ˆ  j d d d g ƒ |  ƒ  d  S(   Niþÿÿÿt   applicationRL   (   R4   R>   (   RP   (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRQ   [   s    c           ` s%   ˆ  j  ˆ  j d d ƒ ˆ  j ƒ  d  S(   NiÿÿÿÿRS   (   R4   R>   R:   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   final_callback`   s    RS   (   R   RM   RN   RK   R3   (   R   RR   RT   (    (   RQ   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_exit_library_contextS   s    c         ` s‡   g  ‰  ‡  ‡ ‡ f d †  } ‡  ‡ ‡ f d †  ‰ ‡  ‡ ‡ f d †  ‰ ‡  ‡ ‡ f d †  ‰ ‡ f d †  ‰ ˆ j  j | ƒ ˆ j ƒ  d  S(   Nc          ` sE   t  t j ˆ j d ƒ ƒ $ }  ˆ  j |  ƒ ˆ j j ˆ ƒ Wd  QXd  S(   Nt   c1(   R   RM   RN   RK   RH   RO   R   (   RV   (   t   deactivate_callbackst   f2R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   f1n   s    c          ` sE   t  t j ˆ j d ƒ ƒ $ }  ˆ  j |  ƒ ˆ j j ˆ ƒ Wd  QXd  S(   Nt   c2(   R   RM   RN   RK   RH   RO   R   (   RZ   (   RW   t   f3R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRX   s   s    c          ` sE   t  t j ˆ j d ƒ ƒ $ }  ˆ  j |  ƒ ˆ j j ˆ ƒ Wd  QXd  S(   Nt   c3(   R   RM   RN   RK   RH   RO   R   (   R\   (   RW   t   f4R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR[   x   s    c           ` sW   ˆ j  ˆ j d d d g ƒ ˆ  d ƒ  ˆ j  ˆ j d d d g ƒ ˆ j j ˆ ƒ d  S(   NRV   RZ   R\   i   (   R4   R>   RO   R   (    (   RW   t   f5R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR]   }   s    c           ` s'   ˆ  j  ˆ  j d d g ƒ ˆ  j ƒ  d  S(   NRV   R\   (   R4   R>   R:   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR^   …   s    (   RO   R   R3   (   R   RY   (    (   RW   RX   R[   R]   R^   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_deactivatek   s    c         ` sé   ‡ f d †  ‰  ‡  ‡ f d †  } | ƒ  \ } } ˆ j  | ƒ  d d d g ƒ | ƒ  \ } } | d ƒ  ˆ j  | ƒ  d d g ƒ | ƒ  \ } } | d ƒ  ˆ j  | ƒ  d d g ƒ | ƒ  \ } } | d ƒ  ˆ j  | ƒ  d d g ƒ d  S(	   Nc          ` sk   t  j \ }  } g  } x* | d  k	 rA | j | ƒ | j d } q Wˆ  j t t |  ƒ ƒ | ƒ t ˆ  j ƒ S(   Ni   (	   R   t   contextsRF   RH   t   old_contextsR4   t   listt   reversedR>   (   t   full_contextst   chaint   exception_contexts(   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   check_contextsŽ   s    c          ` s™   t  ƒ  Š t j }  t |  ˆ j d ƒ ƒ b } t |  ˆ j d ƒ ƒ A } t |  ˆ j d ƒ ƒ   } t ˆ  ƒ | | | g f SWd QXWd QXWd QXWd QXd S(   s‚   Wraps a function in three stack contexts, and returns
            the function along with the deactivation functions.
            t   c0RV   RZ   N(   R   RM   RN   R   RK   R   (   RN   Rh   RV   RZ   (   Rg   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   make_wrapped_function™   s    
	Rh   RV   RZ   i    i   i   (   R4   (   R   Ri   t   funcRW   (    (   Rg   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_deactivate_order‹   s    c         ` sQ   ‡  ‡ f d †  } ‡ ‡ f d †  ‰  ‡ f d †  ‰ ˆ j  j | ƒ ˆ j ƒ  d  S(   Nc          ` s[   t  t j ˆ j d ƒ ƒ  t ˆ  ƒ }  Wd  QXt  t j ˆ j d ƒ ƒ  |  ƒ  Wd  QXd  S(   NRV   RZ   (   R   RM   RN   RK   R   (   t   wrapped(   RX   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRY   ½   s    c           ` s'   ˆ j  d ˆ j ƒ ˆ j j ˆ  ƒ d  S(   NRV   (   t   assertInR>   RO   R   (    (   R[   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRX   Ã   s    c           ` s4   ˆ  j  d ˆ  j ƒ ˆ  j d ˆ  j ƒ ˆ  j ƒ  d  S(   NRV   RZ   (   Rm   R>   t   assertNotInR:   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR[   Ç   s    (   RO   R   R3   (   R   RY   (    (   RX   R[   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_isolation_nonempty¹   s
    c         ` sQ   ‡  ‡ f d †  } ‡ ‡ f d †  ‰  ‡ f d †  ‰ ˆ j  j | ƒ ˆ j ƒ  d  S(   Nc          ` sI   t  ƒ   t ˆ  ƒ }  Wd  QXt t j ˆ j d ƒ ƒ  |  ƒ  Wd  QXd  S(   NRZ   (   R   R   R   RM   RN   RK   (   Rl   (   RX   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRY   Ó   s    
c           ` s   ˆ j  j ˆ  ƒ d  S(   N(   RO   R   (    (   R[   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRX   Ù   s    c           ` s!   ˆ  j  d ˆ  j ƒ ˆ  j ƒ  d  S(   NRZ   (   Rn   R>   R:   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR[   Ü   s    (   RO   R   R3   (   R   RY   (    (   RX   R[   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_isolation_emptyÏ   s
    c         ` sS   t  j ‡  f d †  ƒ } ˆ  j t ƒ  | ƒ  ˆ  j ƒ  Wd  QXˆ  j ƒ  ˆ  ` d  S(   Nc           3` sG   t  j d ƒ Vˆ  _ t t j ˆ  j d ƒ ƒ  t  j d ƒ VWd  QXd  S(   Nt   aRV   (   R   t   CallbackRP   R   RM   RN   RK   t   Wait(    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   fä   s    (   R   t   enginet   assertRaisesR	   R3   RP   (   R   Rt   (    (   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_yield_in_withã   s    

c         c` sT   t  j d ƒ V} t t j |  j d ƒ ƒ  |  j j | ƒ Wd  QXt  j d ƒ Vd  S(   Nt   k1RV   (	   R   Rr   R   RM   RN   RK   RO   R   Rs   (   R   t   cb(    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_yield_outside_with÷   s    c         ` sC   t  j ‡  f d †  ƒ } ˆ  j t ƒ  | ƒ  ˆ  j ƒ  Wd  QXd  S(   Nc           3` s.   t  d „  ƒ  t j ˆ  j j ƒ VWd  QXd  S(   Nc         S` s   t  S(   N(   t   False(   t   tt   vt   tb(    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   <lambda>  s    (   R
   R   t   TaskRO   R   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRt     s    (   R   Ru   Rv   R	   R3   (   R   Rt   (    (   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt*   test_yield_in_with_exception_stack_contextÿ   s    c         c` sH   t  j d ƒ V} t d „  ƒ  |  j j | ƒ Wd  QXt  j d ƒ Vd  S(   NRx   c         S` s   t  S(   N(   R{   (   R|   R}   R~   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR     s    (   R   Rr   R
   RO   R   Rs   (   R   Ry   (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt/   test_yield_outside_with_exception_stack_context
  s    c         #` s€   t  j ‡  ‡ f d †  ƒ } t  j ‡ f d †  ƒ ‰  ˆ j ˆ j g  ƒ t t t j ˆ j d ƒ ƒ | ƒ Vˆ j ˆ j g  ƒ d  S(   Nc           3` sS   ˆ j  ˆ j d g ƒ t t t j ˆ j d ƒ ƒ ˆ  ƒ Vˆ j  ˆ j d g ƒ d  S(   NRV   RZ   (   R4   R>   R   R   RM   RN   RK   (    (   RX   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRY     s
    c           3` sJ   ˆ  j  ˆ  j d d g ƒ t j ˆ  j j ƒ Vˆ  j  ˆ  j d d g ƒ d  S(   NRV   RZ   (   R4   R>   R   R€   RO   R   (    (   R   (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyRX     s    RV   (	   R   t	   coroutineR4   R>   R   R   RM   RN   RK   (   R   RY   (    (   RX   R   s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   test_run_with_stack_context  s    (   R*   R+   R=   RG   t
   contextlibt   contextmanagerRK   RU   R_   Rk   Ro   Rp   Rw   R   Rz   R   R‚   R„   (    (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyR;   ?   s   				 	.				t   __main__('   t
   __future__R    R   R   t   tornadoR   t   tornado.ioloopR   t   tornado.logR   t   tornado.stack_contextR   R   R   R	   R
   R   R   t   tornado.testingR   R   R   R   t   tornado.test.utilR   R   t   tornado.webR   R   R   R…   RM   R   R?   R   R,   R;   R*   t   main(    (    (    s>   lib/python2.7/site-packages/tornado/test/stack_context_test.pyt   <module>   s    4"é