mň
­fIc           @   s  d  k  l Z d k Z d k Z d k Z d   Z dB dC dD g e _ d   Z dE dF dG dH dI dJ g e _ d   Z dK dL dM dN dO g e _ d   Z	 dP dQ dR dS dT dU dV dW dX dY g
 e	 _ d   Z
 dZ d[ d\ d] g e
 _ d   Z d   Z d^ d_ d` da db dc g e _ d   Z d   Z dd de df dg dh di dj dk dl dm dn g e _ d   Z d   Z do g e _ d   Z d   Z dp dq dr ds g e _ d   Z dt du dv dw dx dy g e _ d   Z dz d{ d| d} d~ d d d d d d d d g e _ d   Z d d d d d d d d d d d d g e _ d  f  d!     YZ d" e i f d#     YZ d$ e i f d%     YZ d& f  d'     YZ d(   Z d e _ d
 g e _ d)   Z d e _ d d d	 g e _ d*   Z d e _ d	 d g e _ d+   Z  d e  _ d d
 d d d
 d d d g e  _ d,   Z! d e! _ d
 g e! _ d-   Z" d e" _ d d	 d
 g e" _ d.   Z# d e# _ d	 d/ g e# _ d0   Z$ d e$ _ d	 e% g e$ _ d1   Z& d e& _ d	 e% g e& _ d3   Z' d e' _ e% g e' _ d4   Z( d e( _ e% g e( _ d5   Z) d e) _ e% g e) _ d6   Z* d e* _ e% g e* _ d7   Z+ d  e+ _ e% g e+ _ d8   Z, dĄ e, _ d
 d
 e% g e, _ d9   Z- d˘ e- _ d
 d e% g e- _ d:   Z. dŁ e. _ d
 e% g e. _ d;   Z/ d¤ e/ _ e% g e/ _ d=   Z0 d> e i f d?     YZ1 d@   Z2 e3 dA j o e2   n d S(Ľ   (   s   test_supportNc           C   s   d S(   Ni   (    (    (    (    t,   /mit/python/lib/python2.4/test/test_trace.pyt   basic	   s    i    t   calli   t   linet   returnc          C   s"   d }  ~  x d o q Wd }  d  S(   Ni   i    (   t   x(   R   (    (    R    t   arigo_example   s     i   i   i   c          C   s   d }  ~  d }  d  S(   Ni   (   R   (   R   (    (    R    t   one_instr_line    s    c          C   s8   d } x+ t d  D] }  |  o
 d } q d } q Wd  S(   Ni   i   (   R   t   ranget   a(   R	   R   (    (    R    t   no_pop_tops+   s     
i   i   c          C   s   x d o t  q Wd }  d  S(   Ni    i   (   t   blaR   (   R   (    (    R    t   no_pop_blocks>   s     	c          C   s
   d }  d  S(   Ni   (   R   (   R   (    (    R    t   calledH   s    c           C   s   t    d  S(   N(   R   (    (    (    R    R   K   s    iý˙˙˙iţ˙˙˙c           C   s
   t   d  S(   N(   t	   Exception(    (    (    R    t   raisesU   s    c          C   s-   y t    Wn t j
 o } d }  n Xd  S(   Ni   (   R   R   t   excR   (   R   R   (    (    R    t
   test_raiseX   s    t	   exceptionc         C   s#   t  i |   |  t  i   i _ d  S(   N(   t   syst   settracet	   tracefunct	   _getframet   f_backt   f_trace(   R   (    (    R    t   _settrace_and_returnj   s    c         C   s   t  |   d  S(   N(   R   R   (   R   (    (    R    t   settrace_and_returnm   s    c         C   s)   t  i |   |  t  i   i _ t  d  S(   N(   R   R   R   R   R   R   t   RuntimeError(   R   (    (    R    t   _settrace_and_raiser   s    c         C   s*   y t  |   Wn t j
 o	 } n Xd  S(   N(   R   R   R   R   (   R   R   (    (    R    t   settrace_and_raisev   s    c          C   s+   d }  d } |  | j o |  d } n d  S(   Ni   i   (   R	   t   b(   R	   R   (    (    R    t   ireturn_example   s    c          C   sO   t  d d  } y& d }  x | |  } |  d 7}  q WWn t j
 o n Xd  S(   Ni    i   i   (   R   t   itemst   iR   t
   IndexError(   R!   R    R   (    (    R    t   tightloop_example   s      i   c          C   sE   t  d d  } y d }  x | |  }  q WWn t j
 o n Xd  S(   Ni   i   i    (   R   R    R!   R"   (   R!   R    (    (    R    t   tighterloop_exampleŠ   s       t   Tracerc           B   s   t  Z d   Z d   Z RS(   Nc         C   s   g  |  _ d  S(   N(   t   selft   events(   R&   (    (    R    t   __init__ż   s    c         C   s    |  i i | i | f  |  i S(   N(   R&   R'   t   appendt   framet   f_linenot   eventt   trace(   R&   R*   R,   t   arg(    (    R    R-   Á   s    (   t   __name__t
   __module__R(   R-   (    (    (    R    R%   ž   s   	t   TraceTestCasec           B   s   t  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(   Nc         C   s~   g  } | D] \ } } | | | | f q ~ } | | j o< |  i d d i t	 i
 t t |  t t |     n d  S(   Ns"   events did not match expectation:
s   
(   t   _[1]R'   t   lt   et   line_offsett   expected_eventsR&   t   failt   joint   difflibt   ndifft   mapt   str(   R&   R5   R'   R6   R4   R3   R2   (    (    R    t   compare_eventsĆ   s    1!c         C   sP   t    } t i | i  |   t i d   |  i | i	 i
 | i | i  d  S(   N(   R%   t   tracerR   R   R-   t   funct   NoneR&   R=   t	   func_codet   co_firstlinenoR'   (   R&   R?   R>   (    (    R    t   run_testĎ   s    	c         C   sF   t    } | | i  t i d   |  i | i	 i
 | i | i  d  S(   N(   R%   R>   R?   R-   R   R   R@   R&   R=   RA   RB   R'   (   R&   R?   R>   (    (    R    t	   run_test2×   s
    	c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_01_basicŢ   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_02_arigoŕ   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_03_one_instrâ   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_04_no_pop_blocksä   s    c         C   s   |  i t  d  S(   N(   R&   RC   R
   (   R&   (    (    R    t   test_05_no_pop_topsć   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_06_callč   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_07_raiseę   s    c         C   s   |  i t  d  S(   N(   R&   RD   R   (   R&   (    (    R    t   test_08_settrace_and_returní   s    c         C   s   |  i t  d  S(   N(   R&   RD   R   (   R&   (    (    R    t   test_09_settrace_and_raiseď   s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_10_ireturnń   s    c         C   s   |  i t  d  S(   N(   R&   RC   R#   (   R&   (    (    R    t   test_11_tightloopó   s    c         C   s   |  i t  d  S(   N(   R&   RC   R$   (   R&   (    (    R    t   test_12_tighterloopő   s    (   R/   R0   R=   RC   RD   RE   RF   RG   RH   RI   RJ   RK   RL   RM   RN   RO   RP   (    (    (    R    R1   Ĺ   s   															t   RaisingTraceFuncTestCasec           B   sP   t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(	   Nc         C   s%   | |  i j o
 t  n |  i Sd S(   sX   A trace function that raises an exception in response to a
        specific trace event.N(   R,   R&   t   raiseOnEventt
   ValueErrorR-   (   R&   R*   R,   R.   (    (    R    R-   ů   s     
c         C   s,   |  i d j o d } d | } n d Sd S(   s   The function to trace; raises an exception if that's the case
        we're testing, so that the 'exception' trace event fires.R   i    i   N(   R&   RR   R   t   y(   R&   RT   R   (    (    R    t   f  s
     c         C   s   | |  _ yf x_ t t i   d  D]G } t i |  i  y |  i	   Wn t
 j
 o q# X|  i d  q# WWn  t j
 o |  i d  n Xd S(   sT   Tests that an exception raised in response to the given event is
        handled OK.i   s   exception not thrown!s   recursion counter not resetN(   R,   R&   RR   t   xrangeR   t   getrecursionlimitR!   R   R-   RU   RS   R7   R   (   R&   R,   R!   (    (    R    t   run_test_for_event
  s     	 c         C   s   |  i d  d  S(   NR   (   R&   RX   (   R&   (    (    R    t	   test_call  s    c         C   s   |  i d  d  S(   NR   (   R&   RX   (   R&   (    (    R    t	   test_line  s    c         C   s   |  i d  d  S(   NR   (   R&   RX   (   R&   (    (    R    t   test_return  s    c         C   s   |  i d  d  S(   NR   (   R&   RX   (   R&   (    (    R    t   test_exception!  s    c            sj   d       d     t i    y    Wn& t j
 o d  k } | i   n X|  i d  d  S(   Nc          C   s    x t  d  D] }  |  GHq Wd  S(   Ni   (   R   R!   (   R!   (    (    R    RU   %  s     c            s8   | d j o' |  i  i i d j o t d  n   S(   NR   i   s   i am crashing(   t   whyR*   R+   RU   RA   RB   R   t   g(   R*   R]   t   extra(   R^   RU   (    R    R^   )  s    's   exception not propagated(	   RU   R^   R   R   R   t   gct   collectR&   R7   (   R&   R^   RU   R`   (    (   R^   RU   R    t   test_trash_stack$  s    		(
   R/   R0   R-   RU   RX   RY   RZ   R[   R\   Rb   (    (    (    R    RQ   ř   s   								t
   JumpTracerc           B   s    t  Z d  Z d   Z d   Z RS(   sš   Defines a trace function that jumps from one place to another,
    with the source and destination lines of the jump being defined by
    the 'jump' property of the function under test.c         C   s6   | |  _  | i d |  _ | i d |  _ t |  _ d  S(   Ni    i   (   t   functionR&   t   jumpt   jumpFromt   jumpTot   Falset   done(   R&   Rd   (    (    R    R(   C  s    	c         C   s   |  i o | i |  i i j oj | i i } | i | |  i	 j oC y | |  i
 | _ Wn t j
 o |  i
 | _ n Xt |  _ q n |  i S(   N(   R&   Ri   R*   t   f_codeRd   RA   RB   t	   firstLineR+   Rf   Rg   t	   TypeErrort   TrueR-   (   R&   R*   R,   R.   Rk   (    (    R    R-   I  s    !(   R/   R0   t   __doc__R(   R-   (    (    (    R    Rc   >  s    	c         C   s+   |  i d  |  i d  |  i d  d  S(   Ni   i   i   (   t   outputR)   (   Ro   (    (    R    t   jump_simple_forwardsX  s    c         C   s   |  i d  |  i d  d  S(   Ni   i   (   Ro   R)   (   Ro   (    (    R    t   jump_simple_backwards`  s    c         C   sP   x< d D]4 } |  i d  x d g D] } |  i d  q$ Wq W|  i d  d  S(   Ni   i   i   i   i   (   i   i   (   R!   Ro   R)   t   j(   Ro   R!   Rr   (    (    R    t   jump_out_of_block_forwardsg  s     
 c         C   sm   |  i d  xL d g D]A } |  i d  x d g D] } |  i d  q4 W|  i d  q W|  i d  d  S(   Ni   i   i   i   i   i   (   Ro   R)   R!   Rr   (   Ro   R!   Rr   (    (    R    t   jump_out_of_block_backwardsq  s    
 
 c         C   s   |  i d  |  i d  d  S(   Ni   i   (   Ro   R)   (   Ro   (    (    R    t   jump_to_codeless_line}  s    c         C   s+   |  i d  |  i d  |  i d  d  S(   Ni   i   i   (   Ro   R)   (   Ro   (    (    R    t   jump_to_same_line  s    c         C   sU   z |  i d  Wd  |  i d  z |  i d  Wd  |  i d  X|  i d  Xd  S(   Ni   i   i   i   i	   (   Ro   R)   (   Ro   (    (    R    t   jump_in_nested_finally  s      i	   c         C   sS   y |  i d  |  i d  Wn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   t   after(   Ro   R)   RS   R4   R<   (   Ro   R4   (    (    R    t   no_jump_too_far_forwards  s
    c         C   sS   y |  i d  |  i d  Wn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   t   before(   Ro   R)   RS   R4   R<   (   Ro   R4   (    (    R    t   no_jump_too_far_backwards¨  s
    i˙˙˙˙c         C   sH   y |  i d  Wn0 t i   d } |  i d t |  j  n Xd  S(   Ni   i   t   except(   Ro   R)   R   t   exc_infoR4   R<   (   Ro   R4   (    (    R    t   no_jump_to_except_1ł  s
    c         C   sT   y |  i d  Wn< t j
 o0 t i   d } |  i d t |  j  n Xd  S(   Ni   i   R|   (   Ro   R)   RS   R   R}   R4   R<   (   Ro   R4   (    (    R    t   no_jump_to_except_2˝  s
    c         C   sF   y |  i d  Wn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   R|   (   Ro   R)   RS   R4   R<   (   Ro   R4   (    (    R    t   no_jump_to_except_3Ç  s    c         C   sL   y |  i d  Wn4 t t f j
 o" } |  i d t |  j  n Xd  S(   Ni   R|   (   Ro   R)   RS   R   R4   R<   (   Ro   R4   (    (    R    t   no_jump_to_except_4Đ  s    c         C   sd   y/ |  i d  x d D] } |  i d  q WWn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   i   t   into(   i   i   (   Ro   R)   R!   RS   R4   R<   (   Ro   R!   R4   (    (    R    t   no_jump_forwards_into_blockŮ  s     c         C   sd   y/ x d D] } |  i d  q
 W|  i d  Wn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   i   i   R   (   i   i   (   R!   Ro   R)   RS   R4   R<   (   Ro   R!   R4   (    (    R    t   no_jump_backwards_into_blockä  s     c         C   sa   y, z |  i d  d } Wd  |  i d  XWn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   i   t   finally(   Ro   R)   R   RS   R4   R<   (   Ro   R4   R   (    (    R    t   no_jump_into_finally_blockď  s    
 c         C   sh   y3 z |  i d  Wd  |  i d  |  i d  XWn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   i   i   R   (   Ro   R)   RS   R4   R<   (   Ro   R4   (    (    R    t   no_jump_out_of_finally_blockü  s     c         C   sF   y |  i d  Wn. t j
 o" } |  i d t |  j  n Xd  S(   Ni   t   integer(   Ro   R)   RS   R4   R<   (   Ro   R4   (    (    R    t   no_jump_to_non_integers
  s    t   Spamc          C   s^   y t  i   i } | i | _ Wn/ t j
 o# }  d t |   j o   qZ n Xt d  d  S(   NR-   s'   Trace-function-less jump failed to fail(	   R   R   R   t   previous_frameR+   RS   R4   R<   R   (   R4   R   (    (    R    t   no_jump_without_trace_function  s    t   JumpTestCasec           B   sĹ   t  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 d   Z d   Z d   Z d   Z d   Z d   Z RS(   Nc         C   sB   | | j o1 |  i d d t |  d d t |   n d  S(   Ns   Outputs don't match:
s
   Expected: s   
s
   Received: (   t   receivedt   expectedR&   R7   t   repr(   R&   R   R   (    (    R    t   compare_jump_output$  s    c         C   sP   t  |  } t i | i  g  } | |  t i d   |  i	 | i |  d  S(   N(
   Rc   R?   R>   R   R   R-   Ro   R@   R&   R   (   R&   R?   Ro   R>   (    (    R    RC   *  s    
c         C   s   |  i t  d  S(   N(   R&   RC   Rp   (   R&   (    (    R    t   test_01_jump_simple_forwards2  s    c         C   s   |  i t  d  S(   N(   R&   RC   Rq   (   R&   (    (    R    t   test_02_jump_simple_backwards4  s    c         C   s   |  i t  d  S(   N(   R&   RC   Rs   (   R&   (    (    R    t"   test_03_jump_out_of_block_forwards6  s    c         C   s   |  i t  d  S(   N(   R&   RC   Rt   (   R&   (    (    R    t#   test_04_jump_out_of_block_backwards8  s    c         C   s   |  i t  d  S(   N(   R&   RC   Ru   (   R&   (    (    R    t   test_05_jump_to_codeless_line:  s    c         C   s   |  i t  d  S(   N(   R&   RC   Rv   (   R&   (    (    R    t   test_06_jump_to_same_line<  s    c         C   s   |  i t  d  S(   N(   R&   RC   Rw   (   R&   (    (    R    t   test_07_jump_in_nested_finally>  s    c         C   s   |  i t  d  S(   N(   R&   RC   Ry   (   R&   (    (    R    t    test_08_no_jump_too_far_forwards@  s    c         C   s   |  i t  d  S(   N(   R&   RC   R{   (   R&   (    (    R    t!   test_09_no_jump_too_far_backwardsB  s    c         C   s   |  i t  d  S(   N(   R&   RC   R~   (   R&   (    (    R    t   test_10_no_jump_to_except_1D  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_11_no_jump_to_except_2F  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_12_no_jump_to_except_3H  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_13_no_jump_to_except_4J  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t#   test_14_no_jump_forwards_into_blockL  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t$   test_15_no_jump_backwards_into_blockN  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t"   test_16_no_jump_into_finally_blockP  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t$   test_17_no_jump_out_of_finally_blockR  s    c         C   s   |  i t  d  S(   N(   R&   RC   R   (   R&   (    (    R    t   test_18_no_jump_to_non_integersT  s    c         C   s   t    d  S(   N(   R   (   R&   (    (    R    t&   test_19_no_jump_without_trace_functionV  s    (   R/   R0   R   RC   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    RĄ   R˘   RŁ   R¤   (    (    (    R    R   #  s*   																				c           C   s   t  i t t t  d  S(   N(   t   test_supportt   run_unittestR1   RQ   R   (    (    (    R    t	   test_mainY  s    	t   __main__(   i    s   call(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   iý˙˙˙s   call(   iţ˙˙˙s   line(   iţ˙˙˙s   return(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   iý˙˙˙s   call(   iţ˙˙˙s   line(   iţ˙˙˙s	   exception(   iţ˙˙˙s   return(   i   s	   exception(   i   s   line(   i   s   line(   i   s   return(   i   s   return(   i   s	   exception(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s	   exception(   i   s   line(   i   s   line(   i   s   return(   i    s   call(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s   line(   i   s	   exception(   i   s   line(   i   s   line(   i   s   return(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i	   (   i   i   (   i   i˙˙˙˙(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   R   (4   t   testRĽ   t   unittestR   R9   R   R'   R   R   R
   R   R   R   R   R   R   R   R   R   R   R#   R$   R%   t   TestCaseR1   RQ   Rc   Rp   Re   Ro   Rq   Rs   Rt   Ru   Rv   Rw   Ry   Rm   R{   R~   R   R   R   R   R   R   R   R   R   R   R§   R/   (-   RĽ   R   RŞ   R   R   R   R   R   R   Rc   R$   R   R   R   Rq   R   RQ   R   R§   Ru   Rp   R   Rv   R   Rt   R{   R   R#   Rs   Ry   R~   R%   R   R   R1   R
   R9   R   R   R   R   Rw   R   R   R   (    (    R    t   ?   sź   							'					*							0	-3F									!																							
		
				6	