Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_bdb.cpython-312.pyc

�

&Μg���b�dZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
ddlmZddlmZddlmZGd�d	e�ZGd
�de�ZGd�d
e�ZGd�de�ZdZd�Zd�ZGd�dej4�ZGd�de�ZGd�d�Zd/d�Ze
d��Zeddfd�Z dZ!e!dzZ"d�Z#d�Z$d �Z%d!�Z&Gd"�d#ejN�Z(Gd$�d%e(�Z)Gd&�d'e(�Z*Gd(�d)e(�Z+Gd*�d+e(�Z,Gd,�d-ejN�Z-e.d.k(rej^�yy)0a� Test the bdb module.

    A test defines a list of tuples that may be seen as paired tuples, each
    pair being defined by 'expect_tuple, set_tuple' as follows:

        ([event, [lineno[, co_name[, eargs]]]]), (set_type, [sargs])

    * 'expect_tuple' describes the expected current state of the Bdb instance.
      It may be the empty tuple and no check is done in that case.
    * 'set_tuple' defines the set_*() method to be invoked when the Bdb
      instance reaches this state.

    Example of an 'expect_tuple, set_tuple' pair:

        ('line', 2, 'tfunc_main'), ('step', )

    Definitions of the members of the 'expect_tuple':
        event:
            Name of the trace event. The set methods that do not give back
            control to the tracer [1] do not trigger a tracer event and in
            that case the next 'event' may be 'None' by convention, its value
            is not checked.
            [1] Methods that trigger a trace event are set_step(), set_next(),
            set_return(), set_until() and set_continue().
        lineno:
            Line number. Line numbers are relative to the start of the
            function when tracing a function in the test_bdb module (i.e. this
            module).
        co_name:
            Name of the function being currently traced.
        eargs:
            A tuple:
            * On an 'exception' event the tuple holds a class object, the
              current exception must be an instance of this class.
            * On a 'line' event, the tuple holds a dictionary and a list. The
              dictionary maps each breakpoint number that has been hit on this
              line to its hits count. The list holds the list of breakpoint
              number temporaries that are being deleted.

    Definitions of the members of the 'set_tuple':
        set_type:
            The type of the set method to be invoked. This may
            be the type of one of the Bdb set methods: 'step', 'next',
            'until', 'return', 'continue', 'break', 'quit', or the type of one
            of the set methods added by test_bdb.Bdb: 'ignore', 'enable',
            'disable', 'clear', 'up', 'down'.
        sargs:
            The arguments of the set method if any, packed in a tuple.
�N)�contextmanager)�islice�repeat)�
import_helper)�	os_helper)�
patch_listc��eZdZy)�BdbExceptionN)�__name__�
__module__�__qualname__���*/usr/local/lib/python3.12/test/test_bdb.pyr
r
As�rr
c��eZdZdZy)�BdbErrorz!Error raised by the Bdb instance.N�rrr
�__doc__rrrrrBs��Errc��eZdZdZy)�BdbSyntaxErrorzSyntax error in the test case.NrrrrrrCs��$Hrrc��eZdZdZy)�BdbNotExpectedErrorzUnexpected result.NrrrrrrDs��)Arrc�@�tjj�y�N)�_bdb�
Breakpoint�clearBreakpointsrrr�reset_BreakpointrLs���O�O�$�$�&rc���tjjD�cgc]}|s�|��	}}|syd}|D]�}|sd}d}|jrdnd}|jrdnd}d	|j
|||j|jtjj|j�|jfzz
}|jr|d
|j��z
}|dz
}��Scc}w)N�Fz!BpNum Temp Enb Hits Ignore Where
Tzyes zno  �yeszno z%-5d %s %s %-4d %-6d at %s:%dz
	stop only if �
)rr�
bpbynumber�	temporary�enabled�number�hits�ignore�os�path�basename�file�line�cond)�bp�bp_list�header_added�info�disp�enabs      r�info_breakpointsr5Os���!�_�_�7�7�>�7�r�2�r�7�G�>����L����7�D��L����v�6���
�
�u����0��Y�Y��d�B�G�G�R�Y�Y��W�W�%�%�b�g�g�.����9�9�	:���7�7��R�W�W�6�6�D�������K��%?s
�C �C c�`��eZdZdZ�fd�Z		d�fd�	Z�fd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Z�xZ
S)�Bdbz$Extend Bdb to enhance test coverage.c�4��d|_t�|�	|||�Sr)�	currentbp�super�trace_dispatch)�self�frame�event�arg�	__class__s    �rr;zBdb.trace_dispatchgs�������w�%�e�U�C�8�8rc�n��t|t�rt|tk(rt�}n$t	j
|dd�}|j}t||�}|j}	|	j}|	j}|	j}t�|�5|||||��}
t|
t�rt|
��|
S)N���)r$r.�funcname)�
isinstance�str�__file__�globals�	importlib�
import_module�__dict__�eval�__code__�co_filename�co_firstlineno�co_namer:�	set_breakr)r<�filename�linenor$r.rC�globals_�module�func�code�resr@s           �rrPz
Bdb.set_breakks�����h��$��8�#�"�9��"�0�0��#�2��?��!�?�?����(�+�D��=�=�D��'�'�H��(�(�F��|�|�H��g���&�I�&*�X� �?���c�3���3�-���
rc���t�|�||�\|_|_|j|jd|_|j|jfS�Nr)r:�	get_stack�stack�indexr=)r<�f�tr@s   �rrZz
Bdb.get_stacksI���!&��!2�1�a�!8���
�D�J��Z�Z��
�
�+�A�.��
��z�z�4�:�:�%�%rc�P�|j|�}|xjdz
c_y)z8Increment the ignore count of Breakpoint number 'bpnum'.�N)�get_bpbynumberr(�r<�bpnumr/s   r�
set_ignorezBdb.set_ignore�s��
�
 �
 ��
'��
�	�	�Q��	rc�4�|j|�}d|_y)NT�rar%rbs   r�
set_enablezBdb.set_enable�s��
�
 �
 ��
'����
rc�4�|j|�}d|_y)NFrfrbs   r�set_disablezBdb.set_disable�s��
�
 �
 ��
'����
rc�B�|j||�}|rt|��yr)�clear_breakr)r<�fnamerR�errs    r�	set_clearz
Bdb.set_clear�s&�����u�f�-����3�-��rc��|jstd��|xjdzc_|j|jd|_y)zMove up in the frame stack.zOldest framer`rN)r\rr[r=�r<s r�set_upz
Bdb.set_up�s:���z�z��>�*�*��
�
�a��
��Z�Z��
�
�+�A�.��
rc���|jdzt|j�k(rtd��|xjdz
c_|j|jd|_y)zMove down in the frame stack.r`zNewest framerN)r\�lenr[rr=rps r�set_downzBdb.set_down�sK���:�:��>�S����_�,��>�*�*��
�
�a��
��Z�Z��
�
�+�A�.��
r)FNN)rrr
rr;rPrZrdrgrirnrqrt�
__classcell__�r@s@rr7r7ds=���.�9�AE���(&�
�
�� �
/�/rr7c���eZdZdZd�fd�	Zd�Z�fd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zd�Z�xZS)�Tracerz$A tracer for testing the bdb module.c�~��t�|�|��||_||_|�d|znd|_|j�y)N��skipzDry-run results for %s:)r:�__init__�
expect_set�dry_run�header�	init_test)r<r}r{r~�	test_caser@s     �rr|zTracer.__init__�sE���
���d��#�$������ �,�1�9�<�26�	
�����rc���d|_d|_d|_tt	|j
ddd��|_tt	|j
ddd��|_y)Nr�r`)�
cur_except�
expect_set_no�breakpoint_hits�listrr}�
expected_list�set_listrps rr�zTracer.init_test�sP��������#���!�&����!�T�1�"E�F����V�D�O�O�Q��a�@�A��
rc����|j�|j�|dk(r	t�|�	|||�}|St�|�	|||�S#t$r}||_|jcYd}~Sd}~wwxYw�N�	exception)r�r:r;r
)r<r=r>r?rW�er@s      �rr;zTracer.trace_dispatch�sy���
�?�?�&��/�/�!��K��
+��g�,�U�E�3�?���
�
�7�)�%���<�<��	 �
+�"#����*�*�*��
+�s�A�	A*�
A%�A*�%A*c�n�|j|�sy|jd||�|j�y)N�call)�	stop_here�
process_event�next_set_method)r<r=�
argument_lists   r�	user_callzTracer.user_call�s1���~�~�e�$�����6�5�-�8����rc� �|jd|�|jrI|jr=t�j	d�}|jd�D]}t
d|z��|j�d|_|j�y)Nr-r"z  )	r�r~r�r5�strip�split�print�delete_temporariesr�)r<r=r2r-s    r�	user_linezTracer.user_line�ss�����6�5�)��<�<�D�0�0�#�%�+�+�D�1�D��
�
�4�(���d�T�k�"�)����!�#������rc�J�|jd||�|j�y)N�return)r�r�)r<r=�return_values   r�user_returnzTracer.user_return�s �����8�U�L�9����rc�V�||_|jd|�|j�yr�)�exc_infor�r�)r<r=r�s   r�user_exceptionzTracer.user_exception�s%�� ��
����;��.����rc�0�|jg}||f|_yr)r9r�)r<r?r0s   r�do_clearzTracer.do_clear�s���>�>�"�� '��1��rc�h�|jr&|jdD]}|j|��yy�Nr`)r��clear_bpbynumber)r<�ns  rr�zTracer.delete_temporaries�s3������)�)�!�,���%�%�a�(�-� rc��|xjdz
c_	|jjd�|_|jjd�|_y#t$rtd|jz��wxYw)Nr`rz-expect_set list exhausted, cannot pop item %d)r�r��pop�expect�
IndexErrorrr��	set_tuplerps r�pop_nextzTracer.pop_next�sw�����a���	$��,�,�0�0��3�D�K�
���*�*�1�-����	�	$�%�?��"�"�#�$�
$�	$�s� A�"A:c	��d}|dk(r|jd}|j||�|j�"|js|jg}|gf|_||_|j�|jr|j|j�y|jr0|j|jd|d�|j�|dvr|jd�yt|j�dkD�rT|dk(r�|jd\}}t|j��}|js|j!d|j"z�|j||jdd	�|j|D�	cgc]}	||	��	c}	|jdD�	cgc]}	|j%|	�j&��c}	d
�|jt|�|jdd�y|dk(rRt)|jd|jd�s+|j!d
|j"|jfz�yyyycc}	wcc}	w)Nr�r�rzWrong event type)r�r��r-z(No breakpoints hit at expect_set item %dzBreakpoint numbers do not matchzWrong breakpoint hit countr`zWrong temporary breakpointsz/Wrong exception at expect_set item %d, got '%s')r�rZr9r�r>r�r~�print_staterr��check_equal�check_lno_name�check_expect_max_sizers�sorted�keys�raise_not_expectedr�rar'rD)
r<r>r=�args�tbr0�bps�temporaries�bpnumsr�s
          rr�zTracer.process_event�s=�����K�����q�!�B����u�b�!��>�>�%�d�.B�.B��~�~�&�G�$+�R�=�D� ���
��
�
���<�<����T�[�[�)���;�;����T�[�[��^�U�4F�G����!��&�&��&�&�q�)�
����
��
!����#'�;�;�q�>� ��[�����
�+���+�+��+�+�B��*�*�+�,�� � ���)=�)=�a�)@�5�7�� � �&�!9�&�Q�#�a�&�&�!9�!�1�1�!�4�6�4���(�(��+�0�0�4�6�0�2�� � ���!4�d�6J�6J�1�6M�1�3��+�%�!�$�-�-��"2�D�K�K��N�C��+�+�I��+�+�T�]�]�;�<�=�D�&�#"��":��6s�
I�)"I
c�R�||k(ry|jd||j|fz�y)Nz"%s at expect_set item %d, got '%s')r�r�)r<�expected�result�msgs    rr�zTracer.check_equal-s5���v������ D�!$�d�&8�&8�&� A�!B�	Crc� �t|j�}|dkDr0|j�}|j|jd|d�|dkDr?|j|jd|jj
jd�yy)z+Check the line number and function co_name.r`zWrong line numberr�zWrong function nameN)rsr��lno_abs2relr�r=�f_coderO)r<�srRs   rr�zTracer.check_lno_name3sz���������q�5��%�%�'�F����T�[�[��^�V�5H�I��q�5����T�[�[��^�T�Z�Z�->�->�-F�-F�0E�
G�rc�~�t|j�|kDr%td|j�d|j����y)NzInvalid size of the z expect tuple: )rsr�rr>)r<�sizes  rr�zTracer.check_expect_max_size=s7���t�{�{��d�"� �"&�*�*�d�k�k�";�<�
<�#rc��|j|jjj�}|jj}||jt
�k(r&||jjjz
dzS|Sr�)�canonicr=r�rM�f_linenorFrN�r<rlrRs   rr�zTracer.lno_abs2relBsl�����T�Z�Z�.�.�:�:�;�����$�$������X�.�.��$�*�*�+�+�:�:�:�Q�>�	<�4:�	<rc��|rM|j|�|jt�k(r&|jjj|zdz
S|Sr�)r�rFr=r�rNr�s   r�lno_rel2abszTracer.lno_rel2absHsJ���4�<�<��.�$�,�,�x�2H�H��
�
�!�!�0�0�6�9�A�=�	��	rc�B�|j�}|jjj}d|j||fz}|j
rud}|j
dD]/}|dk7r|dz
}||�d|j
|�j��z
}�1|dz
}d|zdzt|j
d�zd	z}|d|zz
}n.|jd
k(r|d|jdjzz
}|dz
}|jd�t|j�zd
zS)Nz('%s', %d, '%s'�{rz, z: �}�(r`�)r�z), � �,)
r�r=r�rOr>r�rar'rEr�r�ljustr�)r<rRrO�stater�r�s      r�	get_statezTracer.get_stateMs"���!�!�#���*�*�#�#�+�+��!�T�Z�Z���$A�A������C��)�)�!�,���#�:��4�K�C��1�d�&9�&9�!�&<�&A�&A�B�B��-�
�3�J�C���)�d�"�S��)=�)=�a�)@�%A�A�C�G�C��T�C�Z��E�
�Z�Z�;�
&��T�D�M�M�!�,�5�5�5�5�E�
�����{�{�2���T�^�^�!4�4�s�:�:rc��|�$|jdk(rt�t|�td|j|j�fz�y)Nr`z%d: %s)r�r�r�)r<rs  rr�zTracer.print_state_s@����$�"4�"4��"9��G��&�M�
�h�$�,�,�d�n�n�.>�?�?�@rc��|dz
}|dt|j�zz
}|d|j�zz
}t|��)Nr"z  Expected: %s
z  Got:      )rEr�r�r�r<r�s  rr�zTracer.raise_not_expectedesE���t����!�C����$4�4�4���~���� 0�0�0��!�#�&�&rc�4�|jd}t|j�dk(r|jdnd}t|d|z�}|dvr|�y|dvr||j�y|dk(rKd}|r3|j	|jj
j|d�}||j|�y|r|dvs|d	vr�|d
vr2|^}}}|j	||�}||g}|j|�||�n|dvr||�n|d	vr|�d|_|j�|jr|j�n-|jr|j�|jd�|j�yt!d
|jz��)Nrr�r`�set_)�step�continue�quit)�nextr��until)�break�clearr(�enable�disable)�up�down)r�r�)r(r�r�r�z"%s" is an invalid set_tuple)r�rs�getattrr=r�r�rM�extendr>r�r~r�r�r�r�r�r)r<�set_typer��
set_methodrRrl�remains       rr�zTracer.next_set_methodks����>�>�!�$��$'����$7�1�$<�t�~�~�a� �$���T�6�H�#4�5�
��3�3��L��
�+�
+��t�z�z�"��
��
 ��F���)�)�$�*�*�*;�*;�*G�*G�*.�q�'�3���t�z�z�6�*��
�X�"/�/�3;�~�3M��-�-�)-�&��v���)�)�%��8���v������F�#��D�!��<�<��D�!��^�+����D�J��M�M�O��|�|�� � �"��;�;��'�'�)��*�*�1�-�� � �"� �!?�!%���"0�1�
1r)NFNr)rrr
rr|r�r;r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rurvs@rrxrx�so���.��B�=�$����
2�
)�
.�0=�dC�G�<�
<��
;�$A�'�01rrxc�&�eZdZdZdd�Zd�Zdd�Zy)�	TracerRunzAProvide a context for running a Tracer instance with a test case.Nc��||_|j|_t|j||j|j	���|_d|_y)N)r{r~r�)r�r~rxr}�id�tracer�_original_tracer)r<r�r{s   rr|zTracerRun.__init__�sD��"��� �(�(����Y�1�1��%)�\�\�Y�\�\�^�M��� $��rc�`�t�tj�|_|jSr)r�sys�gettracer�r�rps r�	__enter__zTracerRun.__enter__�s ���� #�������{�{�rc�|�t�tj|j�d}|jj
rC|dz
}|d|jjzz
}|t|jj
�z
}|��tt|�rpt|t�rY|jrM|jd}|r|d|zz
}|jrt|�y|jj!|�nJd��|r4|jrt|�y|jj!|�yy)Nr z+All paired tuples have not been processed, zthe last one was number %d
rr"Tz#BdbNotExpectedError with empty args)rr��settracer�r�r�r��repr�
issubclassrrD�
BaseExceptionr�r~r�r��fail)r<�type_�value�	traceback�	not_empty�err_msgs      r�__exit__zTracerRun.__exit__�s�������T�*�*�+��	��;�;����F�F�I��8��+�+�3�3�4�
5�I���d�k�k�2�2�3�3�I����,?��!G��%��/�E�J�J��*�*�Q�-����t�i�/�/�G��<�<��'�N���N�N�'�'��0�C�C�C�u���|�|��i� ����#�#�I�.�	rr)NNN)rrr
rr|r�rrrrr�r��s��K�%��/rr�c�f�d�}ddg}|j|�t�}d|_d�|_t	|td�t
|���|_t|�5t||��5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)	a{Run a test and print the dry-run results.

    'modules':  A dictionary mapping module names to their source code as a
                string. The dictionary MUST include one module named
                'test_module' with a main() function.
    'set_list': A list of set_type tuples to be run on the module.

    For example, running the following script outputs the following results:

    *****************************   SCRIPT   ********************************

    from test.test_bdb import run_test, break_in_func

    code = '''
        def func():
            lno = 3

        def main():
            func()
            lno = 7
    '''

    set_list = [
                break_in_func('func', 'test_module.py'),
                ('continue', ),
                ('step', ),
                ('step', ),
                ('step', ),
                ('quit', ),
            ]

    modules = { 'test_module': code }
    run_test(modules, set_list)

    ****************************   results   ********************************

    1: ('line', 2, 'tfunc_import'),    ('next',),
    2: ('line', 3, 'tfunc_import'),    ('step',),
    3: ('call', 5, 'main'),            ('break', ('test_module.py', None, False, None, 'func')),
    4: ('None', 5, 'main'),            ('continue',),
    5: ('line', 3, 'func', ({1: 1}, [])), ('step',),
      BpNum Temp Enb Hits Ignore Where
      1     no   yes 1    0      at test_module.py:2
    6: ('return', 3, 'func'),          ('step',),
    7: ('line', 7, 'main'),            ('step',),
    8: ('return', 7, 'main'),          ('quit',),

    *************************************************************************

    c3�jK�		t|�}t|�}|��|���#t$rYywxYw�wr)r��
StopIteration)�a�b�x�ys    r�genzrun_test.<locals>.gen�sB����	����G����G������	��
�	��	�s�3� $�	0�3�0�3�r��r�Tc��yrrrrr�<lambda>zrun_test.<locals>.<lambda>s��trrrzN)r��BaseTestCaser~r�r�r�iterr}�create_modulesr��runcall�tfunc_import)�modulesr�r{r�sl�testr�s       r�run_testr�s���f��j�	!�B��I�I�h���>�D��D�L��D�G��3�v�b�z�4��8�4�5�D�O�	��	 �
�t�$�
'�6��N�N�<�(�(�
!�	 �
'�
'��
!�	 �s$�&B'�4B�
B'�B$	� B'�'B0c	#�K�tj�5tjj	tj��	|D]Z}|dz}t|dd��5}|jtj||��ddd�tj|��\tj�d��|D]}tj |��tjj#�	ddd�y#1swY�|xYw#|D]}tj |��tjj#�wxYw#1swYyxYw�w)N�.py�wzutf-8)�encoding)r�temp_cwdr�r*�appendr)�getcwd�open�write�textwrap�dedent�	linecache�
checkcacherH�invalidate_cachesr�forgetr�)r�mrlr]s    rrrs�����	�	�	�	�������	�	��$�	����E�	���%��w�7�1��G�G�H�O�O�G�A�J�7�8�8��$�$�U�+�	�

�'�'�)�����$�$�Q�'���H�H�L�L�N�
�	�
8�7�����$�$�Q�'���H�H�L�L�N��
�	�sL�E�2E�
D�"(D�
7D�:E�<	E�D�
D�<E
�
E�E�EFc��d|d|||ffS)Nr�r)rCrlr$r.s    r�
break_in_funcr''s���U�D�)�T�8�<�<�<r�test_module_for_bdbrc�,�ddl}|j�yrY)r(�main)r(s rrr,s������rc�<�d}t�t�d}d}d}y)Nr����)�tfunc_first�tfunc_second��lnos r�
tfunc_mainr30s ��
�C��M��N�
�C�
�C�
�Crc��d}d}d}y)Nr�r��rr1s rr/r/8s��
�C�
�C�
�Crc��d}y)Nr�rr1s rr0r0=s��
�Crc��eZdZdZeZdd�Zy)r
zBase class for all tests.Nc�&�|j|�d�r)�failureExceptionr�s  rr�zBaseTestCase.failEs���#�#�C�(�d�2rr)rrr
rr~r�rrrr
r
@s��#��G�3rr
c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zeej"�d
��Zd�Zd�Zd�Zy)�
StateTestCasez;Test the step, next, return, until and quit 'set_' methods.c��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)�r-r�r3r
�r-r�r3r
�r�r`r/r
�r-r�r/�r��r}r�rr3�r<r�s  r�	test_stepzStateTestCase.test_stepM�,��
����t�_���N�N�:�&��_�_���4�=c��dD]j}|j|��5ddddddtdffd	d
dddd
d
igff|fddg|_t|�5}|j	t
�ddd�ddd��ly#1swY�xYw#1swY��xYw)N)r�r��r�r=r
r>r?r�r�)�Noner`r/�r�r-r/r`�r-r5r/rA)�subTestrFr}r�rr3)r<r�r�s   r� test_step_next_on_last_statementz.StateTestCase.test_step_next_on_last_statementWs���(�H����x��0�-�Z�-�Z�.�g��RS�}�=U�.�^��Q�
��1��r�{�;�h�\�.�Z�
#����t�_���N�N�:�.�%�1�0�)�%�_��1�0�s#�0A=�A1�A=�1A:�6A=�=B	c��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)
r=r
r>r	�r-r5r3r
)r�r`r0r
)r-r�r0rArBrCs  r�	test_nextzStateTestCase.test_nexte�,��
����t�_���N�N�:�&��_�_�rFc���d}t|i}t|�5gd�|_t|�5}|j	t
�ddd�ddd�y#1swY�xYw#1swYyxYw)N�9
            def main():
                lno = 3
        )�r-r�rr	�r-r�rrA)�TEST_MODULErr}r�rr�r<rVrr�s    r�test_next_over_importz#StateTestCase.test_next_over_importps[���� ��'��
�G�
$��D�O��4��F����|�,�!�%�
$�
!���%�
$�s"�A�A�A�A	�A�A'c��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)r=r
r>r
r?r	r@rArBrCs  r�test_next_on_plain_statementz*StateTestCase.test_next_on_plain_statement~s,��
����t�_���N�N�:�&��_�_�rFc��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)
r=r
r>r
r?�r��rIr�r3r	rOrArBrCs  r�test_next_in_caller_framez'StateTestCase.test_next_in_caller_frame�s,��
����t�_���N�N�:�&��_�_�rFc��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)r=r
r>r
r?r
r@�r��r�r5r/r
rOrArBrCs  r�test_returnzStateTestCase.test_return�s,��
����t�_���N�N�:�&��_�_�rFc��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)
r=r
r>r
r?r\r]r`)r�r.r3rArBrCs  r�test_return_in_caller_framez)StateTestCase.test_return_in_caller_frame�rQrFc��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)
r=r
r>r
r?r
r@)r�)r5rKrArBrCs  r�
test_untilzStateTestCase.test_until�rQrFc	��dtd�dddddddigffdd	d
g|_t|�5}|jt�ddd�y#1swYyxYw)Nr=r/)rIr�r3rJr-r�r`)r�)i'rarA)r'r}r�rr3rCs  r�test_until_with_too_large_countz-StateTestCase.test_until_with_too_large_count�sW��%�]�=�5Q�%�^�
�Q�
��1��r�{�3�5H�(�Z�	
����t�_���N�N�:�&��_�_�s�A�Ac��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)
r=r
r>r
r?r\r])r�)r-)r-r-r3rArBrCs  r�test_until_in_caller_framez(StateTestCase.test_until_in_caller_frame�rQrFc�<�d�tjD�tjddd}t|i}t|�5gd�|_dddtf}t||��5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc3�VK�|]!}|jjd�r|���#y�w)�_frozen_importlibN)r�
startswith)�.0�items  r�	<genexpr>z*StateTestCase.test_skip.<locals>.<genexpr>�s+����
�%�����)�)�*=�>�
�%�s�')rS)rTr
rUrAz
importlib*�	zipimportzencodings.*rz)r��	meta_pathrVrr}r�rr)r<rVrr{r�s     r�	test_skipzStateTestCase.test_skip�s���
��
�
�
��
�
�a���� ��'��
�G�
$��D�O�!�+�}�k�J�D��4�d�+�v����|�,�,�
%�
$�,�+��
%�
$�s#�!B�B�5B�B	�B�Bc�`�tdg��}|j|jd�d�y)Nz	anything*rzF)r7�assertIs�is_skipped_module)r<�bdbs  r�test_skip_with_no_name_modulez+StateTestCase.test_skip_with_no_name_module�s)����}�%���
�
�c�+�+�D�1�5�9rc��ddg|_t|�5}|jt|jt
�ddd�y#1swYyxYw)Nr=)r�)r}r��assertRaisesrrr3rCs  r�	test_downzStateTestCase.test_down�s=��
&�z�
����t�_�����h����
�C��_�_���&A�A
c��gd�|_t|�5}|jt�ddd�y#1swYyxYw)N)r=r
r>r
r?r\r]rArBrCs  r�test_upzStateTestCase.test_up�rErFN)rrr
rrDrMrPrXrZr^rbrdrfrhrjrr�rsrtryr|rrrrr;r;Jsi��E�'�/�	'�-�
'�'�
'�	'�	'�'�	'���
�
��-��-�2:�D�'rr;c�R�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�BreakpointTestCasezTest the breakpoint set method.c��ddg|_t|�5}|jt|jt
�ddd�y#1swYyxYw)NrT)r�)z/non/existent/module.pyr`)r}r�r{rrrrCs  r�test_bp_on_non_existent_modulez1BreakpointTestCase.test_bp_on_non_existent_modules<��'�)R�
����t�_�����h�����E��_�_�r}c��d}t|i}t|�5ddtdffg|_t	|�5}|jt|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)NrSrTr�r5)	rVr�TEST_MODULE_FNAMEr}r�r{rrrrWs    r�test_bp_after_last_statementz/BreakpointTestCase.test_bp_after_last_statementsu���� ��'��
�G�
$�+�g�8I�1�7M�-N��D�O��4��F��!�!�(�F�N�N�L�I�!�	%�
$�!���	%�
$�s"�A6�&A*�A6�*A3	�/A6�6A?c�D�d}t|i}t|�5dtdtd�dtdtd�dddddd	d	id	gffddddd
d	id
gffdg
|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)N��
            def func():
                lno = 3

            def main():
                for i in range(2):
                    func()
        rTrUT�rIr�rrJr-r�r`r�rA�rVrr'r�r}r�rrrWs    r�test_temporary_bpz$BreakpointTestCase.test_temporary_bps����� ��'��
�G�
$�+�!�&�*;�T�B�+�!�&�*;�T�B�+�>���F�a��U�Q�C�L�1�>���F�a��U�Q�C�L�1�:��D�O��4��F����|�,�!�%�
$�!���%�
$�s$�A
B�#B
�9B�
B	�B�Bc�d�d}t|i}t|�5dtdt�dtdtd�dddddd	dd
d
igffddd
dddd	ddd
idgffddddd	dd
digffdg|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)N��
            def func():
                lno = 3

            def main():
                for i in range(3):
                    func()
        rTrUr�T)r��r�rJr-r�r`)r�r��rIr�rU�r��r`r��r�r�rAr�rWs    r�test_disabled_temporary_bpz-BreakpointTestCase.test_disabled_temporary_bp/s����� ��'��
�G�
$�+�!�&�*;�<�+�!�&�*;�T�B�+�3E�+�>���F�a��U�B�K�0�3D�#�3E�#�>���F�a��U�Q�C�L�1�3D�#�>���F�a��U�B�K�0�:�
�D�O��4��F����|�,�!�%�
$�!���%�
$�s$�AB&�3B�	B&�B#	�B&�&B/c
��d}t|i}t|�5dtdtdd�dddd	dd
d	igffdg|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz�
            def func(a):
                lno = 3

            def main():
                for i in range(3):
                    func(i)
        rTrUFza == 2r�rJr-r�r`rAr�rWs    r�test_bp_conditionz$BreakpointTestCase.test_bp_conditionKs����� ��'��
�G�
$�+�!�&�*;�U�H�M�+�>���F�a��U�B�K�0�:�	�D�O��4��F����|�,�!�%�
$�!���%�
$��#�1A:�A.�A:�.A7	�3A:�:Bc
��d}t|i}t|�5dtdtdd�dddd	dd
d
igffdg|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)Nzk
            def func(a):
                lno = 3

            def main():
                func(0)
        rTrUFz1 / 0r�rJr-r�r`rAr�rWs    r�)test_bp_exception_on_condition_evaluationz<BreakpointTestCase.test_bp_exception_on_condition_evaluation_s����� ��'��
�G�
$�+�!�&�*;�U�G�L�+�>���F�a��U�B�K�0�:�	�D�O��4��F����|�,�!�%�
$�!���%�
$�r�c��d}t|i}t|�5dtdt�dddddddd	d
igffdg|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�rTrUr��r(r�rJr-r�r`r�rAr�rWs    r�test_bp_ignore_countz'BreakpointTestCase.test_bp_ignore_countrs����� ��'��
�G�
$�+�!�&�*;�<�+�2C�+�.���F�a��U�B�K�0�*��D�O��4��F����|�,�!�%�
$�!���%�
$�r�c�\�d}t|i}t|�5dtdt�dtdt�dddddddd	dd
digffdd
ddd	dd
d
igffddd	ddd
igffdg|_t|�5}|j
t�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�rTrUr�r�r�rJr-r�r�r`r�r�rAr�rWs    r� test_ignore_count_on_disabled_bpz3BreakpointTestCase.test_ignore_count_on_disabled_bp�s����� ��'��
�G�
$�+�!�&�*;�<�+�!�&�*;�<�+�2C�+�2D�+�.���F�a��U�B�K�0�2C�#�.���F�a��U�B�K�0�.���F�a��U�B�K�0�*��D�O��4��F����|�,�!�%�
$�!���%�
$�s$�AB"�/B�B"�B	�B"�"B+c�`�d}t|i}t|�5ddtdffddtdffddtdffddddd	d
d
igffdddd	dd
igffdtdffddddd	dd
igffdg|_t	|�5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz�
            def func():
                lno = 3
                lno = 4

            def main():
                for i in range(3):
                    func()
        rTr�r�r�r5rJr-rUr`r�)rIr5rUr�rA)rVrr�r}r�rrrWs    r�test_clear_two_bp_on_same_linez1BreakpointTestCase.test_clear_two_bp_on_same_line�s����� ��'��
�G�
$�+�7�=N�PQ�<R�2S�+�7�=N�PQ�<R�2S�+�7�=N�PQ�<R�2S�+�.���F�a��U�B�K�0�.���F�a��U�B�K�0�7�=N�PQ�<R�2S�#�.���F�a��U�B�K�0�*�	�D�O��4��F����|�,�!�%�
$�!���%�
$�s$�AB$�1B�B$�B!	�B$�$B-c��ddtdffg|_t|�5}|jt|j
t�ddd�y#1swYyxYw)NrTr�r`)rFr}r�r{rrrrCs  r�test_clear_at_no_bpz&BreakpointTestCase.test_clear_at_no_bp�sD��'�'�H�a�=�)A�
����t�_�����h�����E��_�_�s�&A�Ac��t�t�}|jt�}|j	td�|j|j
�|dgi�t�}|j	td�|j	td�|j	td�|j|j
�|dgi�|j|j
�|gd�i�|jtd�|j|j
�|dgi�|j|j
�|gd�i�t�}|j|j
�|dgi�|j|j
�|gd�i�|j|j
�|gd�i�|jtd�|j|j
�|dgi�|j|j
�|ddgi�|j|j
�|gd�i�t�}|j	td�|j|j
�|dgi�|j|j
�|ddgi�|j|j
�|gd�i�|j|j
�|gd�i�t�t�}|j	td	�|j|j
�|dgi�|j|j
�|ddgi�|j|j
�|gd�i�|j|j
�|gd�i�|j|j
�|d	gi�y)
Nr`r�r�r5)r`r�r�r5)r�r�r5r,)r�r5r,r-)rr7r�rFrP�assertEqual�get_all_breaksrk)r<�db1rl�db2�db3�db4�db5s       r�(test_load_bps_from_previous_Bdb_instancez;BreakpointTestCase.test_load_bps_from_previous_Bdb_instance�s�����e�����H�%���
�
�h��"�����+�+�-���s�|�<��e���
�
�h��"��
�
�h��"��
�
�h��"�����+�+�-���s�|�<�����+�+�-��|�/D�E�����!�$�����+�+�-���s�|�<�����+�+�-��y�/A�B��e������+�+�-���s�|�<�����+�+�-��y�/A�B�����+�+�-��y�/A�B�����!�$�����+�+�-���s�|�<�����+�+�-���1�v��?�����+�+�-��y�/A�B��e���
�
�h��"�����+�+�-���s�|�<�����+�+�-���1�v��?�����+�+�-��y�/A�B�����+�+�-��y�/A�B����e���
�
�h��"�����+�+�-���s�|�<�����+�+�-���1�v��?�����+�+�-��y�/A�B�����+�+�-��y�/A�B�����+�+�-���s�|�<rN)rrr
rr�r�r�r�r�r�r�r�r�r�r�rrrr�r�s?��)�F�J�-�.-�8-�(-�&-�*-�6-�2F�(=rr�c��eZdZdZd�Zd�Zy)�RunTestCasez Test run, runeval and set_trace.c��d}gd�|_t|�5}|jtt	j
|�dd��ddd�y#1swYyxYw)Nz
            lno = 2
        ))r-r��<module>r
)r�r�r�rAz<string>�exec)r}r��run�compilerr )r<rVr�s   r�
test_run_stepzRunTestCase.test_run_step�sE����
����t�_���J�J�w�x���t�4�j�&�I�J��_�_�s�0A�Ac��d}t|i}t|�5gd�|_ddl}t	|�5}|jdt
�t��ddd�ddd�y#1swY�xYw#1swYyxYw)NrS)
)r-r`r�r
)r�r�r*r
)r-r�r*r
)r�r�r*r
)r�r`r�rArztest_module_for_bdb.main())rVrr}r(r��runevalrG�locals)r<rVrr(r�s     r�test_runeval_stepzRunTestCase.test_runeval_step�sg���� ��'��
�G�
$��D�O�
'��4��F����;�W�Y���Q�!�%�
$�!���%�
$�s"�A0�$A$�A0�$A-	�)A0�0A9N)rrr
rr�r�rrrr�r��s��*�
K�Rrr�c�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�IssuesTestCasezTest fixed bdb issues.c��d}d}t|d|i}t|�5dtdd�ddd	d
dddigffdd
dddg
|_t	|�5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz�
            from test_module_for_bdb_2 import func
            def main():
                func()
                lno = 5
        z9
            def func():
                lno = 3
        �test_module_for_bdb_2rTrUztest_module_for_bdb_2.pyr�rJr-r�r`r
)r�r�rU)r-r,r*rA)rVrr'r}r�rr)r<�code_1�code_2rr�s     r�+test_step_at_return_with_no_trace_in_callerz:IssuesTestCase.test_step_at_return_with_no_trace_in_callers�������

��#�V�
���G�
$�+�!�&�*D�E�+�.���F�a��U�B�K�0�*�%�*�#�*�
�D�O��4��F����|�,�!�%�
$�!���%�
$�s#�/A<�	A0�A<�0A9	�5A<�<Bc��d}t|i}dD]�}|j|��5t|�5dtdt�dddd	dd
d
igff|fg|_|dk(r(|j
j
dd
dtfdddg�n|j
j
ddg�t|�5}|jt�ddd�ddd�ddd���y#1swY�xYw#1swY� xYw#1swY��xYw)Nz�
            def test_gen():
                yield 0
                lno = 4
                return 123

            def main():
                it = test_gen()
                next(it)
                next(it)
                lno = 11
        )r�r�r�rHrT�test_genr�rJr-r�r`r�r��
r*r
)r�r�r*rA�r-r5r�)rVrLrr'r�r}r�rr�rr)r<rVrr�r�s     r�#test_next_until_return_in_generatorz2IssuesTestCase.test_next_until_return_in_generator0s���
�� ��'��3�H����x��0�#�G�,�3�)�*�6G�H�3�n���J�!�A����<�x�l�	'�D�O� �8�+����.�.�)�2�v�}�E�y�3�z������.�.�4�j�B��#�4��F����|�4�)�%-�1�0�4�()���%-�,��1�0�s;�C1�A:C%�(C	�>C%�C1�C"
�C%�%C.�*C1�1C:	c�,�d}t|i}t|�5dtdt�dddddddigffd	d
d	dd	dd	d
ddtfdddg|_t
|�5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz�
            def test_gen():
                yield 0
                lno = 4
                yield 1
                return 123

            def main():
                for i in test_gen():
                    lno = 10
                lno = 11
        rTr�r�rJr-r�r`r	r�)r-r,r�)r-r-r�r��	r*r
)r-�r*rA�	rVrr'r�rr}r�rrrWs    r�'test_next_command_in_generator_for_loopz6IssuesTestCase.test_next_command_in_generator_for_loopYs����� ��'��
�G�
$�+�!�*�.?�@�+����J�!�A����4��'��'��'���a���7��$���D�O��4��F����|�,�!�%�
$�!���%�
$�s$�AB
�A>�-B
�>B	�B
�
Bc
�$�d}t|i}t|�5dtdt�dddddddigffd	d
d	ddd
tfdddg|_t
|�5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)N�4
            def test_subgen():
                yield 0
                return 123

            def test_gen():
                x = yield from test_subgen()
                return 456

            def main():
                for i in test_gen():
                    lno = 12
                lno = 13
        rTr�r�rJr-r.r`r	)r-�r�r�r�r*r
�r-�
r*rAr�rWs    r�/test_next_command_in_generator_with_subiteratorz>IssuesTestCase.test_next_command_in_generator_with_subiteratorxs���
�� ��'��
�G�
$�+�!�*�.?�@�+�.���J�!�A����4�*�'�*��b�&�-�8�*�$�*�	�D�O��4��F����|�,�!�%�
$�!���%�
$�s#�=B�A:�)B�:B	�?B�Bc
�4�d}t|i}t|�5dtdt�dddddddigffd	d
ddtfd	d
d
dtfdddg|_t
|�5}|jt�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�rT�test_subgenr�rJr-r�r`r`r�r.r�r�r*r
r�rAr�rWs    r�1test_return_command_in_generator_with_subiteratorz@IssuesTestCase.test_return_command_in_generator_with_subiterator�s���
�� ��'��
�G�
$�+�!�-�1B�C�+�n���M�Q�q�E�2�;�7�l��a��]�;�l��b�&�-�8�j�$�j�	�D�O��4��F����|�,�!�%�
$�!���%�
$�s$�AB�B�1B�B	�B�BN)	rrr
rr�r�r�r�r�rrrr�r�s�� �-�<'5�R-�>-�>-rr�c��eZdZd�Zy)�TestRegressionsc�~�|jdt�jtj�df��y)NzWarning: lineno is None)�assertInr7�format_stack_entryr��	_getframerps r�!test_format_stack_entry_no_linenoz1TestRegressions.test_format_stack_entry_no_lineno�s-���
�
�/��e�.�.��
�
���/F�G�	IrN)rrr
r�rrrr�r��s��Irr��__main__r)0rrxrr�r)�unittestrrHr!�
contextlibr�	itertoolsrr�test.supportrrr�	Exceptionr
rrrr~rr5r7rxr�rrrFr'rVr�rr3r/r0�TestCaser
r;r�r�r�r�rr*rrr�<module>r�sZ��0�d�
�	�����%�$�&�"�#�$�9�#�E�|�E�H�\�H�A�,�A���'��*>/�$�(�(�>/�@w1�S�w1�r-/�-/�^H)�T���� #+�e�$�=�$���%�'�����
�3�8�$�$�3�u'�L�u'�ni=��i=�X R�,� R�De-�\�e-�PI�h�'�'�I��z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists