HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_traceback.cpython-37.opt-2.pyc
B

��g��@s�ddlmZddlmZddlZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
mZmZddlmZddlZddlZeddd	g�Zed
ddd
g�Zeddddg�ZGdd�dej�ZGdd�dej�ZdZdZe�de�e�e�e�f�ZGdd�d�ZGdd�deej�Z Gdd�deej�Z!Gdd �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�e�)�dS),�)�
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)�TracebackCasesc
CsBy
|�Wn*|k
r4}zt�||�Sd}~XYn
Xtd��dS)Nzcall did not raise exception)�	traceback�format_exception_only�
ValueError)�self�func�exc�value�r�//usr/local/lib/python3.7/test/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|�|jt�}|�t|�d�|�|d��dk�|�d|d�|�|d�d�|d�d��|�|j	t�}|�d|d�|�|d�
d�d�|�|d�d�|d�d��|�|jt�}|�d|d�|�|d�
d�d�|�|d�d�|d�d��dS)	N��z	return x!�^��!�
�+)r r$�SyntaxError�assertEqual�len�
assertTrue�strip�assertIn�findr%�countr')r�errrrr�
test_caret1s   zTracebackCases.test_caretcCs>tdd�}t�t|�}|�t|�d�|�|d��d�dS)N�error)zx.py�Nz
bad syntax�r*z
bad syntax)r0rrr1r2r4)rrr8rrr�test_nocaretEs
zTracebackCases.test_nocaretcCs�|�|jt�}|�t|�d�|�|d��d�|�d|d�|�|d�d�|d�d��|�|jt�}|�t|�d�|�|d��d�|�d|d�|�|d�d�|d�d��dS)Nr)r*zprint(2)r+r,�)�p)	r r&�IndentationErrorr1r2r4r5r6r()rr8rrr�test_bad_indentationKs z#TracebackCases.test_bad_indentationcCs&t�}t�|j|�}|�|dg�dS)NzKeyboardInterrupt
)�KeyboardInterruptrr�	__class__r1)r�eZlstrrr�test_base_exceptionZsz"TracebackCases.test_base_exceptioncCsxGdd�dt�}t�||��}|�t|�d�d|j}|jdkrJ|j}nd�|j|jg�}|�|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__rFrrrr�XasrJr*z<unprintable %s object>)�__main__�builtins�.rz%s: %s
)	�	Exceptionrrr1r2rGrHrI�join)rrJr8Z	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�}|��\}}t	|d��
�d�����fdd�}|dd	dd
�xhdD]`}|dkr�d	}n|dkr�d
}nd}|d�|�||d�|d�|�||d�|d�|�||d�q�W|dddd�dS)Nrz-cz&import sys; print(sys.stdout.encoding))�stdout�stderr�asciic	szdttd|d��}|�d�||��WdQRX�j�jtg�j�jd�}|��\}}|�	���
�}Wdtt�X|��d�}|�	��}	d�|	�}
d�|	�}��
d||d	d
�|d	|����|d�|
�d�|d|
����|d
|kd�|d
|��dS)N�w)�encodingz}{0}if 1:
                        import traceback;
                        raise RuntimeError('{1}')
                        )rQrR�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�processrQrRZencoded_messageZ
message_asciiZerr_lineZerr_msg)�output_encodingr�
subprocess�sysrr�do_test}s.



z1TracebackCases.test_encoded_file.<locals>.do_test��foor<)rSz
iso-8859-1zutf-8�GBKrnu丂儀uhé hoz# coding: {0}
r)z#!shebang
# coding: {0}
�z 	
# coding: {0}
zx=0
# coding: GBK
zutf-8)�tempfilerjri�osrZr[r\r]r^�strr`rY)	rrprqrgrQrRrkrd�textr)rhrrirjr�test_encoded_filems, 

#





z TracebackCases.test_encoded_filecCs8t�d�}td|�\}}}dddg}|�|��|�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
r1r`)rrZrcrQrR�expectedrrr�test_print_traceback_at_exit�sz+TracebackCases.test_print_traceback_at_exitcCs0t�}tjttd�d|d�|�|��d�dS)NZ	projector)�filezException: projector
)rr�print_exceptionrNr1�getvalue)rrfrrr�test_print_exception�sz#TracebackCases.test_print_exceptionN)rGrHrIr r$r%r&r'r(r9r=rArErPrtrZrequires_type_collectingrxr|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_exceptionNcCs�ddlm}y|��Wn�tk
r�t��\}}}|dk	rH||j�dd�t�	|��}t
�}|||�|��}td��}	t�
|�WdQRXt
�}
tj
||
d�td��}t��WdQRXt��}t
�}
tj|
d�Yn
Xtd��|�||�|�|	��|
���|�|��|
���|�||
���|��}|�t|�d�|d}|d	d�\}}|�|�d
��|�|�d��|�|�d��dS)
Nr)�traceback_printz#Traceback (most recent call last):
rlrR)ryz&unable to create test traceback stringro����	Tracebackz  Filez	    raise)�	_testcapir�rr~rj�exc_inforrOr�	format_tbrr{r�print_tb�	print_exc�
format_excrr1r`r2r3�
startswith)rZcleanup_funcr��type_rrZ
traceback_fmtZfile_Z
python_fmtZtbstderrZtbfileZ	excstderrZexcfmtZexcfileZtb_linesZbanner�locationZsource_linerrr�check_traceback_format�sB



z+TracebackFormatTests.check_traceback_formatcCs|��dS)N)r�)rrrr�test_traceback_formatsz*TracebackFormatTests.test_traceback_formatcCsdd�}|�|�dS)NcSs|j��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_framesc	Cs|td��}t�t�d��WdQRXt�}tjt�d�|d�|�|��|���t�t�d��}|�|��d�	|��dS)NrRr*)ryrl)
rr�print_stackrj�	_getframerr1r{�format_stackrO)rZststderrZstfileZstfmtrrr�test_stack_formats
z&TracebackFormatTests.test_stack_formatc	Csjdd�}td��}|�WdQRX|jj}|�|����dd�dt|dfddt|d	fd
g�dS)NcSst��dS)N)rr�rrrr�prn"sz2TracebackFormatTests.test_print_stack.<locals>.prnrR���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_firstlinenor1r{r`�__file__)rr�rRrerrr�test_print_stack!s
z%TracebackFormatTests.test_print_stackcs�d|_�fdd��td��D}y
��Wn(tk
rN}z
|�Wdd}~XYnX|�d�WdQRX�jj}dt�d|d�dt�d|d	�d
t�d|d	�d
t�d|d	�d�}|��}|����}|�	|dd�|dd��|�
|d|d�|�|d
|d
�t�
�}|�tt�d|d����t|d|��d(�fdd�	�td��F}	y
��Wn*tk
�r�}z
|�Wdd}~XYnX|�d�WdQRX�jj}
dt�d|
d�dt�d|
d�dt�d|
d�dt�d|
d�d�}dt�d|
d�d�}||��}|	����}|�	||�d)��fdd�	�td��F}
y
��Wn*tk
�rt}z
|�Wdd}~XYnX|�d�WdQRX�jj}dt�d|d�dt�d|d�dt�d|d�dt�d|d�d t�d|d�d!�}||��}|
����}|�	||�td��J}	y�tj�Wn*tk
�rN}z
|�Wdd}~XYnX|�d"�WdQRXdt�d|
d�dt�d|
d�dt�d|
d�dt�d|
d�d�}dt�d|
d#�d$�}||��}|	����}|�	||�td��N}	y�tjd	�Wn*tk
�r*}z
|�Wdd}~XYnX|�d"�WdQRXdt�d|
d�dt�d|
d�dt�d|
d�d%t�d|
d�d�}dt�d|
d&�d'�}||��}|	����}|�	||�dS)*Ncs
��dS)Nrr)�frrr�6szBTracebackFormatTests._check_recursive_traceback_display.<locals>.frRzno recursion occurredz+Traceback (most recent call last):
  File "z", line roz8, 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 "r,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�)ZmaxDiffr�RecursionErrorZfailr�r�r�r`r{r1ZassertRegexr5rj�getrecursionlimit�int�re�search�group�rangerr�_RECURSIVE_CUTOFF)r�
render_exc�stderr_frZlineno_fZresult_frw�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|�tj�dS)N)r�rr�)rrrr�test_recursive_traceback_python�sz4TracebackFormatTests.test_recursive_traceback_pythoncs&ddlm��fdd�}|�|�dS)Nr)�exception_printcst��\}}}�|�dS)N)rjr�)�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}|�|dd�dt|dfdt|dfg�dS)NcSst��S)N)rr�rrrr�fmt�sz3TracebackFormatTests.test_format_stack.<locals>.fmtr�z>  File "%s", line %d, in test_format_stack
    result = fmt()
r,zA  File "%s", line %d, in fmt
    return traceback.format_stack()
r*)r�r�r1r�)rr��resultrerrr�test_format_stack�sz&TracebackFormatTests.test_format_stackc
Cs�ddlm}Gdd�dt�}|d�}|d�}y
||�Wn@|k
rvy|�Wn"|k
rpt��\}}}YnXYnXtd��}||�WdQRX|������}	|�	dt
|	��|�	t��|	d	�|�d
|	d�|�d|	d
�dS)Nr)r�c@seZdZdd�ZdS)zATracebackFormatTests.test_unhashable.<locals>.UnhashableExceptioncSsdS)NTr)r�otherrrr�__eq__�szHTracebackFormatTests.test_unhashable.<locals>.UnhashableException.__eq__N)rGrHrIr�rrrr�UnhashableException�sr��ex1�ex2rR�rozUnhashableException: ex2r<zUnhashableException: ex1r�)
r�r�rNrjr�rr{r4r`r1r2�context_messager5)
rr�r�r�r�r�Zexc_valr�r�rrrr�test_unhashable�s$

z$TracebackFormatTests.test_unhashable)N)rGrHrIrr	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)�BaseExceptionReportingTestsc
Cs@t|t�r|Sy
|�Wn"tk
r:}z|Sd}~XYnXdS)N)�
isinstancerN)rZexception_or_callablerDrrr�
get_exception!s

z)BaseExceptionReportingTests.get_exceptioncCsdddS)Nr*rr)rrrr�zero_div)sz$BaseExceptionReportingTests.zero_divcCsJ|��}|�|d�d��|�d|d�|�|d�d�|d�dS)N���z  Filez1/0 # In zero_divr�r��ZeroDivisionError)r`r3r�r5)r�msg�linesrrr�check_zero_div,sz*BaseExceptionReportingTests.check_zero_divc
Cs�yddWn&tk
r2}z|}Wdd}~XYnX|�|���}|�t|�d�|�|d�d��|�|d�d��|�d|d�|�|d�d	��dS)
Nr*rr)r�z  Filez1/0 # Markerr,r<r�)r��
get_reportr`r1r2r3r�r5)r�_rDr�rrr�test_simple2sz'BaseExceptionReportingTests.test_simplecsj�fdd���fdd�}t���|��}��t|�d���|dt���|d���d|d	�dS)
Nc
s:y���Wn(tk
r4}z
t|�Wdd}~XYnXdS)N)r�r�r~)rD)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�}t���|��}��t|�d���|dt���|d���d|d	�dS)
Ncs*y���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_contextc
Cs�y yt�Wntd�YnXWn&tk
rF}z|}Wdd}~XYnX|�|���}|�t|�d�|�|d�d��|�|d�d��|�d|d�|�|d�d	��dS)
Nr)rr�r*z  FilezZeroDivisionError from Noner,r<r�)	rNr�r�r`r1r2r3r�r5)rr�rDr�rrr�test_context_suppressionZsz4BaseExceptionReportingTests.test_context_suppressioncsj�fdd���fdd�}t���|��}��t|�d���|dt���|d���d|d	�dS)
Nc
s\y���Wn&tk
r2}z|}Wdd}~XYnXytWntk
rVt|�YnXdS)N)r�r�Zxyzzy�	NameErrorr~)Z_erD)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�}t���|��}��t|�d���|dt���d|d���d	|d���d
|d���|d�dS)Nc
sly>y���Wn,tk
r:}z|}t|�Wdd}~XYnXWn(tk
rf}z
||�Wdd}~XYnXdS)N)r�r�r~)rD�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�}|�|���}|�|dd�dd�}|�|���}|�|dd�dS)NcSstdd��dS)Nrl)rlrroZhello)r0rrrrrD�szFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.er�z	        ^cSstd�dS)Nzx = 5 | 4 |)r"rrrrrD�sz              ^)r�r`r1)rrDr�rrr�test_syntax_error_offset_at_eol�sz;BaseExceptionReportingTests.test_syntax_error_offset_at_eolcCsj|�td��}|�d|�|�td��}|�d|�|�t��}|�d|�|�td��}|�d|�dS)NzException: None
�Nonez
Exception
rl)r�rNr5)rr8rrr�test_message_none�sz-BaseExceptionReportingTests.test_message_noneN)rGrHrIr�r�r�r�r�r�r�r�r�r�r�rrrrr�sr�c@seZdZdd�ZdS)�PyExcReportingTestsc	Cs`|�|�}d�t�t|�||j��}td��}t�t|�||j�WdQRX|�|�	�|�|S)NrlrR)
r�rOr�format_exception�type�
__traceback__rrzr1r{)rrD�sZsiorrrr��s

zPyExcReportingTests.get_reportN)rGrHrIr�rrrrr��sr�c@seZdZedd��ZdS)�CExcReportingTestsc	Cs:ddlm}|�|�}td��}||�WdQRX|��S)Nr)r�rR)r�r�r�rr{)rrDr�r�rrrr��s


zCExcReportingTests.get_reportN)rGrHrIr	r�rrrrr��sr�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
LimitTestscCstd��dS)NzLast raised)rN)rrrr�last_raises1�szLimitTests.last_raises1cCs|��dS)N)r�)rrrr�last_raises2�szLimitTests.last_raises2cCs|��dS)N)r�)rrrr�last_raises3�szLimitTests.last_raises3cCs|��dS)N)r�)rrrr�last_raises4�szLimitTests.last_raises4cCs|��dS)N)r�)rrrr�last_raises5�szLimitTests.last_raises5cCst��S)N)rjr�)rrrr�last_returns_frame1�szLimitTests.last_returns_frame1cCs|��S)N)r�)rrrr�last_returns_frame2�szLimitTests.last_returns_frame2cCs|��S)N)r�)rrrr�last_returns_frame3�szLimitTests.last_returns_frame3cCs|��S)N)r�)rrrr�last_returns_frame4�szLimitTests.last_returns_frame4cCs|��S)N)r�)rrrr�last_returns_frame5�szLimitTests.last_returns_frame5c	sf�����fdd�}�fdd�}t�tdd���,|�}��t|�d���|dd	�|d
d��||dd	�|dd�d
���|d
d	�|dd��||dd	�|dd�t|�dd���|dd	�g�t`||�|d
�dt_��|�|d
d����|dd	�|dd����|dd	�|dd��dt_��|�g�dt_��|�g�WdQRXdS)Ncstj�f|�S)N)r�
extract_stack)�kwargs)rrr�extract�sz.LimitTests.test_extract_stack.<locals>.extractcsX��|d|�|d|����||dd�||dd����t|�t|��dS)Nr*)r1r2)r�rw�ignore)rrr�assertEqualExcept�s$z8LimitTests.test_extract_stack.<locals>.assertEqualExcept�tracebacklimiti�ror,)�limitr��di����i����r*rr<r�r�)r�r�	swap_attrrjZ
assertGreaterr2r1r�)rr�r��nolimr)rrr�test_extract_stack�s*&zLimitTests.test_extract_stackc	sfy|��Wn"tk
r.t��\}}�YnX�fdd�}t�tdd���|�}|�t|�d�|�|dd�|dd��|�|dd�|�|�|d	d�|d	d��|�|d
d�|�|�|dd�g�t`|�|�|�dt_|�|�|dd��|�|dd�|dd��|�|d
d�|d
d��dt_|�|�g�dt_|�|�g�WdQRXdS)Ncstj�f|�S)N)r�
extract_tb)r�)rrrr�
sz+LimitTests.test_extract_tb.<locals>.extractr�i��r,)r�r�r�i����rr<r�r�)	r�rNrjr�rr�r1r2r�)rr�r�r�r�r)rr�test_extract_tbs.zLimitTests.test_extract_tbc	sjy|��Wn"tk
r.t��\���YnX���fdd�}t�tdd���|�}|�t|�d�|�|dd�|dd��|�|dd�|�|�|d	d�|d	d��|�|d
d�|�|�|dd�g�t`|�|�|�dt_|�|�|dd��|�|dd�|dd��|�|d
d�|d
d��dt_|�|�g�dt_|�|�g�WdQRXdS)Ncstj���f|�dd�S)Nr*r�)rr�)r�)r�r�rrrr�*sz1LimitTests.test_format_exception.<locals>.extractr�i�r�r,)r�r�r�i����rr<r�r�)	r�rNrjr�rr�r1r2r�)rr�r�r)r�r�rr�test_format_exception#s.z LimitTests.test_format_exceptionN)rGrHrIr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�MiscTracebackCasescs��fdd�}�fdd��dd��y
|�Wnt��\}}}YnX|jjjj}|�t|j�d�t�|�|�t|j�d�dS)	Ncs
��dS)Nrr)�middlerr�outerGsz,MiscTracebackCases.test_clear.<locals>.outercs
��dS)Nrr)�innerrrr�Isz-MiscTracebackCases.test_clear.<locals>.middlecSsd}dddS)Nr*rr)�irrrrKsz,MiscTracebackCases.test_clear.<locals>.innerr*r)	rjr�rrr1r2rr�clear_frames)rr�r�rrZinner_framer)rr�r�
test_clearFs

zMiscTracebackCases.test_clearcCsJdd�}|�}|jj}|�|dd�t|dddft|ddd	fg�dS)
NcSst��S)N)rr�rrrrr�_sz6MiscTracebackCases.test_extract_stack.<locals>.extractr�r,r�zresult = extract()r*r�z return traceback.extract_stack())r�r�r1r�)rr�r�rerrrr�^sz%MiscTracebackCases.test_extract_stackN)rGrHrIrr�rrrrr�Asr�c@s$eZdZdd�Zdd�Zdd�ZdS)�	TestFramecCs�t��t�dt��t�ddd�}|�|d�|�t|�d�|�|t�ddd��|�|t|��|�t|�|�|�|j	�dS)Nr�r*�dummy)r�r*rz%"""Test cases for traceback module""")
�	linecache�
clearcache�	lazycache�globalsr�FrameSummaryr1�tupleZassertIsNone�locals)rr�rrr�test_basicsks
zTestFrame.test_basicscCsHt��tjddddd�}|�d|j�t�dt��|�d|j�dS)Nr�r*rF)�lookup_linez%"""Test cases for traceback module""")	rrrr
r1�_linerr	�line)rr�rrr�test_lazy_lineszszTestFrame.test_lazy_linescCs$tjddddd�}|�d|j�dS)Nr�r*rr)r)rr
r1r)rr�rrr�test_explicit_line�szTestFrame.test_explicit_lineN)rGrHrIr
rrrrrrris	rc@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	TestStackcCsLdd�}tt�d��}|�}|�t|�t|�d�|�|dd�|�dS)NcSstt�d��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.t��\}}}YnXtt�|��}|�t|�d�dS)Nr*r)rNrjr�rr�walk_tbr1r2)rr�rr�rrr�test_walk_tb�szTestStack.test_walk_tbcCs$tj�t�d��}|�|tj�dS)N)r�StackSummaryr�rZassertIsInstance)rr�rrrr��szTestStack.test_extract_stackcCs*tjjt�d�dd�}|�t|�d�dS)Nro)r�)rrr�rr1r2)rr�rrr�test_extract_stack_limit�sz"TestStack.test_extract_stack_limitcCsdt��t�dt��tdd�}t|dd�}tjjt	|dfg�dd�}t��|�
|djd�dS)Nz/foo.py�methodr�T)�lookup_linesrz
import sys)rr�updatecacher	�	test_code�
test_framerrr��iterr1r)r�cr�r�rrr�test_extract_stack_lookup_lines�s
z)TestStack.test_extract_stack_lookup_linescCsjt��tdd�}t|dd�}tjjt|dfg�dd�}|�itj	�t�
dt��|�|djd�dS)Nz/foo.pyrr�F)rrz
import sys)
rrr!r"rrr�r#r1�cacher r	r)rr$r�r�rrr�*test_extract_stackup_deferred_lookup_lines�s
z4TestStack.test_extract_stackup_deferred_lookup_linescCs$tj�dg�}|�dg|���dS)N)zfoo.pyr*�fredrz*  File "foo.py", line 1, in fred
    line
)rr�	from_listr1rY)rr�rrr�test_from_list�szTestStack.test_from_listcCs8tj�dg�}d|d<tj�|�}|�dg|���dS)N)zfoo.pyr*r(r)zfoo.pyr,r(rrz*  File "foo.py", line 2, in fred
    line
)rrr)r1rY)rr�rrrr�test_from_list_edited_stack�sz%TestStack.test_from_list_edited_stackcCs$tj�dg�}|�dg|���dS)N)zfoo.pyr*r(rz*  File "foo.py", line 1, in fred
    line
)rrr)r1rY)rr�rrr�test_format_smoke�szTestStack.test_format_smokecCs^t�dt��tdd�}t|t�ddi�}tjjt|dfg�dd�}|�	|dj
dd	i�dS)
Nz/foo.pyr�	somethingr*r�T)�capture_localsr�1)rr r	r!r"rrr�r#r1r)rr$r�r�rrr�test_locals�s

zTestStack.test_localscCsVt�dt��tdd�}t|t�ddi�}tj�t|dfg��}|�	|dj
d�dS)Nz/foo.pyrr-r*r�r)rr r	r!r"rrr�r#r1r)rr$r�r�rrr�test_no_locals�s

zTestStack.test_no_localscCs8dd�}|dd�}|�dt|jjdfg|���dS)NcSs d}d}tjjt�d�ddd�S)Nr*r,T)r.r�)rrr�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�rY)rr6r�rrr�test_format_locals�s
zTestStack.test_format_localsN)rGrHrIrrr�rr%r'r*r+r,r0r1r7rrrrr�s		rc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestTracebackExceptionc	Cs�yddWn<tk
rHt��}tj|�}tj�t�|d��}YnX|�d|j	�|�d|j
�|�d|j�|�||j�|�|d|j
�|�t|d�t|��dS)Nr*rr,F)rNrjr�r�TracebackExceptionrr�rr1�	__cause__�__context__�__suppress_context__�stackr�rr)rr�r�expected_stackrrr�
test_smoke�s
z!TestTracebackException.test_smokec
Cs�dd�}y
|�Wn`tk
rr}zBt��}tjjt�|d�dddd�|_tjj	|dddd�|_
Wdd}~XYnX|j}|j
}|�d|j�|�d|j
�|�d|j�|�||j�|�|d|j�|�t|d�t|��dS)	NcSsdddS)Nr*rrrrrrrm�sz7TestTracebackException.test_from_exception.<locals>.foor,r*FT)r�rr.r)rNrjr�rrr�rr>r9�from_exceptionrr1r:r;r<r=r�rr)rrmrDr�r>rrrr�test_from_exception�s$

"z*TestTracebackException.test_from_exceptionc	Cs�y8zddWdt��}tj|�}td�}td�|�XWn<tk
rtt��}tj|�}tj�t�|d��}YnXt�t|d�}|�||j	�|�||j
�|�d|j�|�||j�|�|d|j
�|�t|d�t|��dS)Nr*r�causezuh ohr,T)rjr�rr9rNrr�rr1r:r;r<r=r�rr)r�exc_info_context�exc_contextrBr�rr>Z	exc_causerrrr�s&

z!TestTracebackException.test_causec	Cs�y.zddWdt��}tj|�}td��XWn<tk
rjt��}tj|�}tj�t�|d��}YnX|�d|j	�|�||j
�|�d|j�|�||j�|�|d|j
�|�t|d�t|��dS)Nr*rzuh ohr,F)rjr�rr9rNrr�rr1r:r;r<r=r�rr)rrCrDr�rr>rrrr�%s"

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

z&TestTracebackException.test_unhashablecsr�fdd��y�d�WnFtk
r^t��}tj|ddi�}tjjt�|d�dd�}YnX|�||j	�dS)Ncs|r�|d�ndddS)Nr*rr)�n)�recurserrrGMsz2TestTracebackException.test_limit.<locals>.recurser�r�ror,)r�)
rNrjr�rr9rr�rr1r=)rr�rr>r)rGr�
test_limitLsz!TestTracebackException.test_limitcCsxt��td�}tdd�}t|dd�}t|dd�}tjt||dd�}|�itj	�t�
dt��|�|jdj
d�dS)	Nzuh ohz/foo.pyrr�F)rrz
import sys)rrrNr!r"�test_tbrr9r1r&r r	r=r)rrDr$r�rrrrr�test_lookup_lines[s
z(TestTracebackException.test_lookup_linescCspt�dt��td�}tdd�}t|t�ddd��}t|dd�}tjt||dd	�}|�	|j
d
jddd��dS)
Nz/foo.pyzuh ohrr*�string)r-r�r�T)r.rr/z'string')rr r	rNr!r"rIrr9r1r=r)rrDr$r�rrrrrr0fs
z"TestTracebackException.test_localscCsdt�dt��td�}tdd�}t|t�ddi�}t|dd�}t�t||�}|�	|j
djd�dS)Nz/foo.pyzuh ohrr-r*r�r)rr r	rNr!r"rIrr9r1r=r)rrDr$r�rrrrrr1qs
z%TestTracebackException.test_no_localscCs,t�ttd�d�}|�t|���dg�dS)NZhavenzException: haven
)rr9rNr1rrY)rrrrr�test_traceback_headerzsz,TestTracebackException.test_traceback_headerN)
rGrHrIr?rAr�r�r�rHrJr0r1rLrrrrr8�s	r8c@seZdZdd�ZdS)�MiscTestcCsht�}dh}xHtt�D]<}|�d�s||kr.qtt|�}t|dd�dkr|�|�qW|�tj|�dS)N�
print_listr�rHr)�set�dirrr��getattr�addZassertCountEqual�__all__)rrwZ	blacklist�nameZ
module_objectrrr�test_all�s
zMiscTest.test_allN)rGrHrIrUrrrrrM�srMrK)*�collectionsr�iorrrjZunittestr�ZtestrZtest.supportrrrrr	Ztest.support.script_helperr
rurr!r"rIZTestCaserr}r�r�r#�escaper�r�r�r�r�r�rrr8rMrG�mainrrrr�<module>sFD=
x(`