ó
DýTc           @   sû  d  Z  d d l m Z d d l Z d d l Z 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 m Z m Z m Z y d d l m Z Wn= e k
 re j d  d3 k rõ e j d
 ƒ qd „  Z n Xd d l Z d d l Z d d l m Z m Z m Z d d l Z e
 j d „  ƒ Z  e! Z" e" j# d ƒ rve" d  Z" n  d d4 d „  ƒ  YZ$ e% d d d e$ d j& e j' e" ƒ ƒ ƒ ƒ Z( e d d d g ƒ Z) e d d d d g ƒ Z* e d d d d g ƒ Z+ d  e j, f d! „  ƒ  YZ- d" e j, f d# „  ƒ  YZ. d$ Z/ d% Z0 e j1 d& e j2 e/ ƒ e j2 e0 ƒ f ƒ Z3 d' d5 d( „  ƒ  YZ4 d) e4 e j, f d* „  ƒ  YZ5 d+ e j, f d, „  ƒ  YZ6 d- e j, f d. „  ƒ  YZ7 d/ e j, f d0 „  ƒ  YZ8 d1 e j, f d2 „  ƒ  YZ9 d S(6   s   Test cases for traceback moduleiÿÿÿÿ(   t
   namedtupleN(   t   StringIO(   t   bt	   text_typet   u(   t
   raise_fromi   i   i   sK   def raise_from(value, from_value):
        raise value from from_value
    c         C   s
   |  ‚ d  S(   N(    (   t   valuet
   from_value(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR      s    (   t   DocTestMatchest   Equalst
   MatchesAnyc         c   s5   t  ƒ  } t j d |  | ƒ } | 
 | VWd  QXd  S(   Ns   sys.%s(   R   t   fixturest   MonkeyPatch(   t
   streamnamet   streamt   patch(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   captured_output#   s    	s   .pyct
   FakeLoaderc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   _lines(   t   selft   lines(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   __init__/   s    c         C   s   |  j  S(   N(   R   (   R   t   name(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   get_source1   s    (   t   __name__t
   __module__R   R   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR   .   s   	R   t   fredt
   __loader__t    t   codet   co_filenamet   co_namet   framet   f_codet	   f_globalst   f_localst   tbt   tb_framet	   tb_linenot   tb_nextt   SyntaxTracebackCasesc           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 RS(   c         C   s>   y | ƒ  Wn  | k
 r- } t  j | | ƒ SXt d ƒ ‚ d  S(   Ns   call did not raise exception(   t	   tracebackt   format_exception_onlyt
   ValueError(   R   t   funct   excR   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   get_exception_formatB   s
    c         C   s   t  d d d ƒ d  S(   Ns   def fact(x):
	return x!
t   ?t   exec(   t   compile(   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   syntax_error_with_caretJ   s    c         C   s   t  d d d ƒ d  S(   Ns   1 +
R/   R0   (   R1   (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   syntax_error_with_caret_2M   s    c         C   s   t  d d d ƒ d  S(   Ns    def spam():
  print(1)
 print(2)R/   R0   (   R1   (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   syntax_error_bad_indentationP   s    c         C   s   t  d d d ƒ d  S(   Ns"   Python = "\u1e54ý\u0163\u0125òñ" +R/   R0   (   R1   (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt!   syntax_error_with_caret_non_asciiS   s    c         C   s   t  d d d ƒ d  S(   Ns	    print(2)R/   R0   (   R1   (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   syntax_error_bad_indentation2V   s    c         C   sj  |  j  |  j t ƒ } |  j t | ƒ d ƒ |  j | d j ƒ  d k ƒ |  j d | d ƒ |  j | d j d ƒ | d j d ƒ ƒ |  j  |  j	 t ƒ } |  j d | d ƒ |  j | d j
 d ƒ d ƒ |  j | d j d ƒ | d j d ƒ ƒ |  j  |  j t ƒ } |  j d | d ƒ |  j | d j
 d ƒ d ƒ |  j | d j d ƒ | d j d ƒ ƒ d  S(	   Ni   i   s	   return x!t   ^i   t   !s   
t   +(   R.   R2   t   SyntaxErrort   assertEqualt   lent
   assertTruet   stript   assertInt   findR3   t   countR5   (   R   t   err(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   test_caretY   s     	*	*	c         C   sU   t  d d ƒ } t j t  | ƒ } |  j t | ƒ d ƒ |  j | d j ƒ  d ƒ d  S(   Nt   errors   x.pyi   s
   bad syntaxi   i   (   s   x.pyi   Ns
   bad syntax(   R:   t   NoneR)   R*   R;   R<   R>   (   R   R-   RB   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_nocaretm   s    c         C   s8  |  j  |  j t ƒ } |  j t | ƒ d ƒ |  j | d j ƒ  d ƒ |  j d | d ƒ |  j | d j d ƒ | d j d ƒ ƒ |  j  |  j t ƒ } |  j t | ƒ d ƒ |  j | d j ƒ  d ƒ |  j d | d ƒ | d j d ƒ } | d j d ƒ } |  j	 | d j d ƒ t
 t | ƒ t | ƒ ƒ ƒ d  S(   Ni   i   s   print(2)R7   i   t   )t   p(   R.   R4   t   IndentationErrorR;   R<   R>   R?   R@   R6   t
   assertThatR
   R	   (   R   RB   t   pos_cpythont   pos_pypy(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_bad_indentations   s     	*	c         C   sM   t  ƒ  } t j | j | ƒ } |  j | t t d g ƒ t d g ƒ ƒ ƒ d  S(   Ns   KeyboardInterrupt
s   exceptions.KeyboardInterrupt
(   t   KeyboardInterruptR)   R*   t	   __class__RJ   R
   R	   (   R   t   et   lst(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_base_exception‡   s
    		c         C   sµ   d „  } d t  f d „  ƒ  Y} t j | | ƒ  ƒ } |  j t | ƒ d ƒ d | j } | j d k ru | | ƒ } n d j | j | | ƒ g ƒ } |  j | d	 d
 | | f ƒ d  S(   Nc         S   s   t  |  d |  j ƒ S(   Nt   __qualname__(   t   getattrR   (   t   X(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   qualname   s    RU   c           B   s   e  Z d  „  Z RS(   c         S   s   d d d  S(   Ni   i    (    (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   __str__“   s    (   R   R   RW   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRU   ’   s   i   s   <unprintable %s object>t   __main__t   builtinst   .i    s   %s: %s
(   RX   RY   (   t	   ExceptionR)   R*   R;   R<   R   R   t   join(   R   RV   RU   RB   t	   str_valuet   str_name(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt%   test_format_exception_only_bad__str__   s    	c         C   sk   t  t d ƒ j d ƒ ƒ } t j t | ƒ | ƒ } |  j t | ƒ d ƒ d } |  j | d d | ƒ d  S(   Ns   \u5341s	   shift-jisi   s	   b'\x8f\\'i    s   Exception: %s
(   R[   R   t   encodeR)   R*   t   typeR;   R<   (   R   RU   RB   R]   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt-   test_format_exception_only_undecodable__str__ž   s
    c         C   s)   t  j d  d  ƒ } |  j | d g ƒ d  S(   Ns   None
(   R)   R*   RE   R;   (   R   RB   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_without_exception¦   s    c   
         s™  d d  l  } d d  l ‰ d d  l ‰ d d  l } ˆ j ˆ j d d g d ˆ j d ˆ j ƒ} | j ƒ  \ } } t	 | d ƒ j
 ƒ  d } ‡  ‡ ‡ f d †  } | d	 d
 d d | ƒ x­ d D]¥ } | d k rÛ t d
 ƒ }	 n' | d k rö t d ƒ }	 n t d ƒ }	 | d j | ƒ |	 | d | ƒ | d j | ƒ |	 | d | ƒ | d j | ƒ |	 | d | ƒ qº Wˆ j d  d k r•| d t d ƒ d d | ƒ n  d  S(   Niÿÿÿÿs   -cs&   import sys; print(sys.stdout.encoding)t   stdoutt   stderrt   asciii    c      
      s¶  t  j ƒ  » } | j d } t j | d d | ƒ} | j t d ƒ j |  | ƒ ƒ | j ƒ  ˆ j	 ˆ j
 | g d ˆ j d ˆ j ƒ} | j ƒ  \ }	 }
 | d k r® | } n  |	 j | ƒ j ƒ  }	 Wd  QX| j | d ƒ } | j | ƒ } t d	 ƒ j | ƒ } t d
 ƒ j | ƒ } t j ƒ  d k r0|	 d =n  ˆ  j d | |	 d d j |	 d | ƒ ƒ ˆ  j |	 d j | ƒ d j |	 d | ƒ ƒ ˆ  j |	 d | k d j |	 d | ƒ ƒ d  S(   Ns   /fnamet   wt   encodingsq   {0}if 1:
                    import traceback;
                    raise RuntimeError('{1}')
                    Rd   Re   RE   t   backslashreplaces   raise RuntimeError('{0}')s   RuntimeError: {0}t   PyPyi   s   line %ss)   Invalid line number: {0!r} instead of {1}i   s.   Invalid traceback line: {0!r} instead of {1!r}i   s-   Invalid error message: {0!r} instead of {1!r}(   R   t   TempDirt   patht   iot   opent   writeR   t   formatt   closet   Popent
   executablet   PIPEt   STDOUTt   communicatet   decodet
   splitlinesR`   t   platformt   python_implementationR?   R=   t   endswith(   t
   firstlinest   messaget   charsett   linenot   output_encodingt   dt   TESTFNt   outputt   processRd   Re   t   encoded_messaget   message_asciit   err_linet   err_msg(   R   t
   subprocesst   sys(    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   do_testº   s8    	
			
R   t   fooi   s
   iso-8859-1s   utf-8t   GBKs   \u4E02\u5100s   hé hos   # coding: {0}
i   s   #!shebang
# coding: {0}
i   s    	
# coding: {0}
i   s   0
# coding: GBK
(   Rf   s
   iso-8859-1s   utf-8R   (   i   i   (   t   tempfileRŠ   R‰   t   osRr   Rs   Rt   Ru   Rv   R   Rx   R   Rp   t   version_info(
   R   RŽ   R   R„   Rd   Re   R€   R‹   R~   t   text(    (   R   R‰   RŠ   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_encoded_fileª   s2    0		'(   R   R   R.   R2   R3   R4   R5   R6   RC   RF   RM   RR   R_   Rb   Rc   R’   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR(   >   s   													t   TracebackFormatTestsc           B   s8   e  Z d  „  Z d d „ Z d „  Z d „  Z d „  Z RS(   c         C   s   t  d ƒ ‚ d  S(   Nt   blah(   t   KeyError(   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   some_exceptionù   s    c         C   sv  y2 t  t j t j ƒ r! t ‚ n  d d l m } Wn t k
 rK d  } n Xy |  j ƒ  Wnt	 k
 ryt
 j ƒ  \ } } } | d  k	 r› | | j ƒ n  t d ƒ t d ƒ j t j | ƒ ƒ } | d  k	 rô t ƒ  } | | | ƒ | j ƒ  } n  t d ƒ  }	 t j | ƒ Wd  QXt ƒ  }
 t j | d |
 ƒt d ƒ  } t j ƒ  Wd  QXt j ƒ  } t ƒ  } t j d | ƒ n X|  j d ƒ | d  k	 r¦|  j | | ƒ n  |  j |	 j ƒ  |
 j ƒ  ƒ |  j | j ƒ  | j ƒ  ƒ |  j | | j ƒ  ƒ | j ƒ  } |  j t | ƒ d ƒ | d	 } | d
 \ } } |  j | j d ƒ ƒ |  j | j d ƒ ƒ |  j | j d ƒ ƒ d  S(   Niÿÿÿÿ(   t   traceback_prints#   Traceback (most recent call last):
R   Re   t   files&   unable to create test traceback stringi   i    iþÿÿÿt	   Tracebacks     Files	       raise(   t
   issubclasst   sixt   binary_typet   string_typest   ImportErrort	   _testcapiR—   RE   R–   R•   RŠ   t   exc_infoR'   R   R\   R)   t	   format_tbR   t   getvalueR   t   print_tbt	   print_exct
   format_exct   failR;   Rx   R<   R=   t
   startswith(   R   t   cleanup_funcR—   t   type_R   R$   t   traceback_fmtt   file_t
   python_fmtt   tbstderrt   tbfilet	   excstderrt   excfmtt   excfilet   tb_linest   bannert   locationt   source_line(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   check_traceback_formatü   sP    	
				
c         C   s   |  j  ƒ  d  S(   N(   R¶   (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_traceback_format5  s    c         C   s   d „  } |  j  | ƒ d  S(   Nc         S   s)   t  |  j d d  ƒ r% |  j j ƒ  n  d  S(   Nt   clear_frames(   RT   R%   RE   t   clear(   R$   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   cleanup_tb:  s    (   R¶   (   R   Rº   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt)   test_traceback_format_with_cleared_frames8  s    	c         C   s§   t  d ƒ  } t j t j d ƒ ƒ Wd  QXt ƒ  } t j t j d ƒ d | ƒ|  j | j ƒ  | j ƒ  ƒ t j t j d ƒ ƒ } |  j | j ƒ  d j	 | ƒ ƒ d  S(   NRe   i   R˜   R   (
   R   R)   t   print_stackRŠ   t	   _getframeR   R;   R¢   t   format_stackR\   (   R   t   ststderrt   stfilet   stfmt(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_stack_format?  s    	N(   R   R   R–   RE   R¶   R·   R»   RÂ   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR“   ÷   s
   	9		sG   
The above exception was the direct cause of the following exception:

sF   
During handling of the above exception, another exception occurred:

s   (%s|%s)t   BaseExceptionReportingTestsc           B   s   e  Z d d  „ Z d „  Z d „  Z d „  Z e j e	 j
 d  d k  d ƒ d „  ƒ Z e j e	 j
 d  d k  d ƒ d „  ƒ Z e j e	 j
 d  d k  d	 ƒ d
 „  ƒ Z e j e	 j
 d  d k  d ƒ d „  ƒ Z e j e	 j
 d  d k  d ƒ d „  ƒ Z d „  Z RS(   c         C   sO   t  | t ƒ r | | f Sy | ƒ  Wn$ t k
 rJ } | t j ƒ  d f SXd  S(   Ni   (   t
   isinstanceR[   RŠ   R    (   R   t   exception_or_callableR$   RP   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   get_exception[  s    
c         C   s   d d d  S(   Ni   i    (    (   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   zero_divc  s    c         C   s_   | j  ƒ  } |  j | d j d ƒ ƒ |  j d | d ƒ |  j | d j d ƒ | d ƒ d  S(   Niýÿÿÿs     Files   1/0 # In zero_diviþÿÿÿiÿÿÿÿt   ZeroDivisionError(   Rx   R=   R§   R?   (   R   t   msgR   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   check_zero_divf  s    c         C   sÉ   y d d Wn) t  k
 r7 } | } t j ƒ  d } n X|  j | d | ƒj ƒ  } |  j t | ƒ d ƒ |  j | d j d ƒ ƒ |  j | d j d ƒ ƒ |  j	 d | d ƒ |  j	 d	 | d
 ƒ d  S(   Ni   i    i   R$   i   R™   s     Files   1/0 # MarkerRÈ   i   (
   RÈ   RŠ   R    t
   get_reportRx   R;   R<   R=   R§   R?   (   R   t   _RP   R$   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_simplel  s    i   i   s   Only applies to 3.2+c            s‰   ‡ f d †  ‰  ‡  f d †  } t  j ˆ j | ƒ ƒ } ˆ j t | ƒ d ƒ ˆ j | d t ƒ ˆ j | d ƒ ˆ j d | d ƒ d  S(   Nc             s5   y ˆ  j  ƒ  Wn  t k
 r0 }  t t |  ƒ n Xd  S(   N(   RÇ   RÈ   R   R•   (   RP   (   R   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   inner_raise|  s    c              s   ˆ  ƒ  d  S(   N(    (    (   RÎ   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   outer_raise  s    i   i   i    s   inner_raise() # Markeri   (   t
   boundariest   splitRË   R;   R<   t   cause_messageRÊ   R?   (   R   RÏ   t   blocks(    (   RÎ   R   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   test_causez  s    c            s‰   ‡ f d †  ‰  ‡  f d †  } t  j ˆ j | ƒ ƒ } ˆ j t | ƒ d ƒ ˆ j | d t ƒ ˆ j | d ƒ ˆ j d | d ƒ d  S(   Nc              s,   y ˆ  j  ƒ  Wn t k
 r' t ‚ n Xd  S(   N(   RÇ   RÈ   R•   (    (   R   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÎ   ‹  s    c              s   ˆ  ƒ  d  S(   N(    (    (   RÎ   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÏ     s    i   i   i    s   inner_raise() # Markeri   (   RÐ   RÑ   RË   R;   R<   t   context_messageRÊ   R?   (   R   RÏ   RÓ   (    (   RÎ   R   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_context‰  s    s   Only applies to 3.3+c         C   sƒ   y% y
 t  ‚ Wn t t d  ƒ n XWn) t k
 rP } | } t j ƒ  d } n X|  j | | ƒ } |  j | t d t	 j
 ƒ ƒ d  S(   Ni   sÜ   Traceback (most recent call last):
  File "...traceback2/tests/test_traceback.py", line ..., in test_context_suppression
    raise_from(ZeroDivisionError, None)
  File "<string>", line 2, in raise_from
ZeroDivisionError
(   R[   R   RÈ   RE   RŠ   R    RË   RJ   R   t   doctestt   ELLIPSIS(   R   RÌ   RP   R$   R   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_context_suppression˜  s    
c            s‰   ‡ f d †  ‰  ‡  f d †  } t  j ˆ j | ƒ ƒ } ˆ j t | ƒ d ƒ ˆ j | d t ƒ ˆ j | d ƒ ˆ j d | d ƒ d  S(   Nc             sW   y ˆ  j  ƒ  Wn t k
 r) }  |  } n Xy t Wn t k
 rR t t | ƒ n Xd  S(   N(   RÇ   RÈ   t   xyzzyt	   NameErrorR   R•   (   t   _eRP   (   R   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÎ   ¯  s    
c              s   ˆ  ƒ  d  S(   N(    (    (   RÎ   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÏ   ¸  s    i   i   i    s   inner_raise() # Markeri   (   RÐ   RÑ   RË   R;   R<   RÒ   RÊ   R?   (   R   RÏ   RÓ   (    (   RÎ   R   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_cause_and_context«  s    	c            s±   ‡ f d †  ‰  ‡  f d †  } t  j ˆ j | ƒ ƒ } ˆ j t | ƒ d ƒ ˆ j | d t ƒ ˆ j d | d ƒ ˆ j d | d ƒ ˆ j d | d	 ƒ ˆ j | d	 ƒ d  S(
   Nc             sb   y; y ˆ  j  ƒ  Wn& t k
 r9 }  |  } t t |  ƒ n XWn  t k
 r] }  t | |  ƒ n Xd  S(   N(   RÇ   RÈ   R   R•   (   RP   t   z(   R   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÎ   Â  s    c              s   ˆ  ƒ  d  S(   N(    (    (   RÎ   (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÏ   Ë  s    i   i   s   raise_from(KeyError, e)i    s   1/0s   inner_raise() # Markeri   (	   RÐ   RÑ   RË   R;   R<   RÒ   R?   t   assertNotInRÊ   (   R   RÏ   RÓ   (    (   RÎ   R   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_cause_recursiveÀ  s    	c         C   sh   d „  } |  j  | ƒ j ƒ  } |  j | d d ƒ d „  } |  j  | ƒ j ƒ  } |  j | d d ƒ d  S(   Nc           S   s%   t  d d d d t d ƒ f ƒ ‚ d  S(   NR   i    i   t   hello(   R:   R   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRP   Ú  s    iþÿÿÿs	           ^c           R   s   d d  Ud  S(   Ns   x = 5 | 4 |(    (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRP   Þ  s    s                 ^(   RË   Rx   R;   (   R   RP   RÉ   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_syntax_error_offset_at_eolØ  s    		N(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   RE   RÆ   RÇ   RÊ   RÍ   t   unittestt   skipIfRŠ   R   RÔ   RÖ   RÙ   RÝ   Rà   Râ   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÃ   Y  s   			(((((t   PyExcReportingTestsc           B   s   e  Z d d  „ Z RS(   c         C   s„   |  j  | | ƒ \ } } d j t j t | ƒ | | ƒ ƒ } t d ƒ   } t j t | ƒ | | ƒ Wd  QX|  j | j ƒ  | ƒ | S(   NR   Re   (	   RÆ   R\   R)   t   format_exceptionRa   R   t   print_exceptionR;   R¢   (   R   RP   R$   t   st   sio(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRË   ê  s    N(   R   R   RE   RË   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRå   ä  s   t   MiscTracebackCasesc           B   s   e  Z d  „  Z RS(   c            s¶   ‡ f d †  } ‡  f d †  ‰ d „  ‰  y | ƒ  Wn t  j ƒ  \ } } } n X| j j j j } |  j t | j ƒ d ƒ t j | ƒ t  j	 d  d k r² |  j i  | j ƒ n  d  S(   Nc              s   ˆ  ƒ  d  S(   N(    (    (   t   middle(    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   outerú  s    c              s   ˆ  ƒ  d  S(   N(    (    (   t   inner(    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRë   ü  s    c          S   s   d }  d d d  S(   Ni   i    (    (   t   i(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRí   þ  s    i   i   i   (   i   i   (
   RŠ   R    R'   R%   R;   R<   R#   R)   R¸   R   (   R   Rì   R©   R   R$   t   inner_frame(    (   Rí   Rë   s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   test_clearù  s    	(   R   R   Rð   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRê   ô  s   t	   TestFramec           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s\   t  j ƒ  t  j d t ƒ t j d d d ƒ } |  j d t | ƒ ƒ |  j d  | j	 ƒ d  S(   Nt   fi   t   dummys%   """Test cases for traceback module"""(   Rò   i   Ró   s%   """Test cases for traceback module"""(
   t	   linecachet
   clearcachet	   lazycachet   fake_moduleR)   t   FrameSummaryR;   t   tupleRE   t   locals(   R   Rò   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_basics  s    
c         C   s_   t  j ƒ  t j d d d d t ƒ} |  j d  | j ƒ t  j d t	 ƒ |  j d | j
 ƒ d  S(   NRò   i   Ró   t   lookup_lines%   """Test cases for traceback module"""(   Rô   Rõ   R)   Rø   t   FalseR;   RE   t   _lineRö   R÷   t   line(   R   Rò   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_lazy_lines  s    
c         C   s2   t  j d d d d d ƒ} |  j d | j ƒ d  S(   NRò   i   Ró   Rÿ   (   R)   Rø   R;   Rÿ   (   R   Rò   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_explicit_line'  s    (   R   R   Rû   R   R  (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRñ     s   				t	   TestStackc           B   s›   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j e j ƒ  d k d	 ƒ d
 „  ƒ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s/   t  t j d  ƒ ƒ } |  j t | ƒ d ƒ d  S(   Ni
   (   t   listR)   t
   walk_stackRE   t   assertGreaterR<   (   R   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_walk_stack.  s    c         C   sd   y d d Wn& t  k
 r4 t j ƒ  \ } } } n Xt t j | ƒ ƒ } |  j t | ƒ d ƒ d  S(   Ni   i    (   R[   RŠ   R    R  R)   t   walk_tbR;   R<   (   R   RÌ   R$   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_walk_tb2  s    c         C   s2   t  j j t  j d  ƒ ƒ } |  j | t  j ƒ d  S(   N(   R)   t   StackSummaryt   extractR  RE   t   assertIsInstance(   R   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_extract_stack:  s    c         C   s;   t  j j t  j d  ƒ d d ƒ} |  j t | ƒ d ƒ d  S(   Nt   limiti   (   R)   R	  R
  R  RE   R;   R<   (   R   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_extract_stack_limit>  s    !c         C   s‡   t  j ƒ  t  j d t ƒ t d d ƒ } t | d  d  ƒ } t j j	 t
 | d f g ƒ d t ƒ} t  j ƒ  |  j | d j d ƒ d  S(   Ns   /foo.pyt   methodi   t   lookup_linesi    s
   import sys(   Rô   Rõ   t   updatecacheR÷   t	   test_codet
   test_frameRE   R)   R	  R
  t   itert   TrueR;   Rÿ   (   R   t   cRò   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_extract_stack_lookup_linesB  s    
'
c         C   s   t  j ƒ  t d d ƒ } t | d  d  ƒ } t j j t | d f g ƒ d t	 ƒ} |  j
 i  t  j ƒ t  j d t ƒ |  j
 | d j d ƒ d  S(   Ns   /foo.pyR  i   R  i    s
   import sys(   Rô   Rõ   R  R  RE   R)   R	  R
  R  Rý   R;   t   cacheR  R÷   Rÿ   (   R   R  Rò   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt*   test_extract_stackup_deferred_lookup_linesK  s    
'c         C   s2   t  j j d g ƒ } |  j d g | j ƒ  ƒ d  S(   Ns   foo.pyi   R   Rÿ   s*     File "foo.py", line 1, in fred
    line
(   s   foo.pyi   R   Rÿ   (   R)   R	  t	   from_listR;   Rp   (   R   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_from_listT  s    c         C   s2   t  j j d g ƒ } |  j d g | j ƒ  ƒ d  S(   Ns   foo.pyi   R   Rÿ   s*     File "foo.py", line 1, in fred
    line
(   s   foo.pyi   R   Rÿ   (   R)   R	  R  R;   Rp   (   R   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_format_smokeZ  s    s   ANSI_X3.4-1968s   Requires non-ascii fs encodingc         C   s_   t  d ƒ j t j ƒ  ƒ } t j j | d d d f g ƒ } |  j t  d ƒ g | j ƒ  ƒ d  S(   Ns   \u5341i   R   Rÿ   s*     File "\u5341", line 1, in fred
    line
(	   R   R`   RŠ   t   getfilesystemencodingR)   R	  R  R;   Rp   (   R   t   fnameRè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_format_unicode_filenameb  s
    !c         C   sJ   t  d ƒ } t j j | d d d f g ƒ } |  j d g | j ƒ  ƒ d  S(   Ns   ‹i   R   Rÿ   s+     File "b'\x8b'", line 1, in fred
    line
(   R   R)   R	  R  R;   Rp   (   R   R  Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_format_bad_filenamem  s
    !c         C   s‡   t  j d t ƒ  ƒ t d d ƒ } t | t ƒ  i d d 6ƒ } t j j t | d f g ƒ d t	 ƒ} |  j
 | d j i d d 6ƒ d  S(	   Ns   /foo.pyR  i   t	   somethingi   t   capture_localsi    t   1(   Rô   R  t   globalsR  R  R)   R	  R
  R  R  R;   Rú   (   R   R  Rò   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_localsx  s
    'c         C   sz   t  j d t ƒ  ƒ t d d ƒ } t | t ƒ  i d d 6ƒ } t j j t | d f g ƒ ƒ } |  j	 | d j
 d  ƒ d  S(   Ns   /foo.pyR  i   R!  i   i    (   Rô   R  R$  R  R  R)   R	  R
  R  R;   Rú   RE   (   R   R  Rò   Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_no_locals  s
    !c         C   s=   d „  } | d d ƒ } |  j  d t d g | j ƒ  ƒ d  S(   Nc         S   s1   d } d } t  j j t  j d  ƒ d t d d ƒS(   Ni   i   R"  R  (   R)   R	  R
  R  RE   R  (   t   kt   vt   aR   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   some_inner‡  s    	i   i   s     File "s   ", line 651, in some_inner
    traceback.walk_stack(None), capture_locals=True, limit=1)
    a = 1
    b = 2
    k = 3
    v = 4
(   R;   t   FNAMERp   (   R   R*  Rè   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_format_locals†  s
    	(   R   R   R  R  R  R  R  R  R  R  Rã   Rä   RŠ   R  R  R   R%  R&  R,  (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR  ,  s   										
			t   TestTracebackExceptionc           B   s-  e  Z d  „  Z e j e j d  d k  d ƒ d „  ƒ Z e j e j d  d k  d ƒ d „  ƒ Z e j e j d  d k  d ƒ d „  ƒ Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z e j e j d d k  d ƒ e j e j ƒ  d k d ƒ d „  ƒ ƒ Z e j e j d d k  d ƒ d „  ƒ Z RS(   c         C   sá   y d d WnK t  k
 rY t j ƒ  } t j | Œ  } t j j t j | d ƒ ƒ } n X|  j d  | j
 ƒ |  j d  | j ƒ |  j t | j ƒ |  j | | j ƒ |  j | d | j ƒ |  j t | d ƒ t | ƒ ƒ d  S(   Ni   i    i   (   R[   RŠ   R    R)   t   TracebackExceptionR	  R
  R  R;   RE   t	   __cause__t   __context__Rý   t   __suppress_context__t   stackt   exc_typet   str(   R   R    R-   t   expected_stack(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   test_smoke›  s    	i   i   i    s   Only applies to 3+c         C   s*  d „  } y | ƒ  Wnz t  k
 r } t j ƒ  } t j j t j | d ƒ d d d t d t ƒ|  _	 t j
 j | d d d t d t ƒ|  _ n X|  j	 } |  j } |  j d  | j ƒ |  j d  | j ƒ |  j t | j ƒ |  j | | j ƒ |  j | d | j ƒ |  j t | d ƒ t | ƒ ƒ d  S(   Nc           S   s   d d d  S(   Ni   i    (    (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRŒ   ­  s    i   R  i   R  R"  i    (   R[   RŠ   R    R)   R	  R
  R  Rý   R  R5  R.  t   from_exceptionR-   R;   RE   R/  R0  R1  R2  R3  R4  (   R   RŒ   RP   R    R5  R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_from_exceptionª  s$    			"		s   Only applies to 3.2+c         C   sN  yN z d d Wd  t  j ƒ  } t j | Œ  } t d ƒ } t t d ƒ | ƒ XWnK t k
 r› t  j ƒ  } t j | Œ  } t j j t j | d ƒ ƒ } n Xt j t | d  ƒ } |  j
 | | j ƒ |  j
 | | j ƒ t | d d ƒ r |  j
 t | j ƒ n  |  j
 | | j ƒ |  j
 | d | j ƒ |  j
 t | d ƒ t | ƒ ƒ d  S(   Ni   i    t   causes   uh oki   R1  (   RŠ   R    R)   R.  R[   R   R	  R
  R  RE   R;   R/  R0  t   hasattrR  R1  R2  R3  R4  (   R   t   exc_info_contextt   exc_contextR9  R    R-   R5  t	   exc_cause(    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÔ   Á  s(    	c         C   s  y; z d d Wd  t  j ƒ  } t j | Œ  } t d ƒ ‚ XWnK t k
 rˆ t  j ƒ  } t j | Œ  } t j j t j | d ƒ ƒ } n X|  j d  | j
 ƒ |  j | | j ƒ |  j t | j ƒ |  j | | j ƒ |  j | d | j ƒ |  j t | d ƒ t | ƒ ƒ d  S(   Ni   i    s   uh ohi   (   RŠ   R    R)   R.  R[   R	  R
  R  R;   RE   R/  R0  Rý   R1  R2  R3  R4  (   R   R;  R<  R    R-   R5  (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyRÖ   Ù  s"    	c            sŽ   ‡  f d †  ‰  y ˆ  d ƒ WnW t  k
 rv t j ƒ  } t j d d | Œ } t j j t j | d ƒ d d ƒ} n X|  j | | j	 ƒ d  S(   Nc            s#   |  r ˆ  |  d ƒ n d d d  S(   Ni   i    (    (   t   n(   t   recurse(    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR?  ï  s    i
   R  i   i   (
   R[   RŠ   R    R)   R.  R	  R
  R  R;   R2  (   R   R    R-   R5  (    (   R?  s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt
   test_limitî  s    	 c         C   s¥   t  j ƒ  t d ƒ } t d d ƒ } t | d  d  ƒ } t | d d  ƒ } t j t | | d t	 ƒ} |  j
 i  t  j ƒ t  j d t ƒ |  j
 | j d j d ƒ d  S(   Ns   uh ohs   /foo.pyR  i   R  i    s
   import sys(   Rô   Rõ   R[   R  R  RE   t   test_tbR)   R.  Rý   R;   R  R  R÷   R2  Rÿ   (   R   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_lookup_linesý  s    
c         C   s§   t  j d t ƒ t d ƒ } t d d ƒ } t | t ƒ  i d d 6d d 6ƒ } t | d d  ƒ } t	 j
 t | | d	 t ƒ} |  j | j d
 j i d d 6d d 6ƒ d  S(   Ns   /foo.pys   uh ohR  i   R!  t   stringt   otheri   R"  i    R#  s   'string'(   Rô   R  R÷   R[   R  R  R$  RA  RE   R)   R.  R  R;   R2  Rú   (   R   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR%    s    #c         C   s‰   t  j d t ƒ t d ƒ } t d d ƒ } t | t i d d 6ƒ } t | d d  ƒ } t j	 t | | ƒ } |  j
 | j d j d  ƒ d  S(   Ns   /foo.pys   uh ohR  i   R!  i   i    (   Rô   R  R÷   R[   R  R  RA  RE   R)   R.  R;   R2  Rú   (   R   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR&    s    c         C   s¯   t  j d t ƒ t d ƒ } t d d ƒ } t | t i d d 6ƒ } t | d d  ƒ } t j	 t | | ƒ } |  j
 t d ƒ t d ƒ t d	 ƒ t d
 ƒ g t | j ƒ  ƒ ƒ d  S(   Ns   /foo.pys   uh ohR  i   R!  i   s#   Traceback (most recent call last):
s@     File "/foo.py", line 6, in method
    from io import StringIO
s     File "<string>", line None
s   SyntaxError: uh oh
(   Rô   R  R÷   R:   R  R  RA  RE   R)   R.  R;   R   R  Rp   (   R   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_syntax_no_extras  s    			c         C   s"  t  d ƒ } t d d d t | ƒ ƒ } t j d | ƒ t d ƒ } d | _ d | _ t d ƒ | _	 d	 | _
 t d d
 ƒ } t | | i d	 d 6ƒ } t | d d  ƒ } t j t | | ƒ } t | j ƒ  ƒ |  j t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ g t | j ƒ  ƒ ƒ d  S(   Ns   1
\u5341
3
R   R   R   s   /foo.pys   uh ohi   s   something wrongi   R  R!  s#   Traceback (most recent call last):
s/     File "/foo.py", line 2, in method
    \u5341
s     File "/foo.py", line 2
s       \u5341
s       ^
s   SyntaxError: uh oh
(   R   t   dictR   Rô   R  R:   t   filenameR   R   R‘   t   offsetR  R  RA  RE   R)   R.  R  R*   R;   Rp   (   R   R   R÷   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   test_syntax_undecoded_lines*  s.    								s   Applies to 2.x only.s   ANSI_X3.4-1968s   Requires non-ascii fs encodingc   	      C   s=  t  d ƒ j t j ƒ  ƒ } t  d ƒ } t d d d t | ƒ ƒ } t j | | ƒ t d ƒ } | | _	 d | _
 t d ƒ | _ d	 | _ t | d
 ƒ } t | | i d	 d 6ƒ } t | d d  ƒ } t j t | | ƒ } t | j ƒ  ƒ |  j t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ g t | j ƒ  ƒ ƒ d  S(   Ns   \u5341s   1
2
3
R   R   R   s   uh ohi   s   something wrongi   R  R!  s#   Traceback (most recent call last):
s)     File "\u5341", line 2, in method
    2
s     File "\u5341", line 2
s       something wrong
s       ^
s   SyntaxError: uh oh
(   R   R`   RŠ   R  RF  R   Rô   R  R:   RG  R   R   R‘   RH  R  R  RA  RE   R)   R.  R  R*   R;   Rp   (	   R   R  R   R÷   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR  E  s0    								c   	      C   s:  t  d ƒ } t d ƒ } t d d d t | ƒ ƒ } t j | | ƒ t d ƒ } | | _ d | _ t  d ƒ | _	 d	 | _
 t | d
 ƒ } t | | i d	 d 6ƒ } t | d d  ƒ } t j t | | ƒ } t | j ƒ  ƒ |  j t d ƒ t  d ƒ j ƒ  t  d ƒ j ƒ  t d ƒ t d ƒ t d ƒ g t | j ƒ  ƒ ƒ d  S(   Ns   ‹s   1
2
3
R   R   R   s   uh ohi   s   something wrongi   R  R!  s#   Traceback (most recent call last):
s*     File "b'\x8b'", line 2, in method
    2
s     File "b'\x8b'", line 2
s       something wrong
s       ^
s   SyntaxError: uh oh
(   R   R   RF  R   Rô   R  R:   RG  R   R‘   RH  R  R  RA  RE   R)   R.  R  R*   R;   Rw   Rp   (	   R   R  R   R÷   RP   R  Rò   R$   R-   (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR   e  s0    						(   i   i    (   i   i   (   i   i   (   R   R   R6  Rã   Rä   RŠ   R   R8  RÔ   RÖ   R@  RB  R%  R&  RE  RI  t
   skipUnlessR  R  R   (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyR-  ™  s   	(((							(   i   i   (    (    (:   t   __doc__t   collectionsR    R×   Rm   R   Ry   RŠ   t   ret   contextlib2t
   contextlibR   t
   linecache2Rô   R›   R   R   R   R   Rž   R   t   exec_t	   unittest2Rã   t	   testtoolst   testtools.matchersR   R	   R
   t
   traceback2R)   t   contextmanagerR   t   __file__R+  R{   R   RF  R\   t   getlinesR÷   R  R  RA  t   TestCaseR(   R“   RÒ   RÕ   R1   t   escapeRÐ   RÃ   Rå   Rê   Rñ   R  R-  (    (    (    s>   lib/python2.7/site-packages/traceback2/tests/test_traceback.pyt   <module>   s\   
!¹W%‹m