ó
ûR‹_c           @  sÿ   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 e ƒ  Z e d	 ƒ Z e d
 ƒ Z e d ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   print_function(   t	   getLogger(   t   dedent(   t   TestCase(   t   catch_warnings(   t   ShouldAssert(   t   Mock(   t   Replacert
   LogCapturet   comparet   onet   twos	   one.childt   TestLogCapturec           B  sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C  sV   t  j d ƒ t ƒ  } t  j d ƒ | j ƒ  t  j d ƒ t | ƒ d k sR t ‚ d  S(   Nt   beforet   duringt   afters   root INFO
  during(   t   roott   infoR   t	   uninstallt   strt   AssertionError(   t   selft   l(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_simple   s    	
c         C  sf   t  d ƒ } t j d ƒ t j d ƒ t j d ƒ t j d ƒ | j ƒ  t | ƒ d k sb t ‚ d  S(   NR
   t   1t   2t   3t   4s   one INFO
  2
one.child INFO
  4(	   R   R   R   R
   R   t   childR   R   R   (   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_specific_logger   s    
	c         C  sf   t  d ƒ } t j d ƒ t j d ƒ t j d ƒ t j d ƒ | j ƒ  t | ƒ d k sb t ‚ d  S(	   Ns	   one.childR   R   R   R   R   s   two INFO
  3
one.child INFO
  4(   s	   one.childR   (	   R   R   R   R
   R   R   R   R   R   (   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_multiple_loggers(   s    
	c         C  sf   t  d t ƒ } t j d ƒ | j ƒ  t j d ƒ | j ƒ  t j d ƒ t | ƒ d k sb t ‚ d  S(   Nt   installR   R   R   s   root INFO
  during(   R   t   FalseR   R   R   R   R   R   (   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_simple_manual_install4   s    

c   	      C  s  t  ƒ  } t  d ƒ } | j } | j } | j } | j } zú | j d ƒ | j d ƒ t ƒ  } t d ƒ } t  ƒ  } | j d ƒ t  d ƒ } | j d k s¤ t ‚ | j d k s¹ t ‚ | j d ƒ t | ƒ d k sÞ t ‚ t | ƒ d k sö t ‚ | j ƒ  | j ƒ  | j d k st ‚ | j d k s4t ‚ Wd  | j | ƒ | j | ƒ X| j | k sht ‚ | j | k s}t ‚ d  S(	   NR   i1   iE   R   i   R   s   root INFO
  1
child INFO
  2s   child INFO
  2(	   R   t   handlerst   levelt   setLevelR   R   R   R   R   (	   R   R   R   t   before_roott   before_childt   old_root_levelt   old_child_levelt   l1t   l2(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_uninstall=   s:    	

						

c         C  sÁ   t  j } t j } t ƒ  } t d ƒ } t t  j ƒ d k sD t ‚ t  j | k sY t ‚ t t j ƒ d k st t ‚ t j | k s‰ t ‚ t j ƒ  | t  j k s¨ t ‚ | t j k s½ t ‚ d  S(   Ns	   one.childi   (   R   R"   R   R   t   lenR   t   uninstall_all(   R   t   before_handlers_roott   before_handlers_childR)   R*   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_uninstall_allp   s    

	
c         C  s‚   t  ƒ  } t j d ƒ t | ƒ d k s. t ‚ t  ƒ  } t j d ƒ t | ƒ d k s\ t ‚ t | ƒ d k st t ‚ t  j ƒ  d  S(   Ns   1st messages   root INFO
  1st messages   2nd messages   root INFO
  2nd message(   R   R   R   R   R   R-   (   R   R)   R*   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt#   test_two_logcaptures_on_same_loggerŠ   s    		c         C  s¢   t  j } zz t  j d ƒ t ƒ  } t  j d k s7 t ‚ | j ƒ  t  j d k sV t ‚ t  j d ƒ | j ƒ  t  j d k s‚ t ‚ Wd  t  j | ƒ X| j ƒ  d  S(   Ni1   i   iE   (   R   R#   R$   R   R   R   R-   (   R   t	   old_levelR   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_uninstall_more_than_oncež   s    		

c         C  sU   t  j d ƒ t ƒ   } t  j d ƒ Wd  QXt  j d ƒ t | ƒ d k sQ t ‚ d  S(   NR   R   R   s   root INFO
  during(   R   R   R   R   R   (   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_with_statement´   s
    (   t   __name__t
   __module__R   R   R   R!   R+   R0   R1   R3   R4   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyR      s   						3			t   LogCaptureTestsc           B  s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sv   t  ƒ  } | j } zS t ƒ  g | _ } t ƒ   } | j d ƒ Wd  QX| j d ƒ t | j | ƒ Wd  | | _ Xd  S(   NR   R   t   INFO(   R   R8   R   (   R   R"   t   objectR   R   t   checkR	   (   R   t   loggert   original_handlerst   startR   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_remove_existing_handlers¾   s    		c         C  sù   d d l  m } t ƒ  } t ƒ  Ñ } | j d t ƒ | j d | j ƒ t ƒ  } | j | j ƒ g } t	 | | j
 ƒ t d t ƒ A } | j ƒ  |  j t | ƒ d ƒ t	 t | d j ƒ d ƒ Wd  QX| j ƒ  t	 t ƒ  t j ƒ | j ƒ  Wd  QXd  S(	   Niÿÿÿÿ(   t   calls$   testfixtures.LogCapture.atexit_setups   atexit.registert   recordi   i    sK   LogCapture instances not uninstalled by shutdown, loggers captured:
(None,)(   t   testfixtures.mockR?   R   R   t   replaceR    t   registerR   t   atexitR	   t
   mock_callsR   t   Truet
   assertTrueR,   R   t   messageR   t   sett	   instances(   R   R?   t   mt   rR   t   expectedt   w(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_atexitÑ   s     		

c         C  s6   t  ƒ   } t ƒ  j d d ƒ Wd  QX| j d ƒ d  S(   Ni*   s   running in the familyR   s   Level 42(   R   s   Level 42s   running in the family(   R   R   t   logR:   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_numeric_log_levelò   s    c         C  sX   t  d ƒ } t | _ t d ƒ  } | j d ƒ Wd  QX| j d ƒ t | j t ƒ d  S(   Nt   disableds   a log messageR8   (   RR   R8   s   a log message(   R   RF   RR   R   R   R:   R	   (   R   R;   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_enable_disabled_loggerø   s    	c         C  s   t  d ƒ } t | j t ƒ t ƒ  < } t d d t ƒ! } | j d ƒ | j d ƒ Wd  QXWd  QX| j ƒ  t | j t ƒ d  S(   NR   t	   propagates   a log messageR8   (   R   R8   s   a log message(   R   R	   RT   RF   R   R    R   R:   (   R   R;   t
   global_logt	   child_log(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_no_propogate   s    
(   R5   R6   R>   RO   RQ   RS   RW   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyR7   ¼   s
   		!		t   TestCheckPresentc           B  s   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sj   t  ƒ  H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j d	 d
 d ƒ d  S(   NR
   t   junkR   t   threeR   R8   t   WARNINGt   ERROR(   R   R8   R
   (   R   R[   R   (   R   R\   RZ   (   R   R   R   t   errort   warningt   check_present(   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_order_matters_ok  s    c      	   C  sI   t  ƒ   } t j d ƒ Wd  QXt t d ƒ ƒ  | j d ƒ Wd  QXd  S(   NRY   s                  sequence not as expected:
                
                same:
                ()
                
                expected:
                (('root', 'INFO', 'one'),)
                
                actual:
                (('root', 'ERROR', 'junk'),)R   R8   R
   (   R   R8   R
   (   R   R   R]   R   R   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_order_matters_not_okay  s    
c      	   C  sO   t  d t ƒ  } t j d ƒ Wd  QXt t d ƒ ƒ  | j d ƒ Wd  QXd  S(   Nt   recursive_checkRY   s•                  sequence not as expected:
                
                same:
                ()
                
                expected:
                (('root', 'INFO', 'one'),)
                
                actual:
                (('root', 'ERROR', 'junk'),)
                
                While comparing [0]: sequence not as expected:
                
                same:
                ('root',)
                
                expected:
                ('INFO', 'one')
                
                actual:
                ('ERROR', 'junk')
                
                While comparing [0][1]: 'INFO' (expected) != 'ERROR' (actual)R   R8   R
   (   R   R8   R
   (   R   RF   R   R]   R   R   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt%   test_order_matters_not_okay_recursive-  s    c         C  sƒ   t  ƒ  H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QXt t d ƒ ƒ  | j d d d ƒ Wd  QXd  S(   NR
   t   j1RZ   R   t   j2sÆ                  sequence not as expected:
                
                same:
                (('root', 'INFO', 'one'),)
                
                expected:
                (('root', 'WARNING', 'two'), ('root', 'ERROR', 'three'))
                
                actual:
                (('root', 'ERROR', 'j1'),
                 ('root', 'ERROR', 'three'),
                 ('root', 'WARNING', 'two'),
                 ('root', 'ERROR', 'j2'))R   R8   R[   R\   (   R   R8   R
   (   R   R[   R   (   R   R\   RZ   (   R   R   R   R]   R^   R   R   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_order_matters_but_wrongL  s    c         C  sp   t  ƒ  H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j d
 d d d	 t ƒd  S(   NR
   RY   R   RZ   R   R\   R8   R[   t   order_matters(   R   R\   RZ   (   R   R8   R
   (   R   R[   R   (   R   R   R   R]   R^   R_   R    (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_order_doesnt_matter_okg  s    c      	   C  sO   t  ƒ   } t j d ƒ Wd  QXt t d ƒ ƒ  | j d d t ƒWd  QXd  S(   NRY   s/                  entries not as expected:
                
                expected and found:
                []
                
                expected but not found:
                [('root', 'INFO', 'one')]
                
                other entries:
                [('root', 'ERROR', 'junk')]R   R8   R
   Rg   (   R   R8   R
   (   R   R   R]   R   R   R_   R    (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt!   test_order_doesnt_matter_not_okayu  s    
c         C  sd   t  ƒ  H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j d ƒ d  S(   NR
   RY   R   RZ   R   R[   (   R   R[   R   (   R   R   R   R]   R^   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_single_item_okˆ  s    c         C  sl   t  d d g ƒ . } t j d ƒ t j d ƒ t j d ƒ Wd  QXt t d ƒ ƒ  | j d ƒ Wd  QXd  S(   Nt
   attributest
   getMessageR
   RY   RZ   sù                   sequence not as expected:
                
                same:
                ()
                
                expected:
                ('two',)
                
                actual:
                ('one', 'junk', 'three')R   (   R   R   R   R]   R   R   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_single_item_not_ok“  s    
c         C  s0   t  d ƒ  t d t ƒ j d d ƒ Wd  QXd  S(   Ns+   order_matters is the only keyword parameterR   t   foot   bar(   R   R   R    R_   (   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_bad_params¥  s    c         C  sz   t  ƒ  U } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j d d d	 d
 ƒ d  S(   NR
   RY   R   R   R8   R[   (   R   R8   R
   (   R   R8   R
   (   R   R[   R   (   R   R[   R   (   R   R   R   R]   R^   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt.   test_multiple_identical_expected_order_mattersª  s    c         C  s€   t  ƒ  U } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j d d	 d
 d d t ƒd  S(   NR
   R   RY   R   R8   R[   Rg   (   R   R8   R
   (   R   R8   R
   (   R   R[   R   (   R   R[   R   (   R   R   R   R^   R]   R_   R    (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt7   test_multiple_identical_expected_order_doesnt_matter_ok¹  s    c         C  sŒ   t  ƒ  H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QXt t d ƒ ƒ ! | j d	 d
 d d d t ƒWd  QXd  S(   NRY   R
   R   s™                  entries not as expected:
                
                expected and found:
                [('root', 'INFO', 'one'), ('root', 'WARNING', 'two'), ('root', 'INFO', 'one')]
                
                expected but not found:
                [('root', 'WARNING', 'two')]
                
                other entries:
                [('root', 'ERROR', 'junk'), ('root', 'ERROR', 'junk')]R   R8   R[   Rg   (   R   R8   R
   (   R   R8   R
   (   R   R[   R   (   R   R[   R   (	   R   R   R]   R   R^   R   R   R_   R    (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt;   test_multiple_identical_expected_order_doesnt_matter_not_okÉ  s    
c         C  s©   d „  } t  d | ƒ H } t j d ƒ t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QX| j i d d 6d d 6i d d 6d d 6i d	 d 6d d 6d
 t ƒd  S(   Nc         S  s   i |  j  d 6|  j ƒ  d 6S(   NR#   RH   (   t	   levelnameRl   (   R@   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   extractä  s    Rk   R
   RY   R   R8   R#   RH   R[   Rg   (   R   R   R   R]   R^   R_   R    (   R   Ru   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_entries_are_dictionariesã  s    	c         C  sv   t  ƒ  ; } t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QXt t d ƒ ƒ  | j d
 d d ƒ Wd  QXd  S(   NR
   RY   R   s                  sequence not as expected:
                
                same:
                (('root', 'INFO', 'one'),)
                
                expected:
                (('root', 'WARNING', 'two'), ('root', 'ERROR', 'three'))
                
                actual:
                (('root', 'ERROR', 'junk'),
                 ('root', 'WARNING', 'two'),
                 ('root', 'ERROR', 'junk'))R   R8   R[   R\   RZ   (   R   R8   R
   (   R   R[   R   (   R   R\   RZ   (   R   R   R   R]   R^   R   R   R_   (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   test_almost_same_order_mattersô  s    c         C  s|   t  ƒ  ; } t j d ƒ t j d ƒ t j d ƒ t j d ƒ Wd  QXt t d ƒ ƒ  | j d d d d
 t ƒWd  QXd  S(   NR
   RY   RZ   s€                  entries not as expected:
                
                expected and found:
                [('root', 'INFO', 'one'), ('root', 'ERROR', 'three')]
                
                expected but not found:
                [('root', 'WARNING', 'two')]
                
                other entries:
                [('root', 'ERROR', 'junk'), ('root', 'ERROR', 'junk')]R   R\   R8   R[   R   Rg   (   R   R\   RZ   (   R   R8   R
   (   R   R[   R   (   R   R   R   R]   R   R   R_   R    (   R   RP   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt$   test_almost_same_order_doesnt_matter  s    
(   R5   R6   R`   Ra   Rc   Rf   Rh   Ri   Rj   Rm   Rp   Rq   Rr   Rs   Rv   Rw   Rx   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyRX     s   														N(   t
   __future__R    t   loggingR   t   textwrapR   t   unittestR   t   warningsR   t   testfixtures.shouldraiseR   RA   R   t   testfixturesR   R   R	   R   R
   R   R   R   R7   R9   RX   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_logcapture.pyt   <module>   s   	ªP