a ze@sddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddl ZGdddeZGdddeZGdd d eZGd d d eZdZd d ZddZGdddejZGdddeZGdddZd2ddZe ddZeddfddZdZedZdd Z d!d"Z!d#d$Z"d%d&Z#Gd'd(d(ej$Z%Gd)d*d*e%Z&Gd+d,d,e%Z'Gd-d.d.e%Z(Gd/d0d0e%Z)e*d1kre+dS)3N)contextmanager)islicerepeatc@s eZdZdS) BdbExceptionN__name__ __module__ __qualname__r r A/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_bdb.pyr>rc@s eZdZdS)BdbErrorNrr r r r r ?r r c@s eZdZdS)BdbSyntaxErrorNrr r r r r@r rc@s eZdZdS)BdbNotExpectedErrorNrr r r r rAr rcCsdtj_itj_dgtj_dSN)_bdb BreakpointnextZbplist bpbynumberr r r r reset_BreakpointIsrc CsddtjjD}|sdSd}|D]v}|s2d}d}|jrOr z$info_breakpoints..Fz!BpNum Temp Enb Hits Ignore Where Tzyes zno Zyeszno z%-5d %s %s %-4d %-6d at %s:%dz stop only if %s )rrr temporaryenabledZnumberhitsignoreospathbasenamefilelinecond)bp_listZ header_addedrinfoZdispZenabr r r info_breakpointsNs& r(csfeZdZfddZdfdd ZfddZd d Zd d Zd dZddZ ddZ ddZ Z S)Bdbcsd|_t|||SN) currentbpsupertrace_dispatch)selfframeeventarg __class__r r r-fszBdb.trace_dispatchFNc st|trT|tkrt}nt|dd}|j}t||}|j} | j }| j }| j }t j |||||d} t| tr|t| | S)N)rr%funcname) isinstancestr__file__globals importlib import_module__dict__eval__code__ co_filenameco_firstlinenoco_namer, set_breakr ) r.filenamelinenorr%r5globals_modulefunccoderesr2r r rBjs     z Bdb.set_breakcs4t||\|_|_|j|jd|_|j|jfSNr)r, get_stackstackindexr/)r.ftr2r r rK~sz Bdb.get_stackcCs||}|jd7_dSr)get_bpbynumberrr.Zbpnumrr r r set_ignores zBdb.set_ignorecCs||}d|_dS)NTrPrrQr r r set_enables zBdb.set_enablecCs||}d|_dS)NFrSrQr r r set_disables zBdb.set_disablecCs|||}|rt|dSr*)Z clear_breakr )r.fnamerDerrr r r set_clears z Bdb.set_clearcCs2|jstd|jd8_|j|jd|_dS)Nz Oldest framerr)rMr rLr/r.r r r set_upsz Bdb.set_upcCs@|jdt|jkrtd|jd7_|j|jd|_dS)Nrz Newest framer)rMlenrLr r/rYr r r set_downsz Bdb.set_down)FNN) rrr r-rBrKrRrTrUrXrZr\ __classcell__r r r2r r)cs  r)cseZdZd+fdd ZddZfddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd,d%d&Zd'd(Zd)d*ZZS)-TracerNFcs<tj|d||_||_|dur*d|nd|_|dS)NskipzDry-run results for %s:)r,__init__ expect_setdry_runheader init_test)r.rbr`rc test_caser2r r ras zTracer.__init__cCsBd|_d|_d|_tt|jddd|_tt|jddd|_dS)Nrr) cur_except expect_set_nobreakpoint_hitslistrrb expected_listset_listrYr r r res zTracer.init_testc sv|jdur|j|dkrbzt|||}|WSty^}z||_|jWYd}~Sd}~00nt|||SdSN exception)rhr,r-r)r.r/r0r1rIer2r r r-s zTracer.trace_dispatchcCs(||sdS|d|||dS)Ncall)Z stop_here process_eventnext_set_method)r.r/Z argument_listr r r user_calls zTracer.user_callcCsZ|d||jr@|jr@td}|dD]}td|q.|d|_|dS)Nr$rz ) rrrcrjr(stripsplitprintdelete_temporariesrs)r.r/r'r$r r r user_lines   zTracer.user_linecCs|d|||dS)Nreturn)rrrs)r.r/Z return_valuer r r user_returnszTracer.user_returncCs||_|d||dSrn)exc_inforrrs)r.r/r|r r r user_exceptions zTracer.user_exceptioncCs|jg}||f|_dSr*)r+rj)r.r1r&r r r do_clearszTracer.do_clearcCs$|jr |jdD]}||qdSr)rjZclear_bpbynumber)r.nr r r rxszTracer.delete_temporariescCsT|jd7_z|jd|_Wn ty@td|jYn0|jd|_dS)Nrrz-expect_set list exhausted, cannot pop item %d)rirlpopexpect IndexErrorrrm set_tuplerYr r r pop_nexts  zTracer.pop_nextcsd}|dkrjd}||jdurDjsDjg}|gf_|_jrhjdSj r j d|d |dvr dnt j dkr~|dkrFj d\}t}jsdj |jdd  fd d |Dfd d jdDd  t|jddn8|dkr~tjdj ds~djjfdS)NrorgrzWrong event type)rqrzr$z(No breakpoints hit at expect_set item %dzBreakpoint numbers do not matchcsg|] }|qSr r rr)bpsr r rr z(Tracer.process_event..csg|]}|jqSr )rPrrrYr r r szWrong breakpoint hit countrzWrong temporary breakpointsz/Wrong exception at expect_set item %d, got '%s')r|rKr+rjr0rrc print_staterdr check_equalcheck_lno_namecheck_expect_max_sizer[sortedkeysraise_not_expectedrir6)r.r0r/argstbr&Z temporariesZbpnumsr )rr.r rrs\          zTracer.process_eventcCs&||kr dS|d||j|fdS)Nz"%s at expect_set item %d, got '%s')rri)r.Zexpectedresultmsgr r r r,s  zTracer.check_equalcCsTt|j}|dkr.|}||jd|d|dkrP||jd|jjjddS)NrzWrong line numberrgzWrong function name)r[r lno_abs2relrr/f_coderA)r.srDr r r r2s zTracer.check_lno_namecCs&t|j|kr"td|j|jfdS)Nz'Invalid size of the %s expect tuple: %s)r[rrr0)r.sizer r r r<s zTracer.check_expect_max_sizecCs<||jjj}|jj}||tkr8||jjjdS|Sr)canonicr/rr?f_linenor8r@r.rVrDr r r rAs  zTracer.lno_abs2relcCs.|r*|||tkr*|jjj|dS|Sr)rr8r/rr@rr r r lno_rel2absGs zTracer.lno_rel2abscCs|}|jjj}d|j||f}|jrd}|jdD],}|dkrJ|d7}|d|||jf7}q6|d7}d|dt|jdd }|d|7}n|jd kr|d|j dj 7}|d 7}| d t|j d S)Nz('%s', %d, '%s'{rz, z%s: %s}(r)roz), ,) rr/rrAr0rjrPrr7r|rljustr)r.rDrAstaterrr r r get_stateLs   zTracer.get_statecCs:|dur |jdkr tt|td|j|fdS)Nrz%d: %s)rirwr)r.rdr r r r^szTracer.print_statecCs6|d7}|dt|j7}|d|7}t|dS)Nrz Expected: %s z Got: )r7rrrr.rr r r rdszTracer.raise_not_expectedcCsZ|jd}t|jdkr"|jdnd}t|d|}|dvrF|dS|dvr\||jdS|dkrd}|r||jjj|d}||j|dS|r|dvs|d vrH|d vr|^}}}|||}||g}||||n"|d vr||n|d vr|d|_| |j r$| n|j r4| |d |ntd |jdS)NrrgrZset_)stepcontinuequit)rrzuntil)breakclearrenabledisable)updown)rr)rrrrz"%s" is an invalid set_tuple)rr[getattrr/rrr?extendr0rrcrrrrrsr)r.set_typerZ set_methodrDrVZremainr r r rsjsR              zTracer.next_set_method)NFN)N)rrr rarer-rtryr{r}r~rxrrrrrrrrrrrrsr]r r r2r r^s(    2  r^c@s(eZdZdddZddZd ddZdS) TracerRunNcCs2||_|j|_t|j||j|d|_d|_dS)N)r`rcrf)rfrcr^rbidtracer_original_tracer)r.rfr`r r r ras  zTracerRun.__init__cCstt|_|jSr*)rsysgettracerrrYr r r __enter__s zTracerRun.__enter__cCstt|jd}|jjr6|d7}|d|jj7}|durtt|rt |t r|j r|j d}|rr|d|7}|j rt |dS|j|n|r|j rt |n |j|dS)Nrz+All paired tuples have not been processed, zthe last one was number %drrT)rrsettracerrrmri issubclassrr6 BaseExceptionrrcrwrffail)r.type_value traceback not_emptyerr_msgr r r __exit__s*    zTracerRun.__exit__)N)NNN)rrr rarrr r r r rs rc Csdd}ddg}||t}d|_dd|_t|tdt||_t|Ft ||d }| t Wdn1s~0YWdn1s0YdS) Ncss<z"t|}t|}|V|VqWnty6YdS0dSr*)r StopIteration)abxyr r r gens  zrun_test..genrrTcSsdSr*r r r r r r zrun_test..r r_) r BaseTestCasercrrkriterrbcreate_modulesrruncall tfunc_import)modulesrmr`rsltestrr r r run_tests3    rc cstjtjtz|D]T}|d}t|d$}| t ||Wdn1sb0Yt |q"tdVW|D]}tj|qtjn"|D]}tj|qtj0Wdn1s0YdS)N.pyw)rsupportZtemp_cwdrr!appendr getcwdopenwritetextwrapdedent linecache checkcacher:invalidate_cachesZforgetr)rmrVrNr r r rs   2  rFcCsd|d|||ffS)Nrr )r5rVrr%r r r break_in_func%srtest_module_for_bdbrcCsddl}|dSrJ)rmain)rr r r r*srcCs d}ttd}d}d}dS)Nrg) tfunc_first tfunc_secondlnor r r tfunc_main.s rcCsd}d}d}dS)Nrgrr rr r r r6srcCsd}dS)Nrgr rr r r r;src@seZdZeZdddZdS)rNcCs||ddSr*)ZfailureExceptionrr r r rCszBaseTestCase.fail)N)rrr rcrr r r r r>src@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) StateTestCasecCs@gd|_t|}|tWdn1s20YdS)N)r$rgrrr$rrrrqrrrr$rgrrrbrrrr.rr r r test_stepKs  zStateTestCase.test_stepcCsdD]}|j|dzddddddtdffd d d dd d d igff|fddg |_t|}|tWdn1sv0YWdq1s0YqdS)N)rrrrrrrrr)Nonerrrr$rrr$rrr)subTestr8rbrrr)r.rrr r r test_step_next_on_last_statementUs  z.StateTestCase.test_step_next_on_last_statementcCs@gd|_t|}|tWdn1s20YdS)N) rrrrr$rrr)rqrrr)r$rgrrrrr r r test_nextcs  zStateTestCase.test_nextc Cstd}t|i}t|Lgd|_t|}|tWdn1sH0YWdn1sf0YdS)N9 def main(): lno = 3 )r$rgrrr$rrr TEST_MODULErrbrrrr.rHrrr r r test_next_over_importns    z#StateTestCase.test_next_over_importcCs@gd|_t|}|tWdn1s20YdS)N)rrrrrrrrrrr r r test_next_on_plain_statement|s  z*StateTestCase.test_next_on_plain_statementcCs@gd|_t|}|tWdn1s20YdS)N) rrrrrrrrrrrrrrr r r test_next_in_caller_frames  z'StateTestCase.test_next_in_caller_framecCs@gd|_t|}|tWdn1s20YdS)N) rrrrrrrrzrzrrrrrrrr r r test_returns  zStateTestCase.test_returncCs@gd|_t|}|tWdn1s20YdS)N) rrrrrrrr )rzrrrrrr r r test_return_in_caller_frames  z)StateTestCase.test_return_in_caller_framecCs@gd|_t|}|tWdn1s20YdS)N) rrrrrrr)r)rrrrrr r r test_untils  zStateTestCase.test_untilc Cs`dtddddddddigffdd d g|_t|}|tWdn1sR0YdS) Nrr)rrgrrr$rgr)r)i'r r)rrbrrrrr r r test_until_with_too_large_counts z-StateTestCase.test_until_with_too_large_countcCs@gd|_t|}|tWdn1s20YdS)N) rrrrrrr)r)r)r$rrrrrr r r test_until_in_caller_frames  z(StateTestCase.test_until_in_caller_framec Csd}t|i}t|\gd|_dddtf}t||d}|tWdn1sX0YWdn1sv0YdS)Nr)rrrrz importlib*Z zipimportz encodings.*r_r)r.rHrr`rr r r test_skips   zStateTestCase.test_skipcCs"tdgd}||dddS)Nz anything*r_F)r)ZassertIsZis_skipped_module)r.bdbr r r test_skip_with_no_name_modules z+StateTestCase.test_skip_with_no_name_modulecCsFddg|_t| }|t|jtWdn1s80YdS)Nr)r)rbr assertRaisesr rrrr r r test_downs zStateTestCase.test_downcCs@gd|_t|}|tWdn1s20YdS)N)rrrrrrrrrrr r r test_ups  zStateTestCase.test_upN)rrr rrrrrr r r rrrrrrrr r r r rHs         rc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)BreakpointTestCasecCsFddg|_t| }|t|jtWdn1s80YdS)Nr)r)z/non/existent/module.pyr)rbrrr rrrr r r test_bp_on_non_existent_modules z1BreakpointTestCase.test_bp_on_non_existent_modulec Csd}t|i}t|Zddtdffg|_t| }|t|jtWdn1sV0YWdn1st0YdS)Nrrrr) rrTEST_MODULE_FNAMErbrrr rrrr r r test_bp_after_last_statements   z/BreakpointTestCase.test_bp_after_last_statementcCsd}t|i}t|dtdtddtdtddddddd d id gffddddd d id gffd g |_t|}|tWdn1s0YWdn1s0YdS) N def func(): lno = 3 def main(): for i in range(2): func() rrGTrrgrrr$rrrgrrrrrrbrrrrr r r test_temporary_bp s    z$BreakpointTestCase.test_temporary_bpcCsd}t|i}t|dtdtdtdtddddddd dd d igffd d d d ddd ddd idgffdd ddd dd digffdg|_t|}|tWdn1s0YWdn1s0YdS)N def func(): lno = 3 def main(): for i in range(3): func() rrGrT)rrgrr$rr)rr rrrGrrrgrr#rrrr r r test_disabled_temporary_bp$s$   z-BreakpointTestCase.test_disabled_temporary_bpc Csd}t|i}t|ndtdtdddddd dd d igffd g|_t|}|tWdn1sj0YWdn1s0YdS) Nz def func(a): lno = 3 def main(): for i in range(3): func(i) rrGFza == 2rrr$rrrrrr r r test_bp_condition@s   z$BreakpointTestCase.test_bp_conditionc Csd}t|i}t|ndtdtdddddd dd d igffd g|_t|}|tWdn1sj0YWdn1s0YdS) Nzk def func(a): lno = 3 def main(): func(0) rrGFz1 / 0rrr$rrrrrr r r )test_bp_exception_on_condition_evaluationTs   zr)rzrgr.rzexec)rbrruncompilerr)r.rHrr r r test_run_steps  zRunTestCase.test_run_stepc Csd}t|i}t|\gd|_ddl}t|"}|dttWdn1sX0YWdn1sv0YdS)Nr) )r$rr.r)rqrgrr)r$rrr)rzrrr)rzrr.rrztest_module_for_bdb.main())rrrbrrZrunevalr9locals)r.rHrrrr r r test_runeval_steps   zRunTestCase.test_runeval_stepN)rrr r2r4r r r r r-s r-c@s4eZdZddZddZddZddZd d Zd S) IssuesTestCasec Csd}d}t|d|i}t|rdtddddd d dd d igffd d d ddg |_t|}|tWdn1sv0YWdn1s0YdS)Nz from test_module_for_bdb_2 import func def main(): func() lno = 5 z9 def func(): lno = 3 Ztest_module_for_bdb_2rrGztest_module_for_bdb_2.pyrrr$rrr)rzrrG)r$rrr)rrrrbrrr)r.Zcode_1Zcode_2rrr r r +test_step_at_return_with_no_trace_in_callers  z:IssuesTestCase.test_step_at_return_with_no_trace_in_callerc Csd}t|i}dD]}|j|dt|dtdtdddd dd d igff|fg|_|d kr||jd d dtfdddgn|jddgt|}| t Wdn1s0YWdn1s0YWdq1s0YqdS)Nz def test_gen(): yield 0 lno = 4 return 123 def main(): it = test_gen() next(it) next(it) lno = 11 )rrrzrrtest_genrrr$rrrzro rr)rzr8rrr$rr7) rrrrrrbrrrrr)r.rHrrrr r r #test_next_until_return_in_generators*    z2IssuesTestCase.test_next_until_return_in_generatorcCsd}t|i}t|dtdtdddddddigffd d d d d d d d ddtfdddg|_t|}|tWdn1s0YWdn1s0YdS)Nz def test_gen(): yield 0 lno = 4 yield 1 return 123 def main(): for i in test_gen(): lno = 10 lno = 11 rr7rrr$rrrr9)r$rr7)r$rr7ro rr)r$ rr rrrrrrbrrrrr r r 'test_next_command_in_generator_for_loop#s    z6IssuesTestCase.test_next_command_in_generator_for_loopc Csd}t|i}t|~dtdtdddddddigffd d d d d d tfdddg |_t|}|tWdn1sz0YWdn1s0YdS)N4 def test_subgen(): yield 0 return 123 def test_gen(): x = yield from test_subgen() return 456 def main(): for i in test_gen(): lno = 12 lno = 13 rr7rrr$rrr)r$r7ror<rrr$ rrr=rr r r /test_next_command_in_generator_with_subiteratorBs   z>IssuesTestCase.test_next_command_in_generator_with_subiteratorc Csd}t|i}t|dtdtdddddddigffd d d d tfd d d dtfdddg |_t|}|tWdn1s0YWdn1s0YdS)Nr?rZ test_subgenrrr$rrr rorr7r<rrrArr=rr r r 1test_return_command_in_generator_with_subiteratoras    z@IssuesTestCase.test_return_command_in_generator_with_subiteratorN)rrr r6r:r>rCrDr r r r r5s )r5__main__)N),rrrr Zunittestrr:r contextlibr itertoolsrrZ test.supportr Exceptionrr rrrcrr(r)r^rrrr8rrrrrrrZTestCaserrrr-r5rrr r r r 3sP @z. J  /B")