HEX
Server: Apache
System: Linux opal14.opalstack.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: curbgloabal_opal (1234)
PHP: 8.1.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib64/python3.6/test/__pycache__/test_traceback.cpython-36.pyc
3


 \��@s�dZddlmZddlmZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
mZmZmZddlmZddlZddlZedd	d
g�Zeddd
dg�Zeddddg�ZGdd�dej�ZGdd�dej�ZdZdZejdeje�eje�f�ZGdd�d�Z Gdd�de ej�Z!Gdd�de ej�Z"Gd d!�d!ej�Z#Gd"d#�d#ej�Z$Gd$d%�d%ej�Z%Gd&d'�d'ej�Z&Gd(d)�d)ej�Z'Gd*d+�d+ej�Z(e)d,k�r�ej*�dS)-zTest cases for traceback module�)�
namedtuple)�StringION)�support)�TESTFN�Error�captured_output�unlink�cpython_only)�assert_python_ok�code�co_filename�co_name�frame�f_code�	f_globals�f_locals�tb�tb_frame�	tb_lineno�tb_nextc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zejdd��Zdd�ZdS)�TracebackCasescCs@y
|�Wn(|k
r2}ztj||�Sd}~Xn
Xtd��dS)Nzcall did not raise exception)�	traceback�format_exception_only�
ValueError)�self�func�exc�value�r�&/usr/lib64/python3.6/test_traceback.py�get_exception_formats

z#TracebackCases.get_exception_formatcCstddd�dS)Nzdef fact(x):
	return x!
�?�exec)�compile)rrrr�syntax_error_with_caret"sz&TracebackCases.syntax_error_with_caretcCstddd�dS)Nz1 +
r!r")r#)rrrr�syntax_error_with_caret_2%sz(TracebackCases.syntax_error_with_caret_2cCstddd�dS)Nz def spam():
  print(1)
 print(2)r!r")r#)rrrr�syntax_error_bad_indentation(sz+TracebackCases.syntax_error_bad_indentationcCstddd�dS)NuPython = "Ṕýţĥòñ" +r!r")r#)rrrr�!syntax_error_with_caret_non_ascii+sz0TracebackCases.syntax_error_with_caret_non_asciicCstddd�dS)Nz	 print(2)r!r")r#)rrrr�syntax_error_bad_indentation2.sz,TracebackCases.syntax_error_bad_indentation2cCs|j|jt�}|jt|�d�|j|dj�dk�|jd|d�|j|djd�|djd��|j|j	t�}|jd|d�|j|dj
d�d�|j|djd�|djd��|j|jt�}|jd|d�|j|dj
d�d�|j|djd�|djd��dS)	N��z	return x!�^��!�
�+)r r$�SyntaxError�assertEqual�len�
assertTrue�strip�assertIn�findr%�countr')r�errrrr�
test_caret1s   zTracebackCases.test_caretcCs>tdd�}tjt|�}|jt|�d�|j|dj�d�dS)N�error�x.py��
bad syntax�r*)r;r<Nr=)r0rrr1r2r4)rrr8rrr�test_nocaretEs
zTracebackCases.test_nocaretcCs�|j|jt�}|jt|�d�|j|dj�d�|jd|d�|j|djd�|djd��|j|jt�}|jt|�d�|j|dj�d�|jd|d�|j|djd�|djd��dS)Nr)r*zprint(2)r+r,�)�p)	r r&�IndentationErrorr1r2r4r5r6r()rr8rrr�test_bad_indentationKs z#TracebackCases.test_bad_indentationcCs&t�}tj|j|�}|j|dg�dS)NzKeyboardInterrupt
)�KeyboardInterruptrr�	__class__r1)r�eZlstrrr�test_base_exceptionZsz"TracebackCases.test_base_exceptioncCsxGdd�dt�}tj||��}|jt|�d�d|j}|jd
krJ|j}ndj|j|jg�}|j|dd	||f�dS)Nc@seZdZdd�ZdS)z?TracebackCases.test_format_exception_only_bad__str__.<locals>.XcSsdddS)Nr*rr)rrrr�__str__bszGTracebackCases.test_format_exception_only_bad__str__.<locals>.X.__str__N)�__name__�
__module__�__qualname__rHrrrr�XasrLr*z<unprintable %s object>�__main__�builtins�.rz%s: %s
)rMrN)	�	Exceptionrrr1r2rIrJrK�join)rrLr8Z	str_valueZstr_namerrr�%test_format_exception_only_bad__str__`s

z4TracebackCases.test_format_exception_only_bad__str__c	s�ddl}ddl�ddl�ddl}�j�jddg�j�jd�}|j�\}}t	|d�j
�d�����fdd�}|dd	dd
�xhdD]`}|dkr�d	}n|d
kr�d}nd}|dj|�||d�|dj|�||d�|dj|�||d�q�W|dddd�dS)Nrz-cz&import sys; print(sys.stdout.encoding))�stdout�stderr�asciicszdttd|d��}|jdj||��WdQRX�j�jtg�j�jd�}|j�\}}|j	��j
�}Wdtt�X|j�d�}|j	��}	dj|	�}
dj|	�}�j
d||d	d
j|d	|���j|dj|
�dj|d|
���j|d
|kdj|d
|��dS)N�w)�encodingz}{0}if 1:
                        import traceback;
                        raise RuntimeError('{1}')
                        )rSrT�backslashreplacezraise RuntimeError('{0}')zRuntimeError: {0}zline %sr*z)Invalid line number: {0!r} instead of {1}r,z.Invalid traceback line: {0!r} instead of {1!r}r>z-Invalid error message: {0!r} instead of {1!r})�openr�write�format�Popen�
executable�PIPE�STDOUT�communicate�decode�
splitlinesr�encoder5r3�endswith)Z
firstlines�message�charset�lineno�output�processrSrTZencoded_messageZ
message_asciiZerr_lineZerr_msg)�output_encodingr�
subprocess�sysrr�do_test}s.



z1TracebackCases.test_encoded_file.<locals>.do_test��foor>�
iso-8859-1�utf-8�GBKu丂儀uhé hoz# coding: {0}
r)z#!shebang
# coding: {0}
�z 	
# coding: {0}
zx=0
# coding: GBK
)rUrprqrr)�tempfilerlrk�osr\r]r^r_r`�strrbr[)	rrtrurirSrTrmrf�textr)rjrrkrlr�test_encoded_filems, 

#





z TracebackCases.test_encoded_filecCs8tjd�}td|�\}}}dddg}|j|j�|�dS)Na%
            import sys
            import traceback

            class PrintExceptionAtExit(object):
                def __init__(self):
                    try:
                        x = 1 / 0
                    except Exception:
                        self.exc_info = sys.exc_info()
                        # self.exc_info[1] (traceback) contains frames:
                        # explicitly clear the reference to self in the current
                        # frame to break a reference cycle
                        self = None

                def __del__(self):
                    traceback.print_exception(*self.exc_info)

            # Keep a reference in the module namespace to call the destructor
            # when the module is unloaded
            obj = PrintExceptionAtExit()
        z-cs"Traceback (most recent call last):s&  File "<string>", line 8, in __init__s#ZeroDivisionError: division by zero)�textwrap�dedentr
r1rb)rrZrcrSrT�expectedrrr�test_print_traceback_at_exit�sz+TracebackCases.test_print_traceback_at_exitcCs0t�}tjttd�d|d�|j|j�d�dS)NZ	projector)�filezException: projector
)rr�print_exceptionrPr1�getvalue)rrhrrr�test_print_exception�sz#TracebackCases.test_print_exceptionN)rIrJrKr r$r%r&r'r(r9r?rCrGrRrxrZrequires_type_collectingr|r�rrrrrs
D rc@sreZdZdd�Zeddd��Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zedd��Zdd�Z
edd��ZdS)�TracebackFormatTestscCstd��dS)NZblah)�KeyError)rrrr�some_exception�sz#TracebackFormatTests.some_exceptionNcCs�ddlm}y|j�Wn�tk
r�tj�\}}}|dk	rH||j�ddjtj	|��}t
�}|||�|j�}td��}	tj
|�WdQRXt
�}
tj
||
d�td��}tj�WdQRXtj�}t
�}
tj|
d�Yn
Xtd��|j||�|j|	j�|
j��|j|j�|
j��|j||
j��|j�}|jt|�d�|d}|d
d�\}}|j|jd
��|j|jd��|j|jd��dS)Nr)�traceback_printz#Traceback (most recent call last):
rnrT)r}z&unable to create test traceback stringrsr,�	Tracebackz  Filez	    raise���)�	_testcapir�r�r�rl�exc_inforrQr�	format_tbrrr�print_tb�	print_exc�
format_excrr1rbr2r3�
startswith)rZcleanup_funcr��type_rrZ
traceback_fmtZfile_Z
python_fmtZtbstderrZtbfileZ	excstderrZexcfmtZexcfileZtb_linesZbanner�locationZsource_linerrr�check_traceback_format�sB



z+TracebackFormatTests.check_traceback_formatcCs|j�dS)N)r�)rrrr�test_traceback_formatsz*TracebackFormatTests.test_traceback_formatcCsdd�}|j|�dS)NcSs|jj�dS)N)r�clear)rrrr�
cleanup_tbszRTracebackFormatTests.test_traceback_format_with_cleared_frames.<locals>.cleanup_tb)r�)rr�rrr�)test_traceback_format_with_cleared_framessz>TracebackFormatTests.test_traceback_format_with_cleared_framescCs|td��}tjtjd��WdQRXt�}tjtjd�|d�|j|j�|j��tjtjd��}|j|j�dj	|��dS)NrTr*)r}rn)
rr�print_stackrl�	_getframerr1r�format_stackrQ)rZststderrZstfileZstfmtrrr�test_stack_formats
z&TracebackFormatTests.test_stack_formatcCsjdd�}td��}|�WdQRX|jj}|j|j�j�dd�dt|dfddt|d	fd
g�dS)NcSstj�dS)N)rr�rrrr�prn"sz2TracebackFormatTests.test_print_stack.<locals>.prnrTr)z)  File "%s", line %d, in test_print_stackr>z	    prn()z  File "%s", line %d, in prnr*z    traceback.print_stack()���)r�__code__�co_firstlinenor1rrb�__file__)rr�rTrgrrr�test_print_stack!s
z%TracebackFormatTests.test_print_stackczs�d|_�fdd��td��D}y
��Wn(tk
rN}z|�WYdd}~XnX|jd�WdQRX�jj}dt�d|d�dt�d|d	�d
t�d|d	�d
t�d|d	�d�}|j�}|j�j�}|j	|dd&�|dd'��|j
|d(|d)�|j|d*|d+�tj
�}|jttjd
|d,�j��t|d|��d-�fdd�	�td��F}	y
��Wn*tk
�r�}z|�WYdd}~XnX|jd�WdQRX�jj}
dt�d|
d�dt�d|
d�dt�d|
d�dt�d|
d�d�}dt�d|
d�d�}||j�}|	j�j�}|j	||�d.��fdd�	�td��F}
y
��Wn*tk
�rt}z|�WYdd}~XnX|jd�WdQRX�jj}dt�d|d�dt�d|d�dt�d|d�dt�d|d�dt�d|d�d�}||j�}|
j�j�}|j	||�td��J}	y�tj�Wn*tk
�rN}z|�WYdd}~XnX|jd �WdQRXdt�d|
d�dt�d|
d�dt�d|
d�dt�d|
d�d�}dt�d|
d!�d"�}||j�}|	j�j�}|j	||�td��N}	y�tjd	�Wn*tk
�r*}z|�WYdd}~XnX|jd �WdQRXdt�d|
d�dt�d|
d�dt�d|
d�d#t�d|
d�d�}dt�d|
d$�d%�}||j�}|	j�j�}|j	||�dS)/Ncs
��dS)Nrr)�frrr�6szBTracebackFormatTests._check_recursive_traceback_display.<locals>.frTzno recursion occurredz+Traceback (most recent call last):
  File "z", line rsz8, in _check_recursive_traceback_display
    f()
  File "r*z, in f
    f()
  File "zn, in f
    f()
  \[Previous line repeated (\d+) more times\]
RecursionError: maximum recursion depth exceeded
r,z\d+�<�
cs|r�|d�St�dS)Nr*)r)r7)�grrr�cszBTracebackFormatTests._check_recursive_traceback_display.<locals>.gzno value error was raisedz  File "z%, in g
    return g(count-1)
  File "zM, in g
    return g(count-1)
  [Previous line repeated 7 more times]
  File "r>z', in g
    raise ValueError
ValueError
�z0, in _check_recursive_traceback_display
    g()
cs|r�|d�S��dS)Nr*r)r7)r��hrrr��szBTracebackFormatTests._check_recursive_traceback_display.<locals>.hz8, in _check_recursive_traceback_display
    h()
  File "z%, in h
    return h(count-1)
  File "zM, in h
    return h(count-1)
  [Previous line repeated 7 more times]
  File "z, in h
    g()
zno error raised�GzK, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF)
zL, in g
    return g(count-1)
  [Previous line repeated 1 more time]
  File "�czO, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF + 1)
r�r�r�r����r�r�)r�)r�)ZmaxDiffr�RecursionErrorZfailr�r�r�rbrr1ZassertRegexr5rl�getrecursionlimit�int�re�search�group�rangerr�_RECURSIVE_CUTOFF)r�
render_exc�stderr_frZlineno_fZresult_fr{�actualZ	rec_limitZstderr_gZlineno_gZresult_gZtb_lineZstderr_hZlineno_hZresult_hr)r�r�r�r�"_check_recursive_traceback_display/s�

F*

F

V

F
Fz7TracebackFormatTests._check_recursive_traceback_displaycCs|jtj�dS)N)r�rr�)rrrr�test_recursive_traceback_python�sz4TracebackFormatTests.test_recursive_traceback_pythoncs&ddlm��fdd�}|j|�dS)Nr)�exception_printcstj�\}}}�|�dS)N)rlr�)�exc_type�	exc_value�exc_tb)r�rrr��szRTracebackFormatTests.test_recursive_traceback_cpython_internal.<locals>.render_exc)r�r�r�)rr�r)r�r�)test_recursive_traceback_cpython_internal�sz>TracebackFormatTests.test_recursive_traceback_cpython_internalcCsJdd�}|�}|jj}|j|dd�dt|dfdt|dfg�dS)NcSstj�S)N)rr�rrrr�fmt�sz3TracebackFormatTests.test_format_stack.<locals>.fmtr,z>  File "%s", line %d, in test_format_stack
    result = fmt()
zA  File "%s", line %d, in fmt
    return traceback.format_stack()
r*r�)r�r�r1r�)rr��resultrgrrr�test_format_stack�sz&TracebackFormatTests.test_format_stackc
Cs�ddlm}Gdd�dt�}|d�}|d�}y
||�Wn@|k
rvy|�Wn"|k
rptj�\}}}YnXYnXtd��}||�WdQRX|j�j�j�}	|j	dt
|	��|j	tj�|	d	�|jd
|	d�|jd|	d
�dS)Nr)r�c@seZdZdd�ZdS)zATracebackFormatTests.test_unhashable.<locals>.UnhashableExceptioncSsdS)NTr)r�otherrrr�__eq__�szHTracebackFormatTests.test_unhashable.<locals>.UnhashableException.__eq__N)rIrJrKr�rrrr�UnhashableException�sr��ex1�ex2rT�rszUnhashableException: ex2r>zUnhashableException: ex1r�)
r�r�rPrlr�rrr4rbr1r2�context_messager5)
rr�r�r�r�r�Zexc_valr�r�rrrr�test_unhashable�s$

z$TracebackFormatTests.test_unhashable)N)rIrJrKr�r	r�r�r�r�r�r�r�r�r�r�rrrrr��s,
2r�zG
The above exception was the direct cause of the following exception:

zF
During handling of the above exception, another exception occurred:

z(%s|%s)c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�BaseExceptionReportingTestscCs>t|t�r|Sy
|�Wn tk
r8}z|Sd}~XnXdS)N)�
isinstancerP)rZexception_or_callablerFrrr�
get_exception!s

z)BaseExceptionReportingTests.get_exceptioncCsdddS)Nr*rr)rrrr�zero_div)sz$BaseExceptionReportingTests.zero_divcCsJ|j�}|j|djd��|jd|d�|j|d	jd�|d
�dS)Nr>z  Filez1/0 # In zero_divr,r*�ZeroDivisionError���r�r�r�)rbr3r�r5)r�msg�linesrrr�check_zero_div,sz*BaseExceptionReportingTests.check_zero_divcCs�yddWn&tk
r2}z
|}WYdd}~XnX|j|�j�}|jt|�d�|j|djd��|j|djd��|jd|d�|j|djd	��dS)
Nr*rr)r�z  Filez1/0 # Markerr,r>r�)r��
get_reportrbr1r2r3r�r5)r�_rFr�rrr�test_simple2sz'BaseExceptionReportingTests.test_simplecsj�fdd���fdd�}tj�j|��}�jt|�d��j|dt��j|d��jd|d	�dS)
Ncs:y�j�Wn(tk
r4}zt|�WYdd}~XnXdS)N)r�r�r�)rF)rrr�inner_raise?sz;BaseExceptionReportingTests.test_cause.<locals>.inner_raisecs
��dS)Nrr)r�rr�outer_raiseDsz;BaseExceptionReportingTests.test_cause.<locals>.outer_raiser>r*rzinner_raise() # Markerr,)�
boundaries�splitr�r1r2�
cause_messager�r5)rr��blocksr)r�rr�
test_cause>sz&BaseExceptionReportingTests.test_causecsj�fdd���fdd�}tj�j|��}�jt|�d��j|dt��j|d��jd|d	�dS)
Ncs*y�j�Wntk
r$t�YnXdS)N)r�r�r�r)rrrr�Msz=BaseExceptionReportingTests.test_context.<locals>.inner_raisecs
��dS)Nrr)r�rrr�Rsz=BaseExceptionReportingTests.test_context.<locals>.outer_raiser>r*rzinner_raise() # Markerr,)r�r�r�r1r2r�r�r5)rr�r�r)r�rr�test_contextLsz(BaseExceptionReportingTests.test_contextcCs�y yt�Wntd�YnXWn&tk
rF}z
|}WYdd}~XnX|j|�j�}|jt|�d�|j|djd��|j|djd��|jd|d�|j|djd	��dS)
Nr)rr�r*z  FilezZeroDivisionError from Noner,r>r�)	rPr�r�rbr1r2r3r�r5)rr�rFr�rrr�test_context_suppressionZsz4BaseExceptionReportingTests.test_context_suppressioncsj�fdd���fdd�}tj�j|��}�jt|�d��j|dt��j|d��jd|d	�dS)
Ncs\y�j�Wn&tk
r2}z
|}WYdd}~XnXytWntk
rVt|�YnXdS)N)r�r�Zxyzzy�	NameErrorr�)Z_erF)rrrr�lszGBaseExceptionReportingTests.test_cause_and_context.<locals>.inner_raisecs
��dS)Nrr)r�rrr�uszGBaseExceptionReportingTests.test_cause_and_context.<locals>.outer_raiser>r*rzinner_raise() # Markerr,)r�r�r�r1r2r�r�r5)rr�r�r)r�rr�test_cause_and_contextis	z2BaseExceptionReportingTests.test_cause_and_contextcs��fdd���fdd�}tj�j|��}�jt|�d��j|dt��jd|d��jd	|d��jd
|d��j|d�dS)Ncsly>y�j�Wn,tk
r:}z|}t|�WYdd}~XnXWn(tk
rf}z||�WYdd}~XnXdS)N)r�r�r�)rF�z)rrrr�~szEBaseExceptionReportingTests.test_cause_recursive.<locals>.inner_raisecs
��dS)Nrr)r�rrr��szEBaseExceptionReportingTests.test_cause_recursive.<locals>.outer_raiser>r*zraise KeyError from erz1/0zinner_raise() # Markerr,)	r�r�r�r1r2r�r5ZassertNotInr�)rr�r�r)r�rr�test_cause_recursive}s	z0BaseExceptionReportingTests.test_cause_recursivecCsPdd�}|j|�j�}|j|dd�dd�}|j|�j�}|j|dd�dS)	NcSstdd��dS)Nrnrrs�hello)rnrrsr�)r0rrrrrF�szFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.er,z	        ^cSstd�dS)Nzx = 5 | 4 |)r"rrrrrF�sz              ^r�r�)r�rbr1)rrFr�rrr�test_syntax_error_offset_at_eol�sz;BaseExceptionReportingTests.test_syntax_error_offset_at_eolcCsj|jtd��}|jd|�|jtd��}|jd|�|jt��}|jd|�|jtd��}|jd|�dS)NzException: None
�Nonez
Exception
rn)r�rPr5)rr8rrr�test_message_none�sz-BaseExceptionReportingTests.test_message_noneN)rIrJrKr�r�r�r�r�r�r�r�r�r�r�rrrrr�sr�c@seZdZdd�ZdS)�PyExcReportingTestscCs`|j|�}djtjt|�||j��}td��}tjt|�||j�WdQRX|j|j	�|�|S)NrnrT)
r�rQr�format_exception�type�
__traceback__rr~r1r)rrF�sZsiorrrr��s

zPyExcReportingTests.get_reportN)rIrJrKr�rrrrr��sr�c@seZdZedd��ZdS)�CExcReportingTestsc	Cs:ddlm}|j|�}td��}||�WdQRX|j�S)Nr)r�rT)r�r�r�rr)rrFr�r�rrrr��s


zCExcReportingTests.get_reportN)rIrJrKr	r�rrrrr��sr�c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
LimitTestsze Tests for limit argument.
        It's enough to test extact_tb, extract_stack and format_exception cCstd��dS)NzLast raised)rP)rrrr�last_raises1�szLimitTests.last_raises1cCs|j�dS)N)r�)rrrr�last_raises2�szLimitTests.last_raises2cCs|j�dS)N)r�)rrrr�last_raises3�szLimitTests.last_raises3cCs|j�dS)N)r�)rrrr�last_raises4�szLimitTests.last_raises4cCs|j�dS)N)r�)rrrr�last_raises5�szLimitTests.last_raises5cCstj�S)N)rlr�)rrrr�last_returns_frame1�szLimitTests.last_returns_frame1cCs|j�S)N)r�)rrrr�last_returns_frame2�szLimitTests.last_returns_frame2cCs|j�S)N)r�)rrrr�last_returns_frame3�szLimitTests.last_returns_frame3cCs|j�S)N)r�)rrrr�last_returns_frame4�szLimitTests.last_returns_frame4cCs|j�S)N)r�)rrrr�last_returns_frame5�szLimitTests.last_returns_frame5csf�j���fdd�}�fdd�}tjtdd���,|�}�jt|�d��j|dd	�|dd��||d
d	�|dd�d��j|dd	�|dd��||dd	�|dd
�t|�dd��j|dd	�g�t`||�|d�dt_�j|�|dd���j|d
d	�|dd���j|dd	�|dd
��dt_�j|�g�dt_�j|�g�WdQRXdS)Ncstj�f|�S)N)r�
extract_stack)�kwargs)rrr�extract�sz.LimitTests.test_extract_stack.<locals>.extractcsX�j|d|�|d|���j||dd�||dd���jt|�t|��dS)Nr*)r1r2)r�r{�ignore)rrr�assertEqualExcept�s$z8LimitTests.test_extract_stack.<locals>.assertEqualExcept�tracebacklimiti�rsr,)�limit�dr*rr>r�i�������i����r�i����r�i����r�r�r�r�)r�r�	swap_attrrlZ
assertGreaterr2r1r�)rr�r��nolimr)rrr�test_extract_stack�s*&zLimitTests.test_extract_stackcsfy|j�Wn"tk
r.tj�\}}�YnX�fdd�}tjtdd���|�}|jt|�d�|j|dd�|dd��|j|d	d�|�|j|d
d�|dd��|j|dd�|�|j|d
d�g�t`|j|�|�dt_|j|�|dd��|j|dd�|dd��|j|dd�|dd��d
t_|j|�g�dt_|j|�g�WdQRXdS)Ncstj�f|�S)N)r�
extract_tb)r�)rrrr�
sz+LimitTests.test_extract_tb.<locals>.extractr�i�rsr*r,)r�r�rr>�r�r�i����r�r�r�)	r�rPrlr�rr�r1r2r�)rr�r�r�r�r)rr�test_extract_tbs.zLimitTests.test_extract_tbcsjy|j�Wn"tk
r.tj�\���YnX���fdd�}tjtdd���|�}|jt|�d�|j|dd�|dd��|j|d	d�|�|j|d
d�|dd��|j|dd�|�|j|d
d�g�t`|j|�|�dt_|j|�|dd��|j|dd�|dd��|j|dd�|dd��d
t_|j|�g�dt_|j|�g�WdQRXdS)Ncstj���f|�dd�S)Nr*r�)rr�)r�)r�r�rrrr�*sz1LimitTests.test_format_exception.<locals>.extractr�i�rsr*r,)r�r�rr>rr�r�i����r�r�r�)	r�rPrlr�rr�r1r2r�)rr�r�r)r�r�rr�test_format_exception#s.z LimitTests.test_format_exceptionN)rIrJrK�__doc__r�r�r�r�r�r�r�r�r�r�r�rrrrrrr��sr�c@seZdZdd�Zdd�ZdS)�MiscTracebackCasesc	s��fdd�}�fdd��dd��y
|�Wntj�\}}}YnX|jjjj}|jt|j�d�tj|�|jt|j�d�dS)	Ncs
��dS)Nrr)�middlerr�outerGsz,MiscTracebackCases.test_clear.<locals>.outercs
��dS)Nrr)�innerrrrIsz-MiscTracebackCases.test_clear.<locals>.middlecSsd}dddS)Nr*rr)�irrrrKsz,MiscTracebackCases.test_clear.<locals>.innerr*r)	rlr�rrr1r2rr�clear_frames)rrr�rrZinner_framer)rrr�
test_clearFs

zMiscTracebackCases.test_clearcCsJdd�}|�}|jj}|j|d	d�t|dddft|dddfg�dS)
NcSstj�S)N)rr�rrrrr�_sz6MiscTracebackCases.test_extract_stack.<locals>.extractr,r�zresult = extract()r*r�z return traceback.extract_stack()r�)r�r�r1r�)rr�r�rgrrrr�^sz%MiscTracebackCases.test_extract_stackN)rIrJrKr
r�rrrrrAsrc@s$eZdZdd�Zdd�Zdd�ZdS)�	TestFramecCs�tj�tjdt��tjddd�}|j|d�|jt|�d�|j|tjddd��|j|t|��|jt|�|�|j|j	�dS)Nr�r*�dummy�%"""Test cases for traceback module""")r�r*rr
)r�r*rr
)
�	linecache�
clearcache�	lazycache�globalsr�FrameSummaryr1�tupleZassertIsNone�locals)rr�rrr�test_basicsks
zTestFrame.test_basicscCsHtj�tjddddd�}|jd|j�tjdt��|jd|j�dS)Nr�r*rF)�lookup_linez%"""Test cases for traceback module""")	rrrrr1�_linerr�line)rr�rrr�test_lazy_lineszszTestFrame.test_lazy_linescCs$tjddddd�}|jd|j�dS)Nr�r*rr)r)rrr1r)rr�rrr�test_explicit_line�szTestFrame.test_explicit_lineN)rIrJrKrrrrrrrris	rc@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	TestStackcCsLdd�}ttjd��}|�}|jt|�t|�d�|j|dd�|�dS)NcSsttjd��S)N)�listr�
walk_stackrrrr�deeper�sz)TestStack.test_walk_stack.<locals>.deeperr*)rrrr1r2)rr�s1�s2rrr�test_walk_stack�s
zTestStack.test_walk_stackcCsRyddWn"tk
r.tj�\}}}YnXttj|��}|jt|�d�dS)Nr*r)rPrlr�rr�walk_tbr1r2)rr�rr�rrr�test_walk_tb�szTestStack.test_walk_tbcCs$tjjtjd��}|j|tj�dS)N)r�StackSummaryr�rZassertIsInstance)rr�rrrr��szTestStack.test_extract_stackcCs*tjjtjd�dd�}|jt|�d�dS)Nrs)r�)rr$r�rr1r2)rr�rrr�test_extract_stack_limit�sz"TestStack.test_extract_stack_limitcCsdtj�tjdt��tdd�}t|dd�}tjjt	|dfg�dd�}tj�|j
|djd�dS)Nz/foo.py�methodrT)�lookup_linesrz
import sys)rr�updatecacher�	test_code�
test_framerr$r��iterr1r)r�cr�r�rrr�test_extract_stack_lookup_lines�s
z)TestStack.test_extract_stack_lookup_linescCsjtj�tdd�}t|dd�}tjjt|dfg�dd�}|jitj	�tj
dt��|j|djd�dS)Nz/foo.pyr&rF)r'rz
import sys)
rrr)r*rr$r�r+r1�cacher(rr)rr,r�r�rrr�*test_extract_stackup_deferred_lookup_lines�s
z4TestStack.test_extract_stackup_deferred_lookup_linescCs$tjjdg�}|jdg|j��dS)N�foo.pyr*�fredrz*  File "foo.py", line 1, in fred
    line
)r0r*r1r)rr$�	from_listr1r[)rr�rrr�test_from_list�szTestStack.test_from_listcCs8tjjdg�}d	|d<tjj|�}|jdg|j��dS)
N�foo.pyr*r1rr,rz*  File "foo.py", line 2, in fred
    line
)r4r*r1r)r4r,r1r)rr$r2r1r[)rr�r rrr�test_from_list_edited_stack�sz%TestStack.test_from_list_edited_stackcCs$tjjdg�}|jdg|j��dS)N�foo.pyr*r1rz*  File "foo.py", line 1, in fred
    line
)r6r*r1r)rr$r2r1r[)rr�rrr�test_format_smoke�szTestStack.test_format_smokecCs^tjdt��tdd�}t|t�ddi�}tjjt|dfg�dd�}|j	|dj
dd	i�dS)
Nz/foo.pyr&�	somethingr*rT)�capture_localsr�1)rr(rr)r*rr$r�r+r1r)rr,r�r�rrr�test_locals�s

zTestStack.test_localscCsVtjdt��tdd�}t|t�ddi�}tjjt|dfg��}|j	|dj
d�dS)Nz/foo.pyr&r8r*rr)rr(rr)r*rr$r�r+r1r)rr,r�r�rrr�test_no_locals�s

zTestStack.test_no_localscCs8dd�}|dd�}|jdt|jjdfg|j��dS)NcSs d}d}tjjtjd�ddd�S)Nr*r,T)r9r�)rr$r�r)�k�v�a�brrr�
some_inner�sz0TestStack.test_format_locals.<locals>.some_innerr>r)z�  File "%s", line %d, in some_inner
    traceback.walk_stack(None), capture_locals=True, limit=1)
    a = 1
    b = 2
    k = 3
    v = 4
)r1r�r�r�r[)rrAr�rrr�test_format_locals�s
zTestStack.test_format_localsN)rIrJrKr!r#r�r%r-r/r3r5r7r;r<rBrrrrr�s		rc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestTracebackExceptioncCs�yddWn<tk
rHtj�}tj|�}tjjtj|d��}YnX|jd|j	�|jd|j
�|jd|j�|j||j�|j|d|j
�|jt|d�t|��dS)Nr*rr,F)rPrlr�r�TracebackExceptionr$r�r"r1�	__cause__�__context__�__suppress_context__�stackr�rv)rr�r�expected_stackrrr�
test_smoke�s
z!TestTracebackException.test_smokecCs�dd�}y
|�Wn`tk
rr}zDtj�}tjjtj|d�dddd�|_tjj	|dddd�|_
WYdd}~XnX|j}|j
}|jd|j�|jd|j
�|jd|j�|j||j�|j|d|j�|jt|d�t|��dS)	NcSsdddS)Nr*rrrrrrro�sz7TestTracebackException.test_from_exception.<locals>.foor,r*FT)r�r'r9r)rPrlr�rr$r�r"rIrD�from_exceptionrr1rErFrGrHr�rv)rrorFr�rIrrrr�test_from_exception�s$

"z*TestTracebackException.test_from_exceptioncCs�y8zddWdtj�}tj|�}td�}td�|�XWn<tk
rttj�}tj|�}tjjtj|d��}YnXtjt|d�}|j||j	�|j||j
�|jd|j�|j||j�|j|d|j
�|jt|d�t|��dS)Nr*r�causezuh ohr,T)rlr�rrDrPr$r�r"r1rErFrGrHr�rv)r�exc_info_context�exc_contextrMr�rrIZ	exc_causerrrr�s&

z!TestTracebackException.test_causecCs�y.zddWdtj�}tj|�}td��XWn<tk
rjtj�}tj|�}tjjtj|d��}YnX|jd|j	�|j||j
�|jd|j�|j||j�|j|d|j
�|jt|d�t|��dS)Nr*rzuh ohr,F)rlr�rrDrPr$r�r"r1rErFrGrHr�rv)rrNrOr�rrIrrrr�%s"

z#TestTracebackException.test_contextcCs�Gdd�dt�}|d�}|d�}y
||�Wn:|k
rdy|�Wn|k
r^tj�}YnXYnXtj|�}t|j��}|jd|d�|jd|d�dS)	Nc@seZdZdd�ZdS)zCTestTracebackException.test_unhashable.<locals>.UnhashableExceptioncSsdS)NTr)rr�rrrr�;szJTestTracebackException.test_unhashable.<locals>.UnhashableException.__eq__N)rIrJrKr�rrrrr�:sr�r�r�zUnhashableException: ex2
r,zUnhashableException: ex1
r)rPrlr�rrDrr[r5)rr�r�r�r�rZ	formattedrrrr�9s

z&TestTracebackException.test_unhashablecsr�fdd��y�d�WnFtk
r^tj�}tj|ddi�}tjjtj|d�dd�}YnX|j||j	�dS)Ncs|r�|d�ndddS)Nr*rr)�n)�recurserrrQMsz2TestTracebackException.test_limit.<locals>.recurser�r�rsr,)r�)
rPrlr�rrDr$r�r"r1rH)rr�rrIr)rQr�
test_limitLsz!TestTracebackException.test_limitcCsxtj�td�}tdd�}t|dd�}t|dd�}tjt||dd�}|jitj	�tj
dt��|j|jdj
d�dS)	Nzuh ohz/foo.pyr&rF)r'rz
import sys)rrrPr)r*�test_tbrrDr1r.r(rrHr)rrFr,r�rrrrr�test_lookup_lines[s
z(TestTracebackException.test_lookup_linescCsptjdt��td�}tdd�}t|t�ddd��}t|dd�}tjt||dd	�}|j	|j
d
jddd��dS)
Nz/foo.pyzuh ohr&r*�string)r8r�rT)r9rr:z'string')rr(rrPr)r*rSrrDr1rHr)rrFr,r�rrrrrr;fs
z"TestTracebackException.test_localscCsdtjdt��td�}tdd�}t|t�ddi�}t|dd�}tjt||�}|j	|j
djd�dS)Nz/foo.pyzuh ohr&r8r*rr)rr(rrPr)r*rSrrDr1rHr)rrFr,r�rrrrrr<qs
z%TestTracebackException.test_no_localscCs,tjttd�d�}|jt|j��dg�dS)NZhavenzException: haven
)rrDrPr1rr[)rrrrr�test_traceback_headerzsz,TestTracebackException.test_traceback_headerN)
rIrJrKrJrLr�r�r�rRrTr;r<rVrrrrrC�s	rCc@seZdZdd�ZdS)�MiscTestcCsht�}dh}xHtt�D]<}|jd�s||kr.qtt|�}t|dd�dkr|j|�qW|jtj|�dS)N�
print_listr�rJr)�set�dirrr��getattr�addZassertCountEqual�__all__)rr{Z	blacklist�nameZ
module_objectrrr�test_all�s
zMiscTest.test_allN)rIrJrKr_rrrrrW�srWrM)+r�collectionsr�iorrrlZunittestr�ZtestrZtest.supportrrrrr	Ztest.support.script_helperr
ryrr)r*rSZTestCaserr�r�r�r#�escaper�r�r�r�r�rrrrCrWrI�mainrrrr�<module>sHD=
x(`