a ze@svddlZddlZddlZddlZddlmZGdddejZGdddejZGdddejZ e d krre dS) N)supportc@sTeZdZdddZddZddZdd Zd d Zd d ZddZ e j ddZ dS) ClearTestcKs 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}qdSr )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) rrrr 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 rr8)r rA)r r=)rDf_localsZassertIsInstancepoptypes FunctionType assertEqual)rr3rr Z outer_localsZ inner_localsrrr test_localss zFrameAttrsTest.test_localscCs>|\}}}||||ji||jidSr )rDrrJrFrr3rr rrr r&s z FrameAttrsTest.test_clear_localscCsJ|\}}}|j|j||||ji||jidSr )rDrFrrJrLrrr test_locals_clear_localssz'FrameAttrsTest.test_locals_clear_localscCs@|\}}}|t|`Wdn1s20YdSr )rDr0AttributeErrorf_lineno)rr3_rrr test_f_lineno_del_segfaults z)FrameAttrsTest.test_f_lineno_del_segfaultN)rrrrDrKr&rMrQrrrr r7ps  r7c@seZdZddZdS)ReprTestc 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)Nrr8csd}ddd}dSr9rr<r?rr r sz0ReprTest.test_repr..outer..innerrr@rr?r rs z!ReprTest.test_repr..outerzshould have raisedz=^$z9^$rEz9^$r) __code__co_firstlinenorr"rBrrZfailreescaperepr__file__Z assertRegex) rroffsetrrrCZf_thisZf_outerZf_innerZ file_reprrrr test_reprs8           zReprTest.test_reprN)rrrr[rrrr rRsrR__main__) rVrHZunittestrtestrZTestCaserr7rRrmainrrrr s g5(