ó
P'—^c           @@  s­  d  d l  m 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 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 m Z d  d l m Z m Z m Z m Z m  Z  m! Z! m" Z" m# Z# d e f d „  ƒ  YZ$ d e f d „  ƒ  YZ% d e f d „  ƒ  YZ& d e f d „  ƒ  YZ' d e' f d „  ƒ  YZ( d e f d „  ƒ  YZ) d e j* f d „  ƒ  YZ+ d S(   i    (   t   absolute_importN(   t   defaultdict(   t   StringIO(   t   mktemp(   t   signals(   t   TaskFormatter(   t   LoggingProxy(   t   uuid(   t
   get_loggert   ColorFormattert   loggert   get_task_loggert   task_loggert   in_sighandlert
   logger_isat   ensure_process_aware_logger(   t   AppCaset   Mockt   SkipTestt   get_handlerst   override_stdoutst   patcht   wrap_loggert   restore_loggingt   test_TaskFormatterc           B@  s   e  Z d  „  Z RS(   c         C@  s_   d t  f d „  ƒ  Y} | ƒ  } t ƒ  } | j | ƒ |  j | j d ƒ |  j | j d ƒ d  S(   Nt   Recordc           B@  s-   e  Z d  Z d Z d Z Z d Z d „  Z RS(   s   hello worldt   infoc         S@  s   |  j  S(   N(   t   msg(   t   self(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt
   getMessage'   s    N(	   t   __name__t
   __module__R   t	   levelnamet   Nonet   exc_textt   exc_infot
   stack_infoR   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR   !   s
   
s   ???(   t   objectR   t   formatt   assertEqualt	   task_namet   task_id(   R   R   t   recordt   x(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_no_task    s    		(   R   R   R,   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR      s   t   test_logger_isac           B@  s   e  Z d  „  Z d „  Z RS(   c         C@  s$  t  d ƒ } |  j t | t ƒ ƒ | j d  } | _ z |  j t | t ƒ ƒ Wd  | | _ Xt  d ƒ } | | _ |  j t | t ƒ ƒ |  j t | | ƒ ƒ |  j t | | ƒ ƒ t  d ƒ } | | _ |  j t | t ƒ ƒ |  j t | | ƒ ƒ |  j t | | ƒ ƒ |  j t | | ƒ ƒ d  S(   Nt   Z1georget   Z1elainet   Z1jerry(   R   t
   assertTrueR   R   t   parentR!   t   assertFalse(   R   R+   t   prev_xt   yt   z(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_isa2   s"    
		c         C@  sÚ   t  d ƒ } | j | } | _ z' |  j t ƒ  t | t ƒ Wd  QXWd  | | _ Xt  d ƒ } t  d ƒ } | j | } | _ zK | j | } | _ z' |  j t ƒ  t | t ƒ Wd  QXWd  | | _ XWd  | | _ Xd  S(   Nt   X1foot   X2foo(   R   R2   t   assertRaisest   RuntimeErrorR   R   (   R   R+   t   prevR5   R6   t   prev_yt   prev_z(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_recursiveH   s     
(   R   R   R7   R?   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR-   0   s   	t   test_ColorFormatterc           B@  s‰   e  Z e d  ƒ e d ƒ d „  ƒ ƒ Z e d ƒ e d  ƒ d „  ƒ ƒ Z e d ƒ d „  ƒ Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z RS(   s   celery.utils.log.safe_strs!   logging.Formatter.formatExceptionc         C@  sX   t  ƒ  } t ƒ  } | | _ |  j | j | ƒ | ƒ |  j | j ƒ |  j | j ƒ d  S(   N(   R	   t   KeyErrort   return_valuet   assertIst   formatExceptionR1   t   calledR3   (   R   t   fet   safe_strR+   t   value(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_formatException_not_stringa   s    			c         C@  sy   t  ƒ  } d | _ y t ƒ  ‚ Wn- t k
 rN |  j | j t j ƒ  ƒ ƒ n Xt j d d k ru |  j | j ƒ n  d  S(   Nt   HELLOi    i   (	   R	   RB   t	   ExceptionR1   RD   t   sysR#   t   version_infoRE   (   R   RG   RF   R+   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_formatException_stringk   s    		 s   logging.Formatter.formatc         C@  sJ   t  ƒ  } t | _ t ƒ  } d | _ t ƒ  | _ |  j | j | ƒ ƒ d  S(   Nt   ERROR(	   R	   t   Truet	   use_colorR   R    R%   R   R1   R&   (   R   t   _formatR+   R*   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_format_objectw   s    				c         @  s…   t  ƒ  } ‡ f d †  ‰  ˆ  ˆ _ d t f ‡  f d †  ƒ  Y} | ƒ  } | ˆ _ | j | ƒ } |  j d | ƒ |  j ˆ j d ƒ d  S(   Nc         @  s!   z t  d ƒ ‚ Wd  d  ˆ  _ Xd  S(   Nt   foo(   t
   ValueErrorR!   t   side_effect(   t   s(   RG   (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   on_safe_str„   s    R   c           @  s>   e  Z d  Z d Z d Z d Z d Z ‡  f d †  Z d „  Z	 RS(   RO   RJ   i   s
   error textc         @  s
   ˆ  d ƒ S(   Nt    (    (   R   (   RX   (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   __str__’   s    c         S@  s   |  j  S(   N(   R   (   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR   •   s    N(
   R   R   R    R   R#   R"   R!   R$   RZ   R   (    (   RX   (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR   ‹   s   s   <Unrepresentablei   (   R	   RV   R%   RB   R&   t   assertInR'   t
   call_count(   R   RG   R+   R   R*   R   (    (   RX   RG   s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_format_raises€   s    				c         C@  sy   t  j d d k r" t d ƒ ‚ n  t d t ƒ } t ƒ  } d | _ d | _ d | _ | j	 | ƒ |  j
 | j d ƒ d  S(	   Ni    i   t   py3kRQ   RO   RJ   s
   error texti   (   RL   RM   R   R	   t   FalseR   R    R   R"   R&   R'   R\   (   R   RG   R+   R*   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_format_raises_no_colorŸ   s    				(   R   R   R   RI   RN   RS   R]   R`   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR@   _   s   				t   test_default_loggerc           B@  sÂ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e j d	 „ Z d d
 „ Z d d „ Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C@  sA   |  j  j j |  _ d  d „ |  _ g  t j j (t |  j  j _	 d  S(   Nc         S@  s   |  r t  |  ƒ St j S(   N(   R   t   loggingt   root(   t   n(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   <lambda>°   RY   (
   t   appt   logt   setup_loggerR!   R   R   t   setup_loggingt	   receiversR_   t   already_setup(   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   setup®   s    c         C@  s)   t  d ƒ } |  j | j j t j ƒ d  S(   Ns   celery.test_get_logger(   R   R'   R2   t   namet   base_logger(   R   R
   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_get_logger_sets_parent´   s    c         C@  s)   t  t j ƒ } |  j | j t j ƒ d  S(   N(   R   Rn   Rm   RC   R2   Rb   Rc   (   R   R
   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_get_logger_root¸   s    c         C@  s*   t  ƒ   |  j j j d d  ƒ Wd  QXd  S(   Nt   loglevel(   R   Rf   Rg   t   setup_logging_subsystemR!   (   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt!   test_setup_logging_subsystem_misc¼   s    
c         C@  s3   t  ƒ  $ t |  j j _ |  j j j ƒ  Wd  QXd  S(   N(   R   RP   Rf   t   conft   CELERYD_HIJACK_ROOT_LOGGERRg   Rr   (   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt"   test_setup_logging_subsystem_misc2À   s    
c         C@  s   |  j  |  j j j ƒ  ƒ d  S(   N(   R1   Rf   Rg   t   get_default_logger(   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_get_default_loggerÅ   s    c         C@  sB   |  j  j j ƒ  } |  j  j j | t j d  d t ƒ g  | j (d  S(   NRY   (	   Rf   Rg   Rw   t   _configure_loggerRL   t   stderrR!   R_   t   handlers(   R   R
   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_configure_loggerÈ   s    "c         C@  s@   t  ƒ  1 |  j j j d d  ƒ |  j j j d t ƒ Wd  QXd  S(   Nt   colorize(   R   Rf   Rg   Rr   R!   RP   (   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt%   test_setup_logging_subsystem_colorizeÍ   s    
c      	   C@  sX   d d l  m } t ƒ  9 | j d  } | _ z |  j j j ƒ  Wd  | | _ XWd  QXd  S(   Ni    (   Rg   (   t   celery.utilsRg   R   t   mputilR!   Rf   Rr   (   R   t   logtoolsR€   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt&   test_setup_logging_subsystem_no_mputilÒ   s    
c         C@  s?   t  | d | ƒ' } | j | | ƒ | j ƒ  j ƒ  SWd  QXd  S(   NRq   (   R   Rg   t   getvaluet   strip(   R   R
   t   logmsgRq   t   sio(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt
   _assertLogÛ   s    c         C@  s+   |  j  | | d | ƒ} |  j | | | ƒ S(   NRq   (   R‡   R'   (   R   R
   R…   t   reasonRq   t   val(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   assertDidLogTrueá   s    c         C@  s(   |  j  | | d | ƒ} |  j | | ƒ S(   NRq   (   R‡   R3   (   R   R
   R…   Rˆ   Rq   R‰   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   assertDidLogFalseå   s    c         C@  s   t  ƒ  Ž |  j d t j d d  d t d t ƒ } g  | _ t |  j j	 _
 |  j d t j d d  d t d d  ƒ } |  j t | ƒ d j t j d ƒ Wd  QXd  S(   NRq   t   logfileRc   R}   i    s5   setup_logger logs to stderr without logfile argument.(   R   Rh   Rb   RO   R!   R_   RP   R{   Rf   Rg   Rk   RC   R   t   streamRL   t
   __stderr__(   R   R
   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_setup_loggeré   s    
	c         C@  sŽ   t  ƒ   |  j ƒ  } g  | _ t ƒ  Z } | \ } } |  j d t j d t j d t	 ƒ } | j
 d ƒ |  j d | j ƒ  ƒ Wd  QXWd  QXd  S(   NRŒ   Rq   Rc   s   The quick brown fox...(   R   R   R{   R   Rh   RL   Rz   Rb   t   INFOR_   R   R[   Rƒ   (   R   t   lt   outst   stdoutRz   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt$   test_setup_logger_no_handlers_streamö   s    
	s   os.fstatc         @  sä   t  d d d d ƒ } t j d d k r. d n d } t | ƒ ž } t ƒ  Œ t t ƒ ‰  ‡  f d	 †  } | | _ |  j ƒ  } g  | _	 |  j
 d
 | d t j d t ƒ } |  j t | ƒ d t j ƒ |  j | ˆ  ƒ Wd  QXWd  QXd  S(   Nt   suffixt   unittestt   prefixt   celeryi    i   s   builtins.opens   __builtin__.openc         @  s&   ˆ  |  } t  ƒ  | _ d | j _ | S(   Nic   (   R   t   filenoRB   (   t   filenamet   argst   kwargst   f(   t   files(    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt	   open_file  s    
RŒ   Rq   Rc   (   R   RL   RM   R   R   R   R   RV   R   R{   Rh   Rb   R   R_   t   assertIsInstanceR   t   FileHandlerR[   (   R   R›   t   tempfilet   _opent   osopenRŸ   R‘   (    (   Rž   s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt"   test_setup_logger_no_handlers_file  s    
			c         C@  sÉ   t  ƒ  º |  j d t j d d  d t ƒ } zw t | ƒ e } |  j j j	 | d t j ƒ| j
 d ƒ |  j d | j ƒ  ƒ |  j j j	 | d t d t ƒWd  QXWd  t j t j t _ t _ XWd  QXd  S(   NRq   RŒ   Rc   RT   R“   Rz   (   R   Rh   Rb   RO   R!   R_   R   Rf   Rg   t   redirect_stdouts_to_loggert   errorR[   Rƒ   RL   t
   __stdout__RŽ   R“   Rz   (   R   R
   R†   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_redirect_stdouts  s    
	c         C@  sg  t  ƒ  X|  j d t j d d  d t ƒ } t | ƒ $} t | d t j ƒ} | j ƒ  | j	 d ƒ |  j
 d | j ƒ  ƒ t | _ | j	 d ƒ |  j d | j ƒ  ƒ d d g } | j | ƒ x$ | D] } |  j | | j ƒ  ƒ qÈ W| j ƒ  | j ƒ  |  j | j ƒ  ƒ t ƒ  = \ } } t ƒ  % | j	 d ƒ |  j | j ƒ  ƒ Wd  QXWd  QXWd  QXWd  QXd  S(   NRq   RŒ   Rc   RT   t   bazt   xuzzy(   R   Rh   Rb   RO   R!   R_   R   R   t   closet   writet   assertNotInRƒ   t   closedR[   t
   writelinest   flushR3   t   isattyR   R   R1   (   R   R
   R†   t   pt   linest   lineR“   Rz   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_logging_proxy-  s,    
	
	


c         C@  s€   t  ƒ  q |  j d t j d d  d t ƒ } t | d t j ƒ} t | j _	 z |  j
 | j d ƒ ƒ Wd  t | j _	 XWd  QXd  S(   NRq   RŒ   Rc   t   FOOFO(   R   Rh   Rb   RO   R!   R_   R   RP   t   _threadt   recurse_protectiont   assertIsNoneR­   (   R   R
   R³   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt%   test_logging_proxy_recurse_protectionG  s    
	N(   R   R   Rl   Ro   Rp   Rs   Rv   Rx   R|   R~   R‚   Rb   RO   R‡   R!   RŠ   R‹   R   R”   R   R¥   R©   R¶   R»   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRa   ¬   s$   														t   test_task_loggerc           B@  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C@  s›   t  d ƒ } |  _ g  | _ t j j j j | j d  ƒ t
 ƒ  |  _ |  j j d t ƒ d „  ƒ } g  |  j  ƒ  _ | |  _ d d l m } | j | ƒ d  S(   Ns   celery.taskt   sharedc           S@  s   d  S(   N(    (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt	   test_task[  s    i    (   t   _task_stack(   R   R
   R{   Rb   Rc   t   managert
   loggerDictt   popRm   R!   R   t   uidRf   t   taskR_   t   celery._stateR¿   t   push(   R   R
   R¾   R¿   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRl   U  s    		c         C@  s   d d l  m } | j ƒ  d  S(   Ni    (   R¿   (   RÅ   R¿   RÂ   (   R   R¿   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   teardownc  s    c         O@  s   |  j  j j | | Ž  S(   N(   Rf   Rg   t   setup_task_loggers(   R   R›   Rœ   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRh   g  s    c         O@  s
   t  d ƒ S(   NR¼   (   R   (   R   R›   Rœ   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR   j  s    (   R   R   Rl   RÇ   Rh   R   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyR¼   S  s   			t   test_patch_logger_clsc           B@  s   e  Z d  „  Z RS(   c         C@  s4   t  ƒ  t ƒ   t j ƒ  j t d ƒ ƒ Wd  QXd  S(   Nt   test(   R   R   Rb   t   getLoggerClassRg   R   (   R   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   test_patchesp  s    
(   R   R   RÌ   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRÉ   n  s   t
   MockLoggerc           B@  s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         O@  s#   g  |  _  t j j |  | | Ž d  S(   N(   t   _recordsRb   t   Loggert   __init__(   R   R›   Rœ   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRÐ   y  s    	c         C@  s   |  j  j | ƒ d  S(   N(   RÎ   t   append(   R   R*   (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   handle}  s    c         C@  s   t  S(   N(   RP   (   R   t   level(    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   isEnabledFor€  s    N(   R   R   R!   RÎ   RÐ   RÒ   RÔ   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyRÍ   v  s   		(,   t
   __future__R    RL   Rb   t   collectionsR   t   ioR   R¢   R   R˜   R   t   celery.app.logR   t   celery.utils.logR   R   R   R   R	   R
   Rn   R   R   R   R   R   t   celery.tests.caseR   R   R   R   R   R   R   R   R   R-   R@   Ra   R¼   RÉ   RÏ   RÍ   (    (    (    s;   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/app/test_log.pyt   <module>   s$   :
:/M§