a ze?@sddlZddlZddlZddlZddlZddlmZddlmZddZ ddZ dd Z d d Z d d Z ddZddZGdddejZejGdddejZedkredS)N)support) script_helpercCs tddS)Nh1printrrD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_atexit.pyr srcCs tddS)Nh2rrrrrr sr cCs tddS)Nh3rrrrrr sr cOstd||dS)Nh4r)argskwargsrrrr sr cCstdSN) TypeErrorrrrrraise1srcCstdSr) SystemErrorrrrrraise2srcCstdSr) SystemExitrrrrexitsrc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) GeneralTestcCs4tj|_tj|_t|_|jt_t_t dSr) sysstdout save_stdoutstderr save_stderrioStringIOstreamatexit_clearselfrrrsetUp"s  zGeneralTest.setUpcCs|jt_|jt_tdSr)rrrrrrrr rrrtearDown)szGeneralTest.tearDowncCsBtttttjtdddt||jddS)Nabc)kwz"h4 (4,) {'kw': 'abc'} h4 () {} h1 )rregisterrr _run_exitfuncs assertEqualrgetvaluer rrr test_args.s   zGeneralTest.test_argscCs4tdddddddDdd|ttjdS)NcSsdS)Nrrrrr9z*GeneralTest.test_badargs..rcss|] }|VqdSrr).0xrrr 9r.z+GeneralTest.test_badargs..)r,)rr' assertRaisesrr(r rrr test_badargs8s"zGeneralTest.test_badargscCs<ttttttt||jddS)Nz h3 h2 h1 ) rr'rr r r(r)rr*r rrr test_order<s    zGeneralTest.test_ordercCs&tttt|ttjdSr)rr'rrr3rr(r rrr test_raiseEs  zGeneralTest.test_raisecCs2tdd|ttj|d|jdS)NcSsddSNr,rrrrrrr-Or.z5GeneralTest.test_raise_unnormalized..ZeroDivisionError)rr'r3r8r(assertInrr*r rrrtest_raise_unnormalizedLsz#GeneralTest.test_raise_unnormalizedcCs.tt|ttj||jddS)N) rr'rr3rr(r)rr*r rrr test_exitTs zGeneralTest.test_exitcCsdd}dd}dd}t|t|t||ttj|j}||dd| d || d || d |dS) NcSs dddSr7rrrrrf]sz,GeneralTest.test_print_tracebacks..fcSs dddSr7rrrrrg_sz,GeneralTest.test_print_tracebacks..gcSs dddSr7rrrrrhasz,GeneralTest.test_print_tracebacks..hr8z# onez# twoz# three) rr'r3r8r(rr*r)countr9)r!r=r>r?rrrrtest_print_tracebacks[s      z!GeneralTest.test_print_tracebackscsFdgfdd}tdD]}t|qt|dddS)Nrcsdd7<dSNrr,rrarrincpsz$GeneralTest.test_stress..inc)rangerr'r(r))r!rFirrDr test_stressns    zGeneralTest.test_stresscs@dgfdd}t|tt|dddS)Nrcsdd7<dSrCrrrDrrrF{sz#GeneralTest.test_clear..inc)rr'rr(r))r!rFrrDr test_clearys   zGeneralTest.test_clearcsfdgfdd}fdd}tdD]}t|q&t|t|t|dddS)Nrcsdd7<dSrCrrrDrrrFsz(GeneralTest.test_unregister..inccsdd8<dSrCrrrDrrdecsz(GeneralTest.test_unregister..decr$)rHrr' unregisterr(r))r!rFrLrIrrDrtest_unregisters      zGeneralTest.test_unregistercCsNg}t|jdt||dgt|jt||dgdS)N)rr'appendr(r)rN)r!lrrrtest_bound_methodss zGeneralTest.test_bound_methodscCs:d}td|}||jddg||jdS)Nzif 1: import atexit def f(msg): print(msg) atexit.register(f, "one") atexit.register(f, "two") z-cZtwoZone)rZassert_python_okr)outdecode splitlinesZ assertFalseerr)r!coderesrrr test_shutdowns zGeneralTest.test_shutdownN)__name__ __module__ __qualname__r"r#r+r4r5r6r:r<rBrJrKrOrSrZrrrrr s     rc@s$eZdZddZddZddZdS)SubinterpreterTestcCs6t}d}t|}||d|t|dS)Nzif 1: import atexit def f(): pass atexit.register(f) del atexit rr _ncallbacksrrun_in_subinterpr)r!nrXretrrrtest_callbacks_leaks   z&SubinterpreterTest.test_callbacks_leakcCs6t}d}t|}||d|t|dS)Nzif 1: import atexit def f(): pass atexit.register(f) atexit.__atexit = atexit rr_rbrrrtest_callbacks_leak_refcycles   z/SubinterpreterTest.test_callbacks_leak_refcyclecCsTd}t\}}d|}t|}t||t|t||t|dS)NsThe test has passed!zif 1: import os import atexit def callback(): os.write({:d}, b"The test has passed!") atexit.register(callback) ) ospipeformatrracloser)readlen)r!ZexpectedrwrXrdrrr(test_callback_on_subinterpreter_teardowns   z;SubinterpreterTest.test_callback_on_subinterpreter_teardownN)r[r\r]rerfrorrrrr^sr^__main__)rZunittestrrrgtestrZ test.supportrrr r r rrrZTestCaserZ cpython_onlyr^r[mainrrrrs&  4