Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_traceback.cpython-35.opt-1.pyc



��Yf��@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,kr[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)�TracebackCasescCsSy|�Wn5|k
rB}ztj||�SWYdd}~Xn
Xtd��dS)Nzcall did not raise exception)�	traceback�format_exception_only�
ValueError)�self�func�exc�value�r�8/opt/alt/python35/lib64/python3.5/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_indentation2cCsj|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_caretcCsUtdd�}tjt|�}|jt|�d�|j|dj�d�dS)N�error�x.py��
bad syntax�r*)r;r<Nr=)r0rrr1r2r4)rrr8rrr�test_nocaretEszTracebackCases.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_indentationcCs5t�}tj|j|�}|j|dg�dS)NzKeyboardInterrupt
)�KeyboardInterruptrr�	__class__r1)r�eZlstrrr�test_base_exceptionZs	z"TracebackCases.test_base_exceptioncCs�Gdd�dt�}tj||��}|jt|�d�d|j}|jd
kri|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�XasrLr*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	sbddl}ddl�ddl�ddl}�j�jddgd�jd�j�}|j�\}}t	|d�j
�d�����fdd�}|d	d
dd�x�dD]�}|dkr�d
}n|dkr�d}nd}|dj|�||d�|dj|�||d�|dj|�||d�q�W|ddd
d�dS)Nrz-cz&import sys; print(sys.stdout.encoding)�stdout�stderr�asciics`z�ttdd|�}|jdj||��|j��j�jtgd�jd�j�}|j	�\}}|j
��j�}Wdtt�X|j
�d�}|j
��}	dj|	�}
dj|	�}�jd	||d
dj|d
|���j|dj|
�d
j|d|
���j|d|kdj|d|��dS)N�w�encodingzq{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�close�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}s0
		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}
z0
# coding: GBK
)rUrqrrrs)�tempfilermrl�osr]r^r_r`ra�strrcr[)	rrurvrjrSrTrnrg�textr)rkrrlrmr�test_encoded_filems,0		#
		

z TracebackCases.test_encoded_filecCsPtjd�}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
r1rc)rr�rcrSrT�expectedrrr�test_print_traceback_at_exit�s		z+TracebackCases.test_print_traceback_at_exitcCsBt�}tjttd�dd|�|j|j�d�dS)NZ	projector�filezException: projector
)rr�print_exceptionrPr1�getvalue)rrirrr�test_print_exception�s	z#TracebackCases.test_print_exceptionN)rIrJrKr r$r%r&r'r(r9r?rCrGrRryrZrequires_type_collectingr~r�rrrrrs
D rc@smeZdZdd�Zeddd��Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�TracebackFormatTestscCstd��dS)NZblah)�KeyError)rrrr�some_exception�sz#TracebackFormatTests.some_exceptionNcCsddlm}y|j�Wntk
r"tj�\}}}|dk	r\||j�ddjtj	|��}t
�}|||�|j�}td��}	tj
|�WdQRXt
�}
tj
|d|
�td��}tj�WdQRXtj�}t
�}
tjd|
�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):
rorTrz&unable to create test traceback stringrtr,�	Tracebackz  Filez	    raise���)�	_testcapir�r�r�rm�exc_inforrQr�	format_tbrr�r�print_tb�	print_exc�
format_excrr1rcr2r3�
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_framessz>TracebackFormatTests.test_traceback_format_with_cleared_framescCs�td��}tjtjd��WdQRXt�}tjtjd�d|�|j|j�|j��tjtjd��}|j|j�dj	|��dS)NrTr*rro)
rr�print_stackrm�	_getframerr1r��format_stackrQ)rZststderrZstfileZstfmtrrr�test_stack_formats	z&TracebackFormatTests.test_stack_formatcCs�dd�}td��}|�WdQRX|jj}|j|j�j�dd�dt|dfddt|d	fd
g�dS)NcSstj�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_firstlinenor1r�rc�__file__)rr�rTrhrrr�test_print_stack!sz%TracebackFormatTests.test_print_stackcCsadd�}|�}|jj}|j|dd�dt|dfdt|dfg�dS)NcSs
tj�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��resultrhrrr�test_format_stack.s	z&TracebackFormatTests.test_format_stack)rIrJrKr�r	r�r�r�r�r�r�rrrrr��s,

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@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�BaseExceptionReportingTestscCsNt|t�r|Sy|�Wn)tk
rI}z	|SWYdd}~XnXdS)N)�
isinstancerP)rZexception_or_callablerFrrr�
get_exceptionIsz)BaseExceptionReportingTests.get_exceptioncCsdddS)Nr*rr)rrrr�zero_divQsz$BaseExceptionReportingTests.zero_divcCs_|j�}|j|djd��|jd|d�|j|d	jd�|d
�dS)Nr>z  Filez1/0 # In zero_divr,r*�ZeroDivisionError���r����r�)rcr3r�r5)r�msg�linesrrr�check_zero_divTsz*BaseExceptionReportingTests.check_zero_divcCs�yddWn+tk
r9}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_reportrcr1r2r3r�r5)r�_rFr�rrr�test_simpleZsz'BaseExceptionReportingTests.test_simplecs��fdd���fdd�}tj�j|��}�jt|�d��j|dt��j|d��jd|d	�dS)
NcsCy�j�Wn.tk
r>}zt|�WYdd}~XnXdS)N)r�r�r�)rF)rrr�inner_raisegsz;BaseExceptionReportingTests.test_cause.<locals>.inner_raisecs��dS)Nrr)r�rr�outer_raiselsz;BaseExceptionReportingTests.test_cause.<locals>.outer_raiser>r*rzinner_raise() # Markerr,)�
boundaries�splitr�r1r2�
cause_messager�r5)rr��blocksr)r�rr�
test_causefsz&BaseExceptionReportingTests.test_causecs��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�us
z=BaseExceptionReportingTests.test_context.<locals>.inner_raisecs��dS)Nrr)r�rrr�zsz=BaseExceptionReportingTests.test_context.<locals>.outer_raiser>r*rzinner_raise() # Markerr,)r�r�r�r1r2�context_messager�r5)rr�r�r)r�rr�test_contexttsz(BaseExceptionReportingTests.test_contextcCs�y"y
t�Wntd�YnXWn+tk
rO}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�rcr1r2r3r�r5)rr�rFr�rrr�test_context_suppression�s
z4BaseExceptionReportingTests.test_context_suppressioncs��fdd���fdd�}tj�j|��}�jt|�d��j|dt��j|d��jd|d	�dS)
Ncsfy�j�Wn+tk
r;}z|}WYdd}~XnXytWntk
rat|�YnXdS)N)r�r�Zxyzzy�	NameErrorr�)Z_erF)rrrr��s
zGBaseExceptionReportingTests.test_cause_and_context.<locals>.inner_raisecs��dS)Nrr)r�rrr��szGBaseExceptionReportingTests.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_context�s	z2BaseExceptionReportingTests.test_cause_and_contextcs��fdd���fdd�}tj�j|��}�jt|�d��j|dt��jd|d��jd	|d��jd
|d��j|d�dS)Ncs~yIy�j�Wn4tk
rG}z|}t|�WYdd}~XnXWn.tk
ry}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_recursivecCsndd�}|j|�j�}|j|dd�dd�}|j|�j�}|j|dd�dS)	NcSstdd��dS)Nrorrt�hello)rorrtr�)r0rrrrrF�szFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.er,z	        ^cSstd�dS)Nzx = 5 | 4 |)r"rrrrrF�sz              ^r�r�)r�rcr1)rrFr�rrr�test_syntax_error_offset_at_eol�sz;BaseExceptionReportingTests.test_syntax_error_offset_at_eolcCs�|jtd��}|jd|�|jtd��}|jd|�|jt��}|jd|�|jtd��}|jd|�dS)NzException: None
�Nonez
Exception
ro)r�rPr5)rr8rrr�test_message_none�sz-BaseExceptionReportingTests.test_message_noneN)rIrJrKr�r�r�r�r�r�r�r�r�r�r�rrrrr�Gsr�c@seZdZdd�ZdS)�PyExcReportingTestscCs�|j|�}djtjt|�||j��}td��#}tjt|�||j�WdQRX|j|j	�|�|S)NrorT)
r�rQr�format_exception�type�
__traceback__rr�r1r�)rrF�sZsiorrrr��s!#zPyExcReportingTests.get_reportN)rIrJrKr�rrrrr��sr�c@s"eZdZedd��ZdS)�CExcReportingTestsc	CsIddlm}|j|�}td��}||�WdQRX|j�S)Nr)�exception_printrT)r�r�r�rr�)rrFr�r�rrrr��s
zCExcReportingTests.get_reportN)rIrJrKr	r�rrrrr��sr�c@s�eZdZdZdd�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 cCstd��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_raises5szLimitTests.last_raises5cCs
tj�S)N)rmr�)rrrr�last_returns_frame1szLimitTests.last_returns_frame1cCs
|j�S)N)r�)rrrr�last_returns_frame2szLimitTests.last_returns_frame2cCs
|j�S)N)r�)rrrr�last_returns_frame3szLimitTests.last_returns_frame3cCs
|j�S)N)r�)rrrr�last_returns_frame4szLimitTests.last_returns_frame4cCs
|j�S)N)r�)rrrr�last_returns_frame5szLimitTests.last_returns_frame5cs��j���fdd�}�fdd�}tjtdd���|�}�jt|�d��j|dd	�|dd��||dd
�|dd�d��j|dd�|dd	��||dd�|dd
�t|�dd��j|dd�g�t`||�|d�d	t_�j|�|dd���j|dd
�|dd���j|dd�|dd
��dt_�j|�g�dt_�j|�g�WdQRXdS)Ncstj�|�S)N)r�
extract_stack)�kwargs)rrr�extractsz.LimitTests.test_extract_stack.<locals>.extractcsp�j|d|�|d|���j||dd�||dd���jt|�t|��dS)Nr*)r1r2)Zactualr}�ignore)rrr�assertEqualExcepts$,z8LimitTests.test_extract_stack.<locals>.assertEqualExcept�tracebacklimiti�rt�limitr,�dr*rr>r�i�������i����r�i����r�i����r�r�r�r�)r�r�	swap_attrrmZ
assertGreaterr2r1r�)rr�r��nolimr)rrr�test_extract_stacks*	###1	##		zLimitTests.test_extract_stackcs�y|j�Wn'tk
r7tj�\}}�YnX�fdd�}tjtdd��r|�}|jt|�d�|j|dd�|dd��|j|dd	�|�|j|dd
�|dd��|j|dd�|�|j|dd
�g�t`|j|�|�dt_|j|�|dd��|j|dd�|dd��|j|dd�|dd��d
t_|j|�g�dt_|j|�g�WdQRXdS)Ncstj�|�S)N)r�
extract_tb)r�)rrrr�5sz+LimitTests.test_extract_tb.<locals>.extractr�i�rtr*r�r,�
rr>�r�r�i����r�r�r�)	r�rPrmr�rr�r1r2r�)r�exc_type�	exc_valuer�r�r)rr�test_extract_tb0s.
	##	##		zLimitTests.test_extract_tbcs�y|j�Wn'tk
r7tj�\���YnX���fdd�}tjtdd��r|�}|jt|�d�|j|dd�|dd��|j|dd	�|�|j|dd
�|dd��|j|dd�|�|j|dd
�g�t`|j|�|�dt_|j|�|dd��|j|dd�|dd��|j|dd�|dd��d
t_|j|�g�dt_|j|�g�WdQRXdS)Ncs tj���|�dd�S)Nr*r�)rr�)r�)r�r�rrrr�Rsz1LimitTests.test_format_exception.<locals>.extractr�i�rtr*r�r,r�rr>r�r�r�i����r�r�r�)	r�rPrmr�rr�r1r2r�)rr�r�r)r�r�rr�test_format_exceptionKs.
	##	##		z LimitTests.test_format_exceptionN)rIrJrK�__doc__r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��sr�c@s(eZdZdd�Zdd�ZdS)�MiscTracebackCasesc	s��fdd�}�fdd��dd��y|�Wntj�\}}}YnX|jjjj}|jt|j�d�tj|�|jt|j�d�dS)	Ncs��dS)Nrr)�middlerr�outerosz,MiscTracebackCases.test_clear.<locals>.outercs��dS)Nrr)�innerrrr�qsz-MiscTracebackCases.test_clear.<locals>.middlecSsd}dddS)Nr*rr)�irrrr�ssz,MiscTracebackCases.test_clear.<locals>.innerr*r)	rmr�rrr1r2rr�clear_frames)rr�r�rrZinner_framer)r�r�r�
test_clearns
zMiscTracebackCases.test_clearcCsedd�}|�}|jj}|j|d	d�t|dddft|dddfg�dS)
NcSs
tj�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�rhrrrr��s	z%MiscTracebackCases.test_extract_stackN)rIrJrKr�r�rrrrr�isr�c@s4eZdZdd�Zdd�Zdd�ZdS)�	TestFramecCs�tj�tjdt��tjddd�}|j|d�|jt|�d�|j|tjddd��|j|t|��|jt|�|�|j|j	�dS)N�fr*�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_basics�s
	zTestFrame.test_basicscCsbtj�tjddddd�}|jd|j�tjdt��|jd|j�dS)Nr�r*r��lookup_lineFz%"""Test cases for traceback module""")	r�r�rr�r1�_liner�r��line)rr�rrr�test_lazy_lines�s
zTestFrame.test_lazy_linescCs2tjddddd�}|jd|j�dS)Nr�r*r�r�)rr�r1r�)rr�rrr�test_explicit_line�szTestFrame.test_explicit_lineN)rIrJrKr�r�rrrrrr��s	r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	TestStackcCshdd�}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_stackcCseyddWn'tk
r5tj�\}}}YnXttj|��}|jt|�d�dS)Nr*r)rPrmr�rr�walk_tbr1r2)rr�rr�rrr�test_walk_tb�s
zTestStack.test_walk_tbcCs2tjjtjd��}|j|tj�dS)N)r�StackSummaryr�rZassertIsInstance)rr�rrrr��szTestStack.test_extract_stackcCs;tjjtjd�dd�}|jt|�d�dS)Nr�rt)rr
r�rr1r2)rr�rrr�test_extract_stack_limit�s!z"TestStack.test_extract_stack_limitcCs�tj�tjdt��tdd�}t|dd�}tjjt	|dfg�dd�}tj�|j
|djd�dS)Nz/foo.py�methodr��lookup_linesTrz
import sys)r�r��updatecacher��	test_code�
test_framerr
r��iterr1r�)r�cr�r�rrr�test_extract_stack_lookup_lines�s
'
z)TestStack.test_extract_stack_lookup_linescCs�tj�tdd�}t|dd�}tjjt|dfg�dd�}|jitj	�tj
dt��|j|djd�dS)Nz/foo.pyrr�r
Frz
import sys)
r�r�rrrr
r�rr1�cacherr�r�)rrr�r�rrr�*test_extract_stackup_deferred_lookup_lines�s
'z4TestStack.test_extract_stackup_deferred_lookup_linescCs2tjjdg�}|jdg|j��dS)N�foo.pyr*�fredr�z*  File "foo.py", line 1, in fred
    line
)rr*rr�)rr
�	from_listr1r[)rr�rrr�test_from_list�szTestStack.test_from_listcCsNtjjdg�}d	|d<tjj|�}|jdg|j��dS)
N�foo.pyr*rr�r,rz*  File "foo.py", line 2, in fred
    line
)rr*rr�)rr,rr�)rr
rr1r[)rr�rrrr�test_from_list_edited_stack�s
z%TestStack.test_from_list_edited_stackcCs2tjjdg�}|jdg|j��dS)N�foo.pyr*rr�z*  File "foo.py", line 1, in fred
    line
)rr*rr�)rr
rr1r[)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*r��capture_localsTr�1)r�rr�rrrr
r�rr1r�)rrr�r�rrr�test_locals�s
'zTestStack.test_localscCsytjdt��tdd�}t|t�ddi�}tjjt|dfg��}|j	|dj
d�dS)Nz/foo.pyrrr*r�r)r�rr�rrrr
r�rr1r�)rrr�r�rrr�test_no_locals�s
!zTestStack.test_no_localscCsLdd�}|dd�}|jdt|jjdfg|j��dS)NcSs1d}d}tjjtjd�dddd�S)Nr*r,rTr�)rr
r�r)�k�v�a�brrr�
some_inners	z0TestStack.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[)rr'r�rrr�test_format_localsszTestStack.test_format_localsN)rIrJrKrr	r�rrrrrrr!r"r(rrrrr�s		rc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestTracebackExceptioncCs�yddWnLtk
rZtj�}tj|�}tjjtj|d��}YnX|jd|j	�|jd|j
�|jd|j�|j||j�|j|d|j
�|jt|d�t|��dS)Nr*rr,F)rPrmr�r�TracebackExceptionr
r�rr1�	__cause__�__context__�__suppress_context__�stackr�rw)rr�r�expected_stackrrr�
test_smokes
	z!TestTracebackException.test_smokecCs?dd�}y|�Wn�tk
r�}zltj�}tjjtj|d�dddddd	�|_tjj	|dddddd	�|_
WYdd}~XnX|j}|j
}|jd|j�|jd|j
�|jd|j�|j||j�|j|d
|j�|jt|d�t|��dS)NcSsdddS)Nr*rrrrrrrp#sz7TestTracebackException.test_from_exception.<locals>.foor,r�r*r
FrTr)rPrmr�rr
r�rr/r*�from_exceptionrr1r+r,r-r.r�rw)rrprFr�r/rrrr�test_from_exception!s$		1		z*TestTracebackException.test_from_exceptioncCs5yJzddWdtj�}tj|�}td�}td�|�XWnLtk
r�tj�}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)rmr�rr*rPr
r�rr1r+r,r-r.r�rw)r�exc_info_context�exc_contextr3r�rr/Z	exc_causerrrr�7s&
	z!TestTracebackException.test_causecCsy;zddWdtj�}tj|�}td��XWnLtk
r�tj�}tj|�}tjjtj|d��}YnX|jd|j	�|j||j
�|jd|j�|j||j�|j|d|j
�|jt|d�t|��dS)Nr*rzuh ohr,F)rmr�rr*rPr
r�rr1r+r,r-r.r�rw)rr4r5r�rr/rrrr�Ms"
	z#TestTracebackException.test_contextcs��fdd��y�d�WnXtk
rztj�}tj|dd�}tjjtj|d�dd�}YnX|j||j	�dS)Ncs#|r�|d�ndddS)Nr*rr)�n)�recurserrr7bsz2TestTracebackException.test_limit.<locals>.recurser�r�rtr,)
rPrmr�rr*r
r�rr1r.)rr�rr/r)r7r�
test_limitas
	!z!TestTracebackException.test_limitcCs�tj�td�}tdd�}t|dd�}t|dd�}tjt||dd�}|jitj	�tj
dt��|j|jdj
d�dS)	Nzuh ohz/foo.pyrr�r
Frz
import sys)r�r�rPrr�test_tbrr*r1rrr�r.r�)rrFrr�rrrrr�test_lookup_linesps
z(TestTracebackException.test_lookup_linescCs�tjdt��td�}tdd�}t|t�ddddi�}t|dd�}tjt||d	d
�}|j	|j
djdddd
i�dS)Nz/foo.pyzuh ohrrr*�other�stringr�rTrr z'string')r�rr�rPrrr9rr*r1r.r�)rrFrr�rrrrrr!{s!z"TestTracebackException.test_localscCs�tjdt��td�}tdd�}t|t�ddi�}t|dd�}tjt||�}|j	|j
djd�dS)Nz/foo.pyzuh ohrrr*r�r)r�rr�rPrrr9rr*r1r.r�)rrFrr�rrrrrr"�sz%TestTracebackException.test_no_localscCs>tjttd�d�}|jt|j��dg�dS)NZhavenzException: haven
)rr*rPr1rr[)rrrrr�test_traceback_header�sz,TestTracebackException.test_traceback_headerN)rIrJrKr0r2r�r�r8r:r!r"r=rrrrr)s	r)c@seZdZdd�ZdS)�MiscTestcCs�t�}dh}xftt�D]X}|jd�s||krCqtt|�}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)rIrJrKrFrrrrr>�sr>rM)+r��collectionsr�iorr�rmZunittest�reZtestrZtest.supportrrrrr	Ztest.support.script_helperr
rzrrrr9ZTestCaserr�r�r�r#�escaper�r�r�r�r�r�r�rr)r>rI�mainrrrr�<module>s>(�c%�x(`�