{G_Tc@sddlmZddlZddlZddlZddlZdZdIdJdKge_d ZdLdMdNdOdPge_d Z dQdRdSdTdUge _dZ dVdWdXdYdZd[d\d]d^d_g e _dZ d`dadbdcddge _dZ dZ dedfdgdhdidjge _dZdZdkdldmdndodpdqdrdsdtdug e_dZdZdvge_dZdZdwdxdydzge_dZd{d|d}d~dddge_dZdddddddddddddg e_d Zddddddddddddg e_d!Zd"Zddddddddddg ddgd&ddge_d'dd(YZd)ejfd*YZd+ejfd,YZd-dd.YZd/Zde_d ge_ d0Z!de!_ddd ge!_ d1Z"de"_d d ge"_ d2Z#de#_dd d dd d ddge#_ d3Z$de$_d ge$_ d4Z%de%_dd d ge%_ d5Z&de&_d d6ge&_ d7Z'de'_d e(ge'_ d8Z)de)_d e(ge)_ d9Z*de*_e(ge*_ d:Z+de+_e(ge+_ d;Z,de,_e(ge,_ d<Z-de-_e(ge-_ d=Z.de._e(ge._ d>Z/de/_d d e(ge/_ d?Z0de0_d de(ge0_ d@Z1de1_d e(ge1_ dAZ2de2_e(ge2_ dCZ3de3_ge3_ dDZ4dEejfdFYZ5dGZ6e7dHkre6ndS(i(t test_supportNcCsdS(Ni((((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytbasic sitcallitlinetreturncCsd}~d}dS(Ni((tx((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt arigo_examplesiicCsd}~d}dS(Ni((R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytone_instr_line(sicCs6d}x)tdD]}|r(d}qd}qWdS(Nii(trange(Rta((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt no_pop_tops3s  iicCs!d}x|stq Wd}dS(Ni(tbla(tyR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt no_pop_blocksFs cCs d}dS(Ni((R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytcalledRscCs tdS(N(R(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRUsiicCs tdS(N(t Exception(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytraises_scCs+y tWntk r&}d}nXdS(Ni(RR(texcR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_raisebs t exceptioncCs#tj||tjj_dS(N(tsystsettracet _getframetf_backtf_trace(t tracefunc((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt_settrace_and_returnts cCst|dS(N(R(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytsettrace_and_returnwscCs)tj||tjj_tdS(N(RRRRRt RuntimeError(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt_settrace_and_raise|s cCs(yt|Wntk r#}nXdS(N(RR(RR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytsettrace_and_raisescCs)d}d}||kr%|d}ndS(Nii((R tb((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytireturn_examples   cCsKtdd}y$d}x||}|d7}qWntk rFnXdS(Niii(Rt IndexError(titemstiR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttightloop_examples  icCsAtdd}yd}x ||}qWntk r<nXdS(Niii(RR!(R"R#((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttighterloop_examples ccsz tVWdXdS(N(tTrue(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytgenerator_functionscCs0tt}xtdD] }|}qWdS(Ni (tanyR'R(RR ((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytgenerator_examplesiiii tTracercBs#eZdZdZdZRS(cCs g|_dS(N(tevents(tself((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt__init__scCs |jj|j|f|jS(N(R+tappendtf_linenottrace(R,tframeteventtarg((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR0scCs1ddgD|jj|j|f|jS(Ncss|] }|VqdS(N((t.0to((s2/usr/local/lib/python2.7/test/test_sys_settrace.pys si(R+R.R/R0(R,R1R2R3((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttraceWithGenexps(t__name__t __module__R-R0R6(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR*s  t TraceTestCasecBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZRS(cCstj|_tjdS(N(tgct isenabledtusing_gctdisable(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytsetUpscCs|jrtjndS(N(R<R:tenable(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttearDowns c Csg|D]\}}|||f^q}||kr|jddjtjg|D]}t|^qQg|D]}t|^qmndS(Ns"events did not match expectation: s (tfailtjointdifflibtndifftstr(R,t line_offsetR+texpected_eventstlteR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytcompare_eventss ) (cCsMt}tj|j|tjd|j|jj|j|dS(N( R*RRR0tNoneRJt func_codetco_firstlinenoR+(R,tfuncR+ttracer((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytrun_and_compare s   cCs|j||jdS(N(RPR+(R,RN((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytrun_testscCsFt}||jtjd|j|jj|j|jdS(N( R*R0RRRKRJRLRMR+(R,RNRO((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt run_test2s    cCstjddS(N(RRRK(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_set_and_retrieve_nones cCs/d}tj|zWdtjdXdS(NcWsdS(N((targs((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytfn"s(RRRK(R,RU((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_set_and_retrieve_func!s   cCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_01_basic+scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_02_arigo-scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_03_one_instr/scCs|jtdS(N(RQR (R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_04_no_pop_blocks1scCs|jtdS(N(RQR (R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_05_no_pop_tops3scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_06_call5scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_07_raise7scCs|jtdS(N(RRR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_08_settrace_and_return:scCs|jtdS(N(RRR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_09_settrace_and_raise<scCs|jtdS(N(RQR (R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_10_ireturn>scCs|jtdS(N(RQR$(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_11_tightloop@scCs|jtdS(N(RQR%(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_12_tighterloopBscCs]|jtt}tj|jttjd|jtjj |j tj dS(N( RQR)R*RRR6RKRJt__code__RMR+(R,RO((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_13_genexpEs   cCs)d}|j|dd d d gdS( NcSstr tntdS(Ni(R&tFalse(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytonlinersSsiRiRiR(iscall(isline(isline(iR(RP(R,Rf((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_14_onliner_ifRs c Cscd}|j|d d d ddddgd}|j|ddddddddgdS(NcSsxtdD]}q WdS(Ni(R(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt for_example`siRiRiRcSs'd}x|dkr"|d8}q WdS(Niii((R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt while_examplemsii(iscall(isline(isline(isline(isline(isline(isreturn(iscall(isline(isline(isline(isline(isline(isline(isreturn(RP(R,RhRi((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_15_loops^s*   cBs1dddddU|jed d d gdS( Ns def f(): s is passiRiRR(iscall(isline(isreturn(RPtf(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_16_blank_lines}s (R7R8R>R@RJRPRQRRRSRVRWRXRYRZR[R\R]R^R_R`RaRbRdRgRjRl(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR9s0                    tRaisingTraceFuncTestCasecBsPeZdZdZdZdZdZdZdZdZ RS(cCs#||jkrtn|jSdS(sXA trace function that raises an exception in response to a specific trace event.N(t raiseOnEventt ValueErrorR0(R,R1R2R3((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR0s cCs*|jdkr"d}d|}ndSdS(sThe function to trace; raises an exception if that's the case we're testing, so that the 'exception' trace event fires.RiiN(Rn(R,RR ((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRks cCs||_ydx]ttjdD]E}tj|jy|jWntk rZq#X|jdq#WWnt k r|jdnXdS(sTTests that an exception raised in response to the given event is handled OK.isexception not raised!srecursion counter not resetN( RntxrangeRtgetrecursionlimitRR0RkRoRAR(R,R2R#((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytrun_test_for_events   cCs|jddS(NR(Rr(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_callscCs|jddS(NR(Rr(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_linescCs|jddS(NR(Rr(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_returnscCs|jddS(NR(Rr(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_exceptionscsndfdtjy Wn'tk r\ddl}|jnX|jddS(NcSs xtdD] }|GHq WdS(Ni(R(R#((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRkscs5|dkr1|jjjdkr1tdnS(NRis i am crashing(R/RLRMR(R1twhytextra(Rktg(s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRys  isexception not propagated(RRRR:tcollectRA(R,R:((RkRys2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_trash_stacks     ( R7R8R0RkRrRsRtRuRvR{(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRms      t JumpTracercBs eZdZdZdZRS(sDefines a trace function that jumps from one place to another, with the source and destination lines of the jump being defined by the 'jump' property of the function under test.cCs6||_|jd|_|jd|_t|_dS(Nii(tfunctiontjumptjumpFromtjumpToRetdone(R,R}((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR-s cCs|j r|j|jjkr|jj}|dkr|j||jkry||j|_Wntk r|j|_nXt |_qn|j S(NR( Rtf_codeR}RLRMR/RRt TypeErrorR&R0(R,R1R2R3t firstLine((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR0s " (R7R8t__doc__R-R0(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR|s cCs+|jd|jd|jddS(Niii(R.(toutput((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_simple_forwardss  cCs|jd|jddS(Nii(R.(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_simple_backwardss cCsPx<dD]4}|jdxdgD]}|jdq$WqW|jddS(Niiiii(ii(R.(RR#tj((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_out_of_block_forwardss   cCsm|jdxLdgD]A}|jdxdgD]}|jdq4W|jdqW|jddS(Niiiiii(R.(RR#R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_out_of_block_backwardss  cCs|jd|jddS(Nii(R.(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_to_codeless_line s cCs+|jd|jd|jddS(Niii(R.(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_to_same_lines  cCsUz|jdWd|jdz|jdWd|jdX|jdXdS(Niiiii (R.(R((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_in_nested_finallys i cCsQy|jd|jdWn,tk rL}|jdt|knXdS(Niitafter(R.RoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_too_far_forwards,s  cCsQy|jd|jdWn,tk rL}|jdt|knXdS(Niitbefore(R.RoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_too_far_backwards6s  cCsHy|jdWn0tjd}|jdt|knXdS(Niitexcept(R.Rtexc_infoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_to_except_1As cCsRy|jdWn:tk rMtjd}|jdt|knXdS(NiiR(R.RoRRRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_to_except_2Ks  cCsDy|jdWn,tk r?}|jdt|knXdS(NiR(R.RoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_to_except_3UscCsJy|jdWn2ttfk rE}|jdt|knXdS(NiR(R.RoRRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_to_except_4^scCsby/|jdxdD]}|jdqWWn,tk r]}|jdt|knXdS(Niiitinto(ii(R.RoRE(RR#RI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_forwards_into_blockgs   cCsby/xdD]}|jdq W|jdWn,tk r]}|jdt|knXdS(NiiiiR(ii(R.RoRE(RR#RI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_backwards_into_blockrs  cCs_y,z|jdd}Wd|jdXWn,tk rZ}|jdt|knXdS(Niiitfinally(R.RoRE(RRRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_into_finally_block}s  cCsfy3z|jdWd|jd|jdXWn,tk ra}|jdt|knXdS(NiiiR(R.RoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_out_of_finally_blocks cCsDy|jdWn,tk r?}|jdt|knXdS(Nitinteger(R.RoRE(RRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_to_non_integersstSpamcCs:ttjd}WdQXttjd}WdQXdS(Ntwb(topenRtTESTFN(Rtfp((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytjump_across_withscCsZytjj}|j|_Wn+tk rL}dt|krVqVn XtddS(NR0s'Trace-function-less jump failed to fail(RRRR/RoRER(tprevious_frameRI((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytno_jump_without_trace_functions t JumpTestCasecBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZRS(cCs@||kr<|jddt|ddt|ndS(NsOutputs don't match: s Expected: s s Received: (RAtrepr(R,texpectedtreceived((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytcompare_jump_outputs cCsPt|}tj|jg}||tjd|j|j|dS(N(R|RRR0RKRR(R,RNROR((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRQs    cCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_01_jump_simple_forwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_02_jump_simple_backwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt"test_03_jump_out_of_block_forwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt#test_04_jump_out_of_block_backwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_05_jump_to_codeless_linescCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_06_jump_to_same_linescCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_07_jump_in_nested_finallyscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_08_no_jump_too_far_forwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt!test_09_no_jump_too_far_backwardsscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_10_no_jump_to_except_1scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_11_no_jump_to_except_2scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_12_no_jump_to_except_3scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_13_no_jump_to_except_4scCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt#test_14_no_jump_forwards_into_blockscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt$test_15_no_jump_backwards_into_blockscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt"test_16_no_jump_into_finally_blockscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt$test_17_no_jump_out_of_finally_blockscCs|jtdS(N(RQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_18_no_jump_to_non_integersscCs tdS(N(R(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt&test_19_no_jump_without_trace_functionscCs'|jtjtj|jtdS(N(t addCleanupRtunlinkRRQR(R,((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_jump_across_withscBsOi}dddf|fdU|d}d|_dg|_|j|dS( Nsdef f(output): # line 0 x = 0 # line 1 y = 1 # line 2 ''' # line 3 %s # lines 4-1004 ''' # line 1005 x += 1 # line 1006 output.append(x) # line 1007 returns iRkiii(ii(R~RRQ(R,tdRk((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_20_large_functions     cseddddd fdY}e|}ej|jigd6}|Uejd|jddddd g|ddS( Nsd # Comments don't count. output.append(2) # firstlineno is here. output.append(3) output.append(4) s texect fake_functioncseZZdZRS(ii(ii(R7R8RLR~((tcode(s2/usr/local/lib/python2.7/test/test_sys_settrace.pyR sRiii((tcompileR|RRR0RKR(R,RROt namespace((Rs2/usr/local/lib/python2.7/test/test_sys_settrace.pyttest_jump_to_firstlinenos   (R7R8RRQRRRRRRRRRRRRRRRRRRRRRR(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyRs0                       cCstjtttdS(N(Rt run_unittestR9RmR(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pyt test_mainst__main__(iscall(isline(isreturn(iscall(isline(isline(isline(isreturn(iscall(isline(isline(isline(isreturn(iscall(isline(isline(isline(isline(isline(isline(isline(isline(isreturn(iscall(isline(isline(isline(isreturn(iscall(isline(iscall(isline(isreturn(isreturn(iscall(isline(isline(iscall(isline(is exception(isreturn(is exception(isline(isline(isreturn(isreturn(is exception(isline(isline(isreturn(iscall(isline(isline(isline(isline(isline(isreturn(iscall(isline(isline(isline(isline(isline(isline(isline(isline(is exception(isline(isline(isreturn(iscall(isline(isline(isline(isline(isline(isline(isline(is exception(isline(isline(isreturn(iscall(isline(iscall(isline(isline(isreturn(iscall(is exception(isline(isreturn(isline(isline(isline(isreturn(((ii(ii(ii(ii(ii(ii(ii (ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(iR(ii(8ttestRtunittestRRCR:RR+RRR R RRRRRRRRR R$R%R'R)R*tTestCaseR9RmR|RR~RRRRRRRRR&RRRRRRRRRRRRRRR7(((s2/usr/local/lib/python2.7/test/test_sys_settrace.pytsX                                / F        !                                    _