ó
‹wÛjc           @   s#  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 d  d l m	 Z	 d e j
 f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d	 „  Z d
 „  Z d „  Z e  j d ƒ Z d e j Ud „  Z d „  Z d e j
 f d „  ƒ  YZ d „  Z e d k re ƒ  n  d S(   iÿÿÿÿN(   t   test_support(   t
   _FakeInputt   PdbTestCasec           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c   	   	   C   sÉ   d } t  | d ƒ � } | j t j | ƒ ƒ Wd QX|  j t j | ƒ t j d d | g } d } } t
 j | d t
 j d t
 j d t
 j ƒ} | j | ƒ \ } } | j j ƒ  | j j ƒ  | | f S(	   s3   Run 'script' lines with pdb and the pdb 'commands'.s   main.pyt   wNs   -mt   pdbt   stdoutt   stdint   stderr(   t   opent   writet   textwrapt   dedentt
   addCleanupR    t   unlinkt   syst
   executablet   Nonet
   subprocesst   Popent   PIPEt   STDOUTt   communicateR   t   closeR   (	   t   selft   scriptt   commandst   filenamet   ft   cmdR   R   t   proc(    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   run_pdb   s    
	c         C   s¨   d } d } d } t  d d ƒ � } | j t j | ƒ ƒ Wd  QX|  j t j d ƒ |  j t j d ƒ |  j | | ƒ \ } } |  j t	 d „  | j
 ƒ  Dƒ ƒ d ƒ d  S(	   Nsã   
            from bar import bar

            def foo():
                bar()

            def nope():
                pass

            def foobar():
                foo()
                nope()

            foobar()
        s‡   
            from bar import bar
            break bar
            continue
            step
            step
            quit
        s5   
            def bar():
                pass
        s   bar.pyR   s   bar.pycc         s   s   |  ] } d  | k Vq d S(   s   main.py(5)foo()->NoneN(    (   t   .0t   l(    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pys	   <genexpr>E   s    s+   Fail to step into the caller after a return(   R   R	   R
   R   R   R    R   R   t
   assertTruet   anyt
   splitlines(   R   R   R   t   barR   R   R   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_issue13183#   s    c         C   sM   d } d } d } |  j  | | ƒ \ } } |  j | | d j | | ƒ ƒ d  S(   Ns   def f: pass
t    s   SyntaxError:sE   

Expected:
{}
Got:
{}
Fail to handle a syntax error in the debuggee.(   R   t   assertInt   format(   R   R   R   t   expectedR   R   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_issue16180H   s    (   t   __name__t
   __module__R   R%   R*   (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyR      s   		%t   PdbTestInputc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s:   Context manager that makes testing Pdb in doctests easier.c         C   s   | |  _  d  S(   N(   t   input(   R   R.   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   __init__W   s    c         C   s"   t  j |  _ t |  j ƒ t  _ d  S(   N(   R   R   t
   real_stdinR   R.   (   R   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt	   __enter__Z   s    c         G   s   |  j  t _ d  S(   N(   R0   R   R   (   R   t   exc(    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   __exit__^   s    (   R+   R,   t   __doc__R/   R1   R3   (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyR-   T   s   		c         C   s	   |  GHd  S(   N(    (   t   x(    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyR	   b   s    c           C   s   d S(   s  This tests the custom displayhook for pdb.

    >>> def test_function(foo, bar):
    ...     import pdb; pdb.Pdb().set_trace()
    ...     pass

    >>> with PdbTestInput([
    ...     'foo',
    ...     'bar',
    ...     'for i in range(5): write(i)',
    ...     'continue',
    ... ]):
    ...     test_function(1, None)
    > <doctest test.test_pdb.test_pdb_displayhook[0]>(3)test_function()
    -> pass
    (Pdb) foo
    1
    (Pdb) bar
    (Pdb) for i in range(5): write(i)
    0
    1
    2
    3
    4
    (Pdb) continue
    N(    (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_pdb_displayhooke   R&   c           C   s   d S(   sþ  Test basic commands related to breakpoints.

    >>> def test_function():
    ...     import pdb; pdb.Pdb().set_trace()
    ...     print(1)
    ...     print(2)
    ...     print(3)
    ...     print(4)

    First, need to clear bdb state that might be left over from previous tests.
    Otherwise, the new breakpoints might get assigned different numbers.

    >>> from bdb import Breakpoint
    >>> Breakpoint.next = 1
    >>> Breakpoint.bplist = {}
    >>> Breakpoint.bpbynumber = [None]

    Now test the breakpoint commands.  NORMALIZE_WHITESPACE is needed because
    the breakpoint list outputs a tab for the "stop only" and "ignore next"
    lines, which we don't want to put in here.

    >>> with PdbTestInput([  # doctest: +NORMALIZE_WHITESPACE
    ...     'break 3',
    ...     'disable 1',
    ...     'ignore 1 10',
    ...     'condition 1 1 < 2',
    ...     'break 4',
    ...     'break 4',
    ...     'break',
    ...     'clear 3',
    ...     'break',
    ...     'condition 1',
    ...     'enable 1',
    ...     'clear 1',
    ...     'commands 2',
    ...     'print 42',
    ...     'end',
    ...     'continue',  # will stop at breakpoint 2 (line 4)
    ...     'clear',     # clear all!
    ...     'y',
    ...     'tbreak 5',
    ...     'continue',  # will stop at temporary breakpoint
    ...     'break',     # make sure breakpoint is gone
    ...     'continue',
    ... ]):
    ...    test_function()
    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(3)test_function()
    -> print(1)
    (Pdb) break 3
    Breakpoint 1 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
    (Pdb) disable 1
    (Pdb) ignore 1 10
    Will ignore next 10 crossings of breakpoint 1.
    (Pdb) condition 1 1 < 2
    (Pdb) break 4
    Breakpoint 2 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
    (Pdb) break 4
    Breakpoint 3 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
    (Pdb) break
    Num Type         Disp Enb   Where
    1   breakpoint   keep no    at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
            stop only if 1 < 2
            ignore next 10 hits
    2   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
    3   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
    (Pdb) clear 3
    Deleted breakpoint 3
    (Pdb) break
    Num Type         Disp Enb   Where
    1   breakpoint   keep no    at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
            stop only if 1 < 2
            ignore next 10 hits
    2   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
    (Pdb) condition 1
    Breakpoint 1 is now unconditional.
    (Pdb) enable 1
    (Pdb) clear 1
    Deleted breakpoint 1
    (Pdb) commands 2
    (com) print 42
    (com) end
    (Pdb) continue
    1
    42
    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(4)test_function()
    -> print(2)
    (Pdb) clear
    Clear all breaks? y
    (Pdb) tbreak 5
    Breakpoint 4 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:5
    (Pdb) continue
    2
    Deleted breakpoint 4
    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(5)test_function()
    -> print(3)
    (Pdb) break
    (Pdb) continue
    3
    4
    N(    (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_pdb_breakpoint_commands�   R&   c           C   s   d S(   s7  This illustrates the simple case of module skipping.

    >>> def skip_module():
    ...     import string
    ...     import pdb; pdb.Pdb(skip=['string*']).set_trace()
    ...     string.lower('FOO')

    >>> with PdbTestInput([
    ...     'step',
    ...     'continue',
    ... ]):
    ...     skip_module()
    > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()
    -> string.lower('FOO')
    (Pdb) step
    --Return--
    > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()->None
    -> string.lower('FOO')
    (Pdb) continue
    N(    (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_pdb_skip_modulesè   R&   t   module_to_skips6   def foo_pony(callback): x = 1; callback(); return Nonec           C   s   d S(   s$  This illustrates skipping of modules that call into other code.

    >>> def skip_module():
    ...     def callback():
    ...         return None
    ...     import pdb; pdb.Pdb(skip=['module_to_skip*']).set_trace()
    ...     mod.foo_pony(callback)

    >>> with PdbTestInput([
    ...     'step',
    ...     'step',
    ...     'step',
    ...     'step',
    ...     'step',
    ...     'continue',
    ... ]):
    ...     skip_module()
    ...     pass  # provides something to "step" to
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()
    -> mod.foo_pony(callback)
    (Pdb) step
    --Call--
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(2)callback()
    -> def callback():
    (Pdb) step
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(3)callback()
    -> return None
    (Pdb) step
    --Return--
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(3)callback()->None
    -> return None
    (Pdb) step
    --Return--
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()->None
    -> mod.foo_pony(callback)
    (Pdb) step
    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[1]>(10)<module>()
    -> pass  # provides something to "step" to
    (Pdb) continue
    N(    (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt#   test_pdb_skip_modules_with_callback  R&   c           C   s   d S(   sÖ  Test that "continue" and "next" work properly in bottom frame (issue #5294).

    >>> def test_function():
    ...     import pdb, sys; inst = pdb.Pdb()
    ...     inst.set_trace()
    ...     inst.botframe = sys._getframe()  # hackery to get the right botframe
    ...     print(1)
    ...     print(2)
    ...     print(3)
    ...     print(4)

    First, need to clear bdb state that might be left over from previous tests.
    Otherwise, the new breakpoints might get assigned different numbers.

    >>> from bdb import Breakpoint
    >>> Breakpoint.next = 1
    >>> Breakpoint.bplist = {}
    >>> Breakpoint.bpbynumber = [None]

    >>> with PdbTestInput([
    ...     'next',
    ...     'break 7',
    ...     'continue',
    ...     'next',
    ...     'continue',
    ...     'continue',
    ... ]):
    ...    test_function()
    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(4)test_function()
    -> inst.botframe = sys._getframe()  # hackery to get the right botframe
    (Pdb) next
    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(5)test_function()
    -> print(1)
    (Pdb) break 7
    Breakpoint 1 at <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>:7
    (Pdb) continue
    1
    2
    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(7)test_function()
    -> print(3)
    (Pdb) next
    3
    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(8)test_function()
    -> print(4)
    (Pdb) continue
    4
    N(    (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt    test_pdb_continue_in_bottomframe/  R&   t   ModuleInitTesterc           B   s   e  Z d  „  Z RS(   c      	   C   s¯   d } d } t  | d ƒ � } | j | ƒ Wd QX|  j t j | ƒ t j d d | g } t j | d t j	 d t j	 d	 t j
 ƒ} | j d
 ƒ \ } } |  j | | d ƒ d S(   sÓ   
        In issue 7750, it was found that if the filename has a sequence that
        resolves to an escape character in a Python string (such as 	), it
        will be treated as the escaped character.
        s   .\test_mod.pys   print("testing pdb")R   Ns   -mR   R   R   R   s   quit
s   pdb munged the filename(   R   R	   R   t   ost   removeR   R   R   R   R   R   R   R'   (   R   t   test_fnt   codeR   R   R   R   R   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   test_filename_correctb  s    			(   R+   R,   RA   (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyR<   `  s   c          C   s7   d d l  m }  t j |  d t ƒt j t t ƒ d  S(   Niÿÿÿÿ(   t   test_pdbt	   verbosity(   t   testRB   R    t   run_doctestt   Truet   run_unittestR   R<   (   RB   (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt	   test_mainz  s
    t   __main__(   t   impR   R=   t   unittestR   R
   RD   R    t   test_doctestR   t   TestCaseR   t   objectR-   R	   R6   R7   R8   t
   new_modulet   modt   __dict__R:   R;   R<   RH   R+   (    (    (    sƒ   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_pdb.pyt   <module>   s*   D			g		+	1	