a ze@svddlZddlZddlZddlZddlmZGdddejZGdddejZGdddejZ e d krre dS) N)supportc@sXeZdZdZdddZddZddZd d Zd d Zd dZ ddZ e j ddZ dS) ClearTestz" Tests for frame.clear(). cKs dddSNr)selfxkwargsrrC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_frame.pyinnerszClearTest.innerc KsBz|jfi|Wn(ty<}z|}WYd}~n d}~00|SN)r ZeroDivisionError)rr eexcrrr outers zClearTest.outercCs|dur|j|j}qdS)z2 Clear all frames in a traceback. N)tb_framecleartb_next)rtbrrr clear_traceback_framess z ClearTest.clear_traceback_framescCshGddd}|}t|}|j|d}~t|d|||jt|d|dS)Nc@s eZdZdS)z&ClearTest.test_clear_locals..CN__name__ __module__ __qualname__rrrr C!src) weakrefrefrr gc_collect assertIsNotr __traceback__assertIsrrrwrrrrr test_clear_locals s   zClearTest.test_clear_localscsBdfdd}|}t||jdS)NFc3s"zdVWdnd0dS)NT)r rZendlyrrr g1s z)ClearTest.test_clear_generator..g)next assertFalsegi_framer assertTrue)rr(genrr'r test_clear_generator/s  zClearTest.test_clear_generatorc Csz ddWn,ty8}z|jj}WYd}~n d}~00|t|Wdn1sb0Y|t|jWdn1s0YdSrrr"r assertRaises RuntimeErrorrf_back)rrfrrr test_clear_executing?s  & zClearTest.test_clear_executingcs@dfdd}|}t|}|dS)NFc 3szz ddWnty}z|jj}t|Wdn1sN0Yt|jWdn1s0Y|VWYd}~n d}~00Wdnd0dS)NrrTr/)rr3r'rr r(Ms  & (z3ClearTest.test_clear_executing_generator..g)r)r*rr,)rr(r-r3rr'r test_clear_executing_generatorJs  z(ClearTest.test_clear_executing_generatorcCstdGddd}|}t|}|j|d}~|d|||j|d|Wdn1sr0YdS)Nc@s eZdZdS)z)ClearTest.test_clear_refcycles..CNrrrrr resrr) rZ disable_gcrrrr!rr"r#r$rrr test_clear_refcyclesas    zClearTest.test_clear_refcyclesN)r)rrr__doc__r rrr&r.r4r5rZ cpython_onlyr6rrrr r s  rc@s4eZdZddZddZddZddZd d Zd S) FrameAttrsTestc Cs^dd}z |WnFtyX}z.|j}g}|rD||j|j}q,WYd}~n d}~00|S)Ncsdd}fdd}|S)Nrcsd}ddd}dSNrr rztr rr r vsz8FrameAttrsTest.make_frames..outer..innerryr rr@r rss z)FrameAttrsTest.make_frames..outer)rr"appendrr)rrrrframesrrr make_framesrs  zFrameAttrsTest.make_framescCsV|\}}}|j}||dtj||ddd|j}||ddddS)Nr rr9)r rB)r r>)rEf_localsZassertIsInstancepoptypes FunctionType assertEqual)rr3rr Z outer_localsZ inner_localsrrr test_localss zFrameAttrsTest.test_localscCs>|\}}}||||ji||jidSr )rErrKrGrr3rr rrr r&s z FrameAttrsTest.test_clear_localscCsJ|\}}}|j|j||||ji||jidSr )rErGrrKrMrrr test_locals_clear_localssz'FrameAttrsTest.test_locals_clear_localscCs@|\}}}|t|`Wdn1s20YdSr )rEr0AttributeErrorf_lineno)rr3_rrr test_f_lineno_del_segfaults z)FrameAttrsTest.test_f_lineno_del_segfaultN)rrrrErLr&rNrRrrrr r8ps  r8c@seZdZdZddZdS)ReprTestz Tests for repr(frame). c Csdd}|jj}z |WnFty`}z.|j}g}|rL||j|j}q4WYd}~nd}~00|d|\}}}t t t } | t |d| |df| t |d| |df| t |d| |d fdS) Ncsdd}fdd}|S)Nrr9csd}ddd}dSr:rr=r@rr r sz0ReprTest.test_repr..outer..innerrrArr@r rs z!ReprTest.test_repr..outerzshould have raisedz=^$z9^$rFz9^$r) __code__co_firstlinenorr"rCrrZfailreescaperepr__file__Z assertRegex) rroffsetrrrDZf_thisZf_outerZf_innerZ file_reprrrr test_reprs8           zReprTest.test_reprN)rrrr7r\rrrr rSsrS__main__) rWrIZunittestrtestrZTestCaserr8rSrmainrrrr s g5(