
    8\hX                        d dl Z d dlZd dlmZ ddlmZmZmZmZ d Z	d Z
 e
            Z ej         e            d           G d d	e                      Zd
Z G d de          Z G d de          Z G d de          ZdS )    N)python_is_optimized   )run_gdbsetup_moduleDebuggerTestsSAMPLE_SCRIPTc                  "    t                       d S N)r        A/opt/python-3.11.14/usr/lib/python3.11/test/test_gdb/test_misc.pysetUpModuler      s    NNNNNr   c                      t          d          \  } }t          j        d|           }|st          j        d| d|d          |                    d                              d          }d|v S )	Nz+--eval-command=python print(dir(gdb.Frame))z.*\[(.*)\].*z9Unable to parse output from gdb.Frame.select test
stdout=z
stderr=
r   z, z'select')r   rematchunittestSkipTestgroupsplit)stdoutstderrmgdb_frame_dirs       r   gdb_has_frame_selectr      s    JKKNFF
&))A $## ## # #$ $ 	$ GGAJJ$$T**M&&r   &Python was compiled with optimizationsc                   &    e Zd Zd Zd Zd Zd ZdS )PyListTestsc                 2    |                      ||           d S r
   )assertEndsWith)selfexpectedactuals      r   assertListingzPyListTests.assertListing   s    FH-----r   c                 n    	 |                      t          dg          }|                     d|           d S )Nzpy-listscriptcmds_after_breakpointz   5    
   6    def bar(a, b, c):
   7        baz(a, b, c)
   8    
   9    def baz(*args):
 >10        id(42)
  11    
  12    foo(1, 2, 3)
get_stack_tracer   r$   r!   bts     r   test_basic_commandzPyListTests.test_basic_command!   sV    1!!9B " E E 	 4 	 	 	 	 	r   c                 n    	 |                      t          dg          }|                     d|           d S )Nz	py-list 9r&   zI   9    def baz(*args):
 >10        id(42)
  11    
  12    foo(1, 2, 3)
r)   r+   s     r   test_one_abs_argzPyListTests.test_one_abs_arg0   sV    A!!9D " G G 	 4 		 	 	 	 	r   c                 n    	 |                      t          dg          }|                     d|           d S )Nzpy-list 1,3r&   zO   1    # Sample script for use by test_gdb
   2    
   3    def foo(a, b, c):
r)   r+   s     r   test_two_abs_argszPyListTests.test_two_abs_args;   sV    B!!9F " I I 	 9 	 	 	 	 	r   N)__name__
__module____qualname__r$   r-   r/   r1   r   r   r   r   r      sP        . . .  	 	 	    r   r   z

from _testcapi import pyobject_vectorcall

def foo(a, b, c):
    bar(a, b, c)

def bar(a, b, c):
    pyobject_vectorcall(baz, (a, b, c), None)

def baz(*args):
    id(42)

foo(1, 2, 3)

c                   Z   e Zd Z ej        ed           ej         e            d          d                         Z ej        ed          d             Z	 ej        ed          d             Z
 ej        ed           ej         e            d          d                         ZdS )StackNavigationTests$test requires py-up/py-down commandsr   c                 p    	 |                      t          ddg          }|                     |d           d S )Npy-upsourcer(   z^.*
#[0-9]+ Frame 0x-?[0-9a-f]+, for file <string>, line 12, in baz \(args=\(1, 2, 3\)\)
#[0-9]+ <built-in method pyobject_vectorcall of module object at remote 0x[0-9a-f]+>
$r*   SAMPLE_WITH_C_CALLassertMultilineMatchesr+   s     r   test_pyup_commandz&StackNavigationTests.test_pyup_commandX   sW     	0!!);9@'8J " L L##B%	 	 	 	 	r   c                 n    	 |                      t          dg          }|                     |d           d S )Npy-downr&   z$Unable to find a newer python frame
r*   r   r    r+   s     r   test_down_at_bottomz(StackNavigationTests.test_down_at_bottome   sT    A!!9B " E EBC	E 	E 	E 	E 	Er   c                 t    	 |                      t          dgdz            }|                     |d           d S )Nr9      r&   z%Unable to find an older python frame
rB   r+   s     r   test_up_at_topz#StackNavigationTests.test_up_at_topm   sX    <!!9@	A " G GBD	F 	F 	F 	F 	Fr   c                 p    	 |                      t          g d          }|                     |d           d S )N)r9   r9   rA   r:   a  ^.*
#[0-9]+ Frame 0x-?[0-9a-f]+, for file <string>, line 12, in baz \(args=\(1, 2, 3\)\)
#[0-9]+ <built-in method pyobject_vectorcall of module object at remote 0x[0-9a-f]+>
#[0-9]+ Frame 0x-?[0-9a-f]+, for file <string>, line 12, in baz \(args=\(1, 2, 3\)\)
$r<   r+   s     r   test_up_then_downz&StackNavigationTests.test_up_then_downu   sX     	/!!);8U8U8U " W W##B%	 	 	 	 	r   N)r2   r3   r4   r   
skipUnlessHAS_PYUP_PYDOWNskipIfr   r?   rC   rF   rH   r   r   r   r6   r6   W   s        X*PQQX_((**=? ? ? ? RQ X*PQQE E RQE X*PQQF F RQF X*PQQX_((**=? ?	 	? ? RQ	 	 	r   r6   c                   L   e Zd Z ej         e            d          d             Z ej         e            d           ej        ed          d                         Z	 ej         e            d          d             Z
 ej         e            d          d             ZdS )PyPrintTestsr   c                 p    	 |                      t          ddg          }|                     |d           d S )Nr9   zpy-print argsr:   z".*\nlocal 'args' = \(1, 2, 3\)\n.*r<   r+   s     r   r-   zPyPrintTests.test_basic_command   sZ     	3!!);9@/8R " T T##B$I	K 	K 	K 	K 	Kr   r7   c                 n    |                      t          g d          }|                     |d           d S )N)r9   r9   z
py-print cz
py-print bz
py-print ar:   z3.*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*r<   r+   s     r   test_print_after_upz PyPrintTests.test_print_after_up   sX     !!);8t8t8t " v v##B$Z	\ 	\ 	\ 	\ 	\r   c                 n    |                      t          ddg          }|                     |d           d S )Nr9   zpy-print __name__r&   z&.*\nglobal '__name__' = '__main__'\n.*r*   r   r>   r+   s     r   test_printing_globalz!PyPrintTests.test_printing_global   sW     !!9@BU8V " X X##B$M	O 	O 	O 	O 	Or   c                 n    |                      t          ddg          }|                     |d           d S )Nr9   zpy-print lenr&   zV.*\nbuiltin 'len' = <built-in method len of module object at remote 0x-?[0-9a-f]+>\n.*rR   r+   s     r   test_printing_builtinz"PyPrintTests.test_printing_builtin   sV     !!9@.8Q " S S##B$}	 	 	 	 	r   N)r2   r3   r4   r   rK   r   r-   rI   rJ   rP   rS   rU   r   r   r   rM   rM      s(       X_((**=? ?K K? ?K X_((**=? ?X*PQQ\ \ RQ? ?\ X_((**=? ?O O? ?O X_((**=? ? ? ?  r   rM   c                       e Zd Z ej         e            d          d             Z ej        ed           ej         e            d          d                         Z	dS )PyLocalsTestsr   c                 n    |                      t          ddg          }|                     |d           d S )Nr9   	py-localsr&   z.*\nargs = \(1, 2, 3\)\n.*rR   r+   s     r   r-   z PyLocalsTests.test_basic_command   sV     !!9@+8N " P P##B$A	C 	C 	C 	C 	Cr   r7   c                 n    |                      t          g d          }|                     |d           d S )N)r9   r9   rY   r&   z<^.*
Locals for foo
a = 1
b = 2
c = 3
Locals for <module>
.*$rR   r+   s     r   test_locals_after_upz"PyLocalsTests.test_locals_after_up   sT     !!8W8W8W " Y Y##B%	 	 	 	 	r   N)
r2   r3   r4   r   rK   r   r-   rI   rJ   r[   r   r   r   rW   rW      s        X_((**=? ?C C? ?C X*PQQX_((**=? ?
 
? ? RQ
 
 
r   rW   )r   r   test.supportr   utilr   r   r   r   r   r   rJ   rK   r   r=   r6   rM   rW   r   r   r   <module>r^      sl   				  , , , , , , E E E E E E E E E E E E  
' 
' 
' '&(( $$&&9; ;& & & & &- & &; ;&P $* * * * *= * * *X! ! ! ! != ! ! !F    M     r   