a 5dgX@sddlmZddlmZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z mZmZmZddlmZddlZddlZeddd gZed gd Zed gd ZGdddejZGdddejZdZdZedeeeefZGdddZ Gddde ejZ!Gddde ejZ"GdddejZ#GdddejZ$Gdd d ejZ%Gd!d"d"ejZ&Gd#d$d$ejZ'Gd%d&d&ejZ(e)d'kre*dS)() namedtuple)StringION)support)TESTFNErrorcaptured_outputunlink cpython_only ALWAYS_EQ)assert_python_okcode co_filenameco_nameframe)f_code f_globalsf_localstb)tb_frame tb_linenotb_nextc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)TracebackCasesc CsHz |Wn0|y:}zt||WYd}~Sd}~00tddS)Nzcall did not raise exception) tracebackformat_exception_only ValueError)selffuncexcvaluer//usr/local/lib/python3.9/test/test_traceback.pyget_exception_formats  "z#TracebackCases.get_exception_formatcCstddddS)Nzdef fact(x): return x! ?execcompilerrrr syntax_error_with_caret"sz&TracebackCases.syntax_error_with_caretcCstddddS)Nz1 + r"r#r$r&rrr syntax_error_with_caret_2%sz(TracebackCases.syntax_error_with_caret_2cCstddddS)Nz def spam(): print(1) print(2)r"r#r$r&rrr syntax_error_bad_indentation(sz+TracebackCases.syntax_error_bad_indentationcCstddddS)NuPython = "Ṕýţĥòñ" +r"r#r$r&rrr !syntax_error_with_caret_non_ascii+sz0TracebackCases.syntax_error_with_caret_non_asciicCstddddS)Nz print(2)r"r#r$r&rrr syntax_error_bad_indentation2.sz,TracebackCases.syntax_error_bad_indentation2cCs||jt}|t|d||ddk|d|d||dd|dd||j t}|d|d||d dd||ddd|dd||j t}|d|d||d dd||ddd|dddS) Nz return x!^! +) r!r' SyntaxError assertEquallen assertTruestripassertInfindr(countr*rerrrrr test_caret1s& $zTracebackCases.test_caretcCs>tdd}tt|}|t|d||dddS)Nerror)zx.pyN bad syntaxr-r@)r3rrr4r5r7)rrr<rrr test_nocaretEs  zTracebackCases.test_nocaretcCs||jt}|t|d||dd|d|d||ddd|dd||jt}|t|d||dddS)Nr,r-zprint(2)r.r/)rA) r!r)IndentationErrorr4r5r7r8r9r+r;rrr test_bad_indentationKs$z#TracebackCases.test_bad_indentationcCs&t}t|j|}||dgdS)NzKeyboardInterrupt )KeyboardInterruptrr __class__r4)reZlstrrr test_base_exceptionYsz"TracebackCases.test_base_exceptioncCsxGdddt}t||}|t|dd|j}|jdvrJ|j}nd|j|jg}||dd||fdS) Nc@seZdZddZdS)z?TracebackCases.test_format_exception_only_bad__str__..XcSs dddSNr-rrr&rrr __str__aszGTracebackCases.test_format_exception_only_bad__str__..X.__str__N)__name__ __module__ __qualname__rKrrrr X`srOr-z)__main__builtins.rz%s: %s ) Exceptionrrr4r5rLrMrNjoin)rrOr<Z str_valueZstr_namerrr %test_format_exception_only_bad__str___s  z4TracebackCases.test_format_exception_only_bad__str__csddlddljjddgjjd}|\}}t|ddfdd}|dd dd d D]`}|dkrd }n|d krd }nd}|d |||d|d |||d|d |||dqn|dddddS)Nr-cz&import sys; print(sys.stdout.encoding)stdoutstderrasciic szttd|d"}|d||Wdn1s80Yjjtgjjd}|\}}|  }Wt tn t t0| d}| } d| } d| }  d||d d |d ||d | d |d | |d | kd|d | dS)Nw)encodingz}{0}if 1: import traceback; raise RuntimeError('{1}') rWbackslashreplacezraise 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}rAz-Invalid error message: {0!r} instead of {1!r})openrwriteformatPopen executablePIPESTDOUT communicatedecode splitlinesrencoder8r6endswith) Z firstlinesmessagecharsetlinenooutputprocessrXrYZencoded_messageZ message_asciiZerr_lineerr_msgZoutput_encodingr subprocesssysrr do_test|s@$     z1TracebackCases.test_encoded_file..do_testfoorA)rZz iso-8859-1utf-8GBKrwu丂儀uhé hoz# coding: {0} r,z#!shebang # coding: {0} z # coding: {0} zx=0 # coding: GBK rv) rrrqrarbrcrdrestrrgr`)rrnrXrYrsrktextrrpr test_encoded_filels6  #   z TracebackCases.test_encoded_filecCs6td}td|\}}}gd}|||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() rV)s"Traceback (most recent call last):s& File "", line 8, in __init__s#ZeroDivisionError: division by zero)textwrapdedentr r4rg)rr rcrXrYexpectedrrr test_print_traceback_at_exits z+TracebackCases.test_print_traceback_at_exitcCs0t}tjttdd|d||ddS)NZ projectorfilezException: projector )rrprint_exceptionrSr4getvalue)rrmrrr test_print_exceptions  z#TracebackCases.test_print_exceptionN)rLrMrNr!r'r(r)r*r+r=rBrErIrUr{rrrrrr rs Drc@sreZdZddZedddZddZdd Zd d Zd d Z ddZ ddZ eddZ ddZ eddZdS)TracebackFormatTestscCs tddS)NZblah)KeyErrorr&rrr some_exceptionsz#TracebackFormatTests.some_exceptionNc Csddlm}z |Wntyt\}}}|durH||jddt |}t }|||| }t d} t |Wdn1s0Yt } tj || dt d} tWdn1s0Yt} t } tj| dYn 0td||||| | || | || | |}|t|d|d}|d d\}}||d ||d ||d dS) Nr)traceback_printz#Traceback (most recent call last): rtrYrz&unable to create test traceback stringrx Traceback Filez raise) _testcapirrrrrexc_inforrTr format_tbrrrprint_tb print_exc format_excrr4rgr5r6 startswith)rZ cleanup_funcrtype_rrZ traceback_fmtZfile_Z python_fmtZtbstderrZtbfileZ excstderrZexcfmtZexcfileZtb_linesZbannerlocationZ source_linerrr check_traceback_formatsD     ( & z+TracebackFormatTests.check_traceback_formatcCs |dSNrr&rrr test_traceback_format sz*TracebackFormatTests.test_traceback_formatcCsdd}||dS)NcSs|jdSr)rclearrrrr cleanup_tbszRTracebackFormatTests.test_traceback_format_with_cleared_frames..cleanup_tbr)rrrrr )test_traceback_format_with_cleared_frames sz>TracebackFormatTests.test_traceback_format_with_cleared_framescCstd }ttdWdn1s.0Yt}tjtd|d|||ttd}||d |dS)NrYr-rrt) rr print_stackrr _getframerr4r format_stackrT)rZststderrZstfileZstfmtrrr test_stack_formats .z&TracebackFormatTests.test_stack_formatc Cs~dd}td}|Wdn1s,0Y|jj}||dddt|dfddt|d fd gdS) NcSs tdSr)rrrrrr prn sz2TracebackFormatTests.test_print_stack..prnrYz) File "%s", line %d, in test_print_stackrAz prn()z File "%s", line %d, in prnr-z traceback.print_stack())r__code__co_firstlinenor4rrg__file__)rrrYrlrrr test_print_stacks $z%TracebackFormatTests.test_print_stackcsd|_fddtd>}z Wnty>|Yn 0|dWdn1s^0Yjj}dtd|ddtd|d d td|d d td|d d }|}|}| |dd |dd | |d |d | |d |d t }| ttd|d t|d|d(fdd td@}z Wnty||Yn 0|dWdn1s0Yjj} dtd| ddtd| ddtd| ddtd| dd} dtd| dd} | | }|}| ||d)fdd td@} z Wntyn|Yn 0|dWdn1s0Yjj} dtd| ddtd| ddtd| ddtd| dd td| dd!}|| }| }| ||tdD}ztjWntyN|Yn 0|d"Wdn1sp0Ydtd| ddtd| ddtd| ddtd| dd} dtd| d#d$} | | }|}| ||tdH}ztjd Wnty0|Yn 0|d"Wdn1sR0Ydtd| ddtd| ddtd| dd%td| dd} dtd| d&d'} | | }|}| ||dS)*Ncs dSrrr)frr r4szBTracebackFormatTests._check_recursive_traceback_display..frYzno recursion occurredz+Traceback (most recent call last): File "z", line rxz8, 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 rz\d+< cs|r|dStdSNr-rr:)grr ras zBTracebackFormatTests._check_recursive_traceback_display..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 "rAz', in g raise ValueError ValueError z0, in _check_recursive_traceback_display g() cs|r|dSdSrrr)rhrr rs zBTracebackFormatTests._check_recursive_traceback_display..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 raisedGzK, 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)ZmaxDiffrRecursionErrorZfailrrrrgrr4Z assertRegexr8rrgetrecursionlimitintresearchgrouprangerr_RECURSIVE_CUTOFF)r render_excstderr_fZlineno_fZresult_fractualZ rec_limitZstderr_gZlineno_gZresult_gZtb_lineZstderr_hZlineno_hZresult_hr)rrrr "_check_recursive_traceback_display-s8     ( *   *       *       *      *   z7TracebackFormatTests._check_recursive_traceback_displaycCs|tjdSr)rrrr&rrr test_recursive_traceback_pythonsz4TracebackFormatTests.test_recursive_traceback_pythoncs&ddlmfdd}||dS)Nrexception_printcst\}}}|dSr)rrr)exc_type exc_valueexc_tbrrr rszRTracebackFormatTests.test_recursive_traceback_cpython_internal..render_exc)rrr)rrrrr )test_recursive_traceback_cpython_internals  z>TracebackFormatTests.test_recursive_traceback_cpython_internalcCsJdd}|}|jj}||dddt|dfdt|dfgdS)NcSstSr)rrrrrr fmtsz3TracebackFormatTests.test_format_stack..fmtrz> File "%s", line %d, in test_format_stack result = fmt() r/zA File "%s", line %d, in fmt return traceback.format_stack() r-)rrr4r)rrresultrlrrr test_format_stacks  z&TracebackFormatTests.test_format_stackc Csddlm}Gdddt}|d}|d}z ||Wn<|yrz|Wn |ylt\}}}Yn0Yn0td}||Wdn1s0Y|} | dt | | t | d | d | d | d | d dS)Nrrc@seZdZddZdS)zATracebackFormatTests.test_unhashable..UnhashableExceptioncSsdSNTrrotherrrr __eq__szHTracebackFormatTests.test_unhashable..UnhashableException.__eq__NrLrMrNrrrrr UnhashableExceptionsrex1ex2rY rxzUnhashableException: ex2rAzUnhashableException: ex1r) rrrSrrrrrr7rgr4r5context_messager8) rrrrrrexc_valrrrrrr test_unhashables$     &z$TracebackFormatTests.test_unhashable)N)rLrMrNrr rrrrrrrrrrrrrr rs , 2  rzG 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@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ e edddZddZddZddZdS)BaseExceptionReportingTestsc CsFt|tr|Sz |Wn(ty@}z|WYd}~Sd}~00dSr) isinstancerS)rZexception_or_callablerHrrr get_exceptions   z)BaseExceptionReportingTests.get_exceptioncCs dddSrJrr&rrr zero_div'sz$BaseExceptionReportingTests.zero_divcCsJ|}||dd|d|d||dd|ddS)Nrz1/0 # In zero_divrrZeroDivisionError)rgr6rr8)rmsglinesrrr check_zero_div*sz*BaseExceptionReportingTests.check_zero_divc Csz ddWn(ty4}z|}WYd}~n d}~00||}|t|d||dd||dd|d|d||dd dS) Nr-rr,rrz 1/0 # Markerr/rAr)r get_reportrgr4r5r6rr8r_rHrrrr test_simple0s z'BaseExceptionReportingTests.test_simplecsjfddfdd}t|}t|d|dt|dd|d dS) Nc s<z Wn*ty6}zt|WYd}~n d}~00dSrrrr)rHr&rr inner_raise=s z;BaseExceptionReportingTests.test_cause..inner_raisecs dSrrrrrr outer_raiseBsz;BaseExceptionReportingTests.test_cause..outer_raiserAr-rinner_raise() # Markerr/ boundariessplitrr4r5 cause_messagerr8rrZblocksrrrr test_cause<s  z&BaseExceptionReportingTests.test_causecsjfddfdd}t|}t|d|dt|dd|d dS) Ncs(z Wnty"tYn0dSrrrr&rr rKs  z=BaseExceptionReportingTests.test_context..inner_raisecs dSrrrrrr rPsz=BaseExceptionReportingTests.test_context..outer_raiserAr-rrr/)rrrr4r5rrr8rrrr test_contextJs  z(BaseExceptionReportingTests.test_contextc Csz ztWntdYn0Wn(tyH}z|}WYd}~n d}~00||}|t|d||dd||dd|d|d||dd dS) Nr,rrr-rzZeroDivisionError from Noner/rAr) rSrrrgr4r5r6rr8rrrr test_context_suppressionXsz4BaseExceptionReportingTests.test_context_suppressioncsjfddfdd}t|}t|d|dt|dd|d dS) Nc s\z Wn(ty4}z|}WYd}~n d}~00ztWntyVt|Yn0dSr)rrZxyzzy NameErrorr)_erHr&rr rjs  zGBaseExceptionReportingTests.test_cause_and_context..inner_raisecs dSrrrrrr rsszGBaseExceptionReportingTests.test_cause_and_context..outer_raiserAr-rrr/rrrrr test_cause_and_contextgs z2BaseExceptionReportingTests.test_cause_and_contextcsfddfdd}t|}t|d|dtd|dd |dd |d |d dS) Nc spz@z Wn.ty<}z|}t|WYd}~n d}~00Wn*tyj}z||WYd}~n d}~00dSrr)rHzr&rr r|s  zEBaseExceptionReportingTests.test_cause_recursive..inner_raisecs dSrrrrrr rszEBaseExceptionReportingTests.test_cause_recursive..outer_raiserAr-zraise KeyError from erz1/0rr/) rrrr4r5rr8Z assertNotInrrrrr test_cause_recursive{s z0BaseExceptionReportingTests.test_cause_recursivez5Pegen is arguably better here, so no need to fix thiscCsPdd}||}||dddd}||}||dddS)NcSstdddS)Nrt)rtrrxZhello)r3rrrr rHszFBaseExceptionReportingTests.test_syntax_error_offset_at_eol..erz ^cSs tddS)Nz x = 5 | 4 |)r#rrrr rHsz ^)rrgr4rrHrrrr test_syntax_error_offset_at_eols z;BaseExceptionReportingTests.test_syntax_error_offset_at_eolcCstd}||}||dgd|_||}||ddgtd}d|_||}||dgd|_||}||ddgdS)Nr@zSyntaxError: bad syntaxdz File "", line 100z myfile.pyz#SyntaxError: bad syntax (myfile.py)z File "myfile.py", line 100)r3rrgr4rlfilenamerrrr test_syntax_error_no_linenos*z7BaseExceptionReportingTests.test_syntax_error_no_linenocCsj|td}|d||td}|d||t}|d||td}|d|dS)NzException: None Nonez Exception rt)rrSr8r;rrr test_message_nones    z-BaseExceptionReportingTests.test_message_nonec CstddD]}dD]}d|d|}dg}|dkrH|d|nR|d krz|d||d d|dn |d||d d |d |d |tddd|||f}d|}|||qq dS)Nr)rr/ ztext%dz File "file.py", line 1r-z %sz %s^z zSyntaxError: msgrtrzfile.pyr1)rappendlstriprr3rTr4)roffsetaddrzrr<exprrr !test_syntax_error_various_offsetss    z=BaseExceptionReportingTests.test_syntax_error_various_offsetsN)rLrMrNrrrrrrrrrunittestZskipIfrZuse_old_parserrrrrrrrr rs   rc@seZdZddZdS)PyExcReportingTestscCst||}dtt|||j}td$}tt|||jWdn1sV0Y|| ||S)NrtrY) rrTrformat_exceptiontype __traceback__rrr4r)rrHssiorrr rs  2zPyExcReportingTests.get_reportN)rLrMrNrrrrr rsrc@seZdZeddZdS)CExcReportingTestscCsNddlm}||}td}||Wdn1s<0Y|S)NrrrY)rrrrr)rrHrr rrr rs    &zCExcReportingTests.get_reportN)rLrMrNr rrrrr r sr c@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS) LimitTestscCs tddS)Nz Last raised)rSr&rrr last_raises1szLimitTests.last_raises1cCs |dSr)rr&rrr last_raises2szLimitTests.last_raises2cCs |dSr)rr&rrr last_raises3szLimitTests.last_raises3cCs |dSr)rr&rrr last_raises4szLimitTests.last_raises4cCs |dSr)rr&rrr last_raises5szLimitTests.last_raises5cCstSr)rrrr&rrr last_returns_frame1szLimitTests.last_returns_frame1cCs|Sr)rr&rrr last_returns_frame2 szLimitTests.last_returns_frame2cCs|Sr)rr&rrr last_returns_frame3szLimitTests.last_returns_frame3cCs|Sr)rr&rrr last_returns_frame4szLimitTests.last_returns_frame4cCs|Sr)rr&rrr last_returns_frame5szLimitTests.last_returns_frame5cs|fdd}fdd}ttdd6|}t|d|dd |d d||d d |d dd |d d |dd||d d |dd t|dd|dd gt`|||d dt_||d d|dd |dd|dd |dddt_|gdt_|gWdn1sn0YdS)Ncstjfi|Srr extract_stackkwargs)rrr extractsz.LimitTests.test_extract_stack..extractcsX|d||d|||dd||ddt|t|dSr)r4r5)rrignorer&rr assertEqualExcepts$z8LimitTests.test_extract_stack..assertEqualExcepttracebacklimitrxr/limitrriir-rrArr)rr swap_attrrrZ assertGreaterr5r4r )rrrnolimr)rrr test_extract_stacks*  &zLimitTests.test_extract_stackcszz |Wn ty,t\}}Yn0fdd}ttdd|}|t|d||dd|dd||dd|||d d|d d||d d|||d dgt`|||dt_|||dd||d d|dd ||d d|d dd t_||gdt_||gWdn1sl0YdS)Ncstjfi|Sr)r extract_tbrrrr r8sz+LimitTests.test_extract_tb..extractr r!rr/r"rrrrArr rrSrrrrr$r4r5r )rrrrr%rrr test_extract_tb3s.   zLimitTests.test_extract_tbcs~z |Wn ty,t\Yn0fdd}ttdd|}|t|d||dd|dd||dd|||d d|d d||d d|||d dgt`|||dt_|||dd||d d|dd ||d d|d dd t_||gdt_||gWdn1sp0YdS)Ncstjfi|ddS)Nr-r)rrrrrrrr rUsz1LimitTests.test_format_exception..extractr r!rr/r"rrr(rrArrr))rrr%rr+r test_format_exceptionNs.  z LimitTests.test_format_exceptionN)rLrMrNrrrrrrrrrrr&r*r,rrrr rsrc@seZdZddZddZdS)MiscTracebackCasescsfdd}fddddz |Wnt\}}}Yn0|jjjj}|t|jdt||t|jddS) Ncs dSrrr)middlerr outerrsz,MiscTracebackCases.test_clear..outercs dSrrr)innerrr r.tsz-MiscTracebackCases.test_clear..middlecSsd}dddSrJr)irrr r0vsz,MiscTracebackCases.test_clear..innerr-r) rrrrrr4r5rr clear_frames)rr/rrrZ inner_framer)r0r.r test_clearqs     zMiscTracebackCases.test_clearcCs^dd}|}|jj}||ddt|dddft|ddd fg|t|d d dS) NcSstSrrrrrr rsz6MiscTracebackCases.test_extract_stack..extractrr/r&zresult = extract()r-rz return traceback.extract_stack()rr,)rrr4rr5)rrrrlrrr r&sz%MiscTracebackCases.test_extract_stackN)rLrMrNr3r&rrrr r-lsr-c@s,eZdZddZddZddZddZd S) TestFramecCsttdttddd}||d|t|d||tddd||t||t||||j | |t ||t dS)Nrr-dummy)rr-r5%"""Test cases for traceback module""") linecache clearcache lazycacheglobalsr FrameSummaryr4tupleZ assertIsNonelocalsassertNotEqualobjectr rrrrr test_basicss  zTestFrame.test_basicscCsHttjddddd}|d|jtdt|d|jdS)Nrr-r5F) lookup_liner6) r7r8rr;r4_liner9r:liner@rrr test_lazy_linesszTestFrame.test_lazy_linescCs$tjddddd}|d|jdS)Nrr-r5rDrD)rr;r4rDr@rrr test_explicit_lineszTestFrame.test_explicit_linecCs&tjddddd}|t|ddS)Nrr-r5rDrFr,)rr;r4r5r@rrr test_lenszTestFrame.test_lenN)rLrMrNrArErGrHrrrr r4s r4c@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) TestStackcCsLdd}ttd}|}|t|t|d||dd|dS)NcSsttdSr)listr walk_stackrrrr deepersz)TestStack.test_walk_stack..deeperr-)rJrrKr4r5)rrLs1s2rrr test_walk_stacks zTestStack.test_walk_stackcCsPz ddWn ty,t\}}}Yn0tt|}|t|ddSrJ)rSrrrrJrwalk_tbr4r5)rrrr rrr test_walk_tbs   zTestStack.test_walk_tbcCs$tjtd}||tjdSr)r StackSummaryrrKZassertIsInstancerr rrr r&szTestStack.test_extract_stackcCs*tjjtddd}|t|ddS)Nrxr")rrRrrKr4r5rSrrr test_extract_stack_limitsz"TestStack.test_extract_stack_limitcCsdttdttdd}t|dd}tjjt |dfgdd}t| |dj ddS)N/foo.pymethodrT lookup_linesr import sys) r7r8 updatecacher: test_code test_framerrRriterr4rDrcrr rrr test_extract_stack_lookup_liness  z)TestStack.test_extract_stack_lookup_linescCsjttdd}t|dd}tjjt|dfgdd}|itj t dt ||dj ddS)NrUrVrFrWrrY) r7r8r[r\rrRrr]r4cacherZr:rDr^rrr *test_extract_stackup_deferred_lookup_liness  z4TestStack.test_extract_stackup_deferred_lookup_linescCs$tjdg}|dg|dSNfoo.pyr-fredrDz* File "foo.py", line 1, in fred line rrR from_listr4r`rSrrr test_from_lists zTestStack.test_from_listcCs8tjdg}d|d<tj|}|dg|dS)Nrd)rer/rfrDrz* File "foo.py", line 2, in fred line rg)rr rNrrr test_from_list_edited_stacks z%TestStack.test_from_list_edited_stackcCs$tjdg}|dg|dSrcrgrSrrr test_format_smokes zTestStack.test_format_smokecCs^tdttdd}t|tddi}tjjt|dfgdd}| |dj dd idS) NrUrV somethingr-rTcapture_localsr1 r7rZr:r[r\rrRrr]r4r=r^rrr test_localss  zTestStack.test_localscCsVtdttdd}t|tddi}tjt|dfg}| |dj ddS)NrUrVrlr-rrrpr^rrr test_no_localss  zTestStack.test_no_localscCs8dd}|dd}|dt|jjdfg|dS)NcSs d}d}tjjtddddS)Nr-r/T)rnr#)rrRrrK)kvabrrr some_inner s  z0TestStack.test_format_locals..some_innerrAr,zw File "%s", line %d, in some_inner return traceback.StackSummary.extract( a = 1 b = 2 k = 3 v = 4 )r4rrrr`)rrwr rrr test_format_locals s zTestStack.test_format_localsN)rLrMrNrOrQr&rTr`rbrirjrkrqrrrxrrrr rIs  rIc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)TestTracebackExceptionc Csz ddWn:tyFt}tj|}tjt|d}Yn0|d|j |d|j |d|j |||j ||d|j |t|dt|dS)Nr-rr/F)rSrrrrTracebackExceptionrRrrPr4 __cause__ __context____suppress_context__stackrryrrrexpected_stackrrr test_smokes    z!TestTracebackException.test_smokec Csdd}z |Wnbtyt}zJt}tjjt|ddddd|_tjj |dddd|_ WYd}~n d}~00|j}|j }| d|j | d|j | d|j| ||j| |d|j| t|dt|dS) NcSs dddSrJrrrrr ru-sz7TestTracebackException.test_from_exception..foor/r-FT)r#rXrnr)rSrrrrrRrrPrrzfrom_exceptionrr4r{r|r}r~rry)rrurHrrrrrr test_from_exception+s( z*TestTracebackException.test_from_exceptionc Cs z\z0ddWt}tj|}td}td|n&t}tj|}td}td|0Wn:tyt}tj|}tjt|d}Yn0tt|d}|||j |||j |d|j |||j ||d|j |t|dt|dS)Nr-rcauseuh ohr/TrrrrrzrSrRrrPr4r{r|r}r~rry)rexc_info_context exc_contextrrrrZ exc_causerrr rAs0       z!TestTracebackException.test_causec CszHz&ddWt}tj|}tdnt}tj|}td0Wn:tyt}tj|}tjt|d}Yn0|d|j |||j |d|j |||j ||d|j |t|dt|dS)Nr-rrr/Fr)rrrrrrrrr rWs*       z#TestTracebackException.test_contextcCs~z ddWnty&t}Yn0t|d}t|d}tj|}|t|d||t|d|dS)Nr-rr/)rSrrr getrefcountrrzr4)rrZrefcnt1Zrefcnt2rrrr /test_no_refs_to_exception_and_traceback_objectsks   zFTestTracebackException.test_no_refs_to_exception_and_traceback_objectscCsrz ddWn.ty:t}tj|}tj|}Yn0||||||||t||t dSrJ) rSrrrrrzZ assertIsNotr4r>r?r )rrrexc2rrr test_comparison_basicws     z,TestTracebackException.test_comparison_basicc sddfdd}z |Wnty8t}Yn0tj|}tj|ddi}tj|ddi}||||||tj|dd i}|||tj|dd i}tj|d d d }|||tj|dd i} tj|d d d } || | dS) NcSs z tdWnYn0dS)Nz bad valuerrrrr raise_excs zKTestTracebackException.test_comparison_params_variations..raise_exccsd\}}dS)N)r-r/r)xyrrr raise_with_localsszSTestTracebackException.test_comparison_params_variations..raise_with_localsr#rr/rnTr)r#rnr)rSrrrrrzr4r>) rrrrZexc1rZexc3Zexc4Zexc5Zexc6Zexc7rrr !test_comparison_params_variationss&        z8TestTracebackException.test_comparison_params_variationsc Cs|g}tdD]2}z ddWq |tjtYq 0q ||d|d|t|dt|ddS)Nr/r-r) rrrrzrrrr4rJr`)rZexcsrrrr /test_comparison_equivalent_exceptions_are_equals  zFTestTracebackException.test_comparison_equivalent_exceptions_are_equalc CsGdddt}|d}|d}z ||Wn6|y`z|Wn|yZt}Yn0Yn0tj|}t|}|d|d|d|ddS) Nc@seZdZddZdS)zCTestTracebackException.test_unhashable..UnhashableExceptioncSsdSrrrrrr rszJTestTracebackException.test_unhashable..UnhashableException.__eq__Nrrrrr rsrrrzUnhashableException: ex2 r/zUnhashableException: ex1 r)rSrrrrrzrJr`r8)rrrrrr formattedrrr rs     z&TestTracebackException.test_unhashablecspfddz dWnDty\t}tj|ddi}tjjt|ddd}Yn0|||j dS)Ncs|r|dndddSrJr)nrecurserr rsz2TestTracebackException.test_limit..recurserr#rxr/r") rSrrrrrzrRrrPr4r~rrrr test_limits    z!TestTracebackException.test_limitcCsxttd}tdd}t|dd}t|dd}tjt||dd}|tj it dt ||j dj ddS) NrrUrVrFrWrrY)r7r8rSr[r\test_tbrrzr4rarZr:r~rDrrHr_rrrrrr test_lookup_liness   z(TestTracebackException.test_lookup_linescCsptdttd}tdd}t|tddd}t|dd}tjt||dd }| |j d j d d ddS) NrUrrVr-string)rlrrTrmrroz'string' r7rZr:rSr[r\rrrzr4r~r=rrrr rqs  z"TestTracebackException.test_localscCsdtdttd}tdd}t|tddi}t|dd}tt||}| |j dj ddS)NrUrrVrlr-rrrrrrr rrs  z%TestTracebackException.test_no_localscCs,tttdd}|t|dgdS)NZhavenzException: haven )rrzrSr4rJr`)rrrrr test_traceback_headersz,TestTracebackException.test_traceback_headerN)rLrMrNrrrrrrrrrrrrqrrrrrrr rys  %    ryc@seZdZddZdS)MiscTestcCsdt}dh}ttD]<}|ds||vr,qtt|}t|dddkr||q|tj|dS)N print_listrrMr)setdirrrgetattrrZassertCountEqual__all__)rrZ blacklistnameZ module_objectrrr test_alls   zMiscTest.test_allN)rLrMrNrrrrr rsrrP)+ collectionsriorr7rrrrtestrZ test.supportrrrrr r Ztest.support.script_helperr r|rr[r\rZTestCaserrrrr%escaperrrr rr-r4rIryrrLmainrrrr sL     B=:x)%`a