Xj\ ddlZddlZddlZddlZddlZddlmZddlmZddlmZGddeZ e dk(rejyy) N)WIN)TestCase)_test_extension_cppcbeZdZdZdZdZdZeje ddZ dZ dZ y ) CPPTestscg}tdD]G}tjtj}|j ||j |It |D]%\}}|j|j |'y)N)rangegreenletrtest_exception_switchswitchappend enumerate assertEqual)self greenletsigs k/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/greenlet/tests/test_cpp.pyr zCPPTests.test_exception_switchsz q A!!"5"K"KLA HHQK   Q  i( ,DAq   QXXZ + ,cRddl}ddl}|jj|jj t d}|j |t|ts |jn|g}|}|jtj5}tj|dtjdddj}|j!} |j#|j$| |j#d|j&|j&S#1swYixYw)Nrzfail_cpp_exception.pyzutf-8)encodingstderrzfail_cpp_exception is running)ossyspathjoindirname__file__ executable isinstancestr__name__ assertRaises subprocessCalledProcessError check_outputSTDOUT exception,get_expected_returncodes_for_aborted_processassertIn returncodeoutput) rtargetrrscriptargs__traceback_info__excex expected_exits r_do_test_unhandled_exceptionz%CPPTests._do_test_unhandled_exceptions GGOOH % # z&RU?V\bc!   z<< =   # # !((  ]]IIK  bmm]3 5ryyAyy  s 'DD&cB|jtjyN)r6rtest_exception_throw_nonstdrs r&test_unhandled_nonstd_exception_abortsz/CPPTests.test_unhandled_nonstd_exception_aborts.s ))*=*Y*YZrcB|jtjyr8)r6rtest_exception_throw_stdr:s r#test_unhandled_std_exception_abortsz,CPPTests.test_unhandled_std_exception_aborts2s ))*=*V*VWrz#XXX: This does not crash on WindowscJ|jd}|jd|y)Nrun_as_greenlet_targetzThrown from an extension.)r6r,)rr.s r8test_unhandled_std_exception_as_greenlet_function_abortszACPPTests.test_unhandled_std_exception_as_greenlet_function_aborts6s)223KL (   rc&|jdy)N*run_unhandled_exception_in_greenlet_aborts)r6r:s r+test_unhandled_exception_in_greenlet_abortsz4CPPTests.test_unhandled_exception_in_greenlet_abortsDs ))*VWrczd}tjtjd}t dD]5}|j t 5tj|ddd7tjtjd}||z }|jd|y#1swYxYw)Nctd)Nboom) ValueErrorrrraiserzECPPTests.test_leak_test_exception_switch_and_do_in_g2..raiserJs V$ $rr ir) gccollectobjgraphcountr r%rHr"test_exception_switch_and_do_in_g2r)rrJbefore_afterleakeds r,test_leak_test_exception_switch_and_do_in_g2z5CPPTests.test_leak_test_exception_switch_and_do_in_g2Is %  +t OA"":. O#FFvN O O O z* F#  O Os B11B: N) r$ __module__ __qualname__r r6r;r>unittestskipIfrrArDrTrIrrrr sF,.[XX__S?@  A  X $rr__main__) rKr&rWr rMrrrrr$mainrIrrr\sF !J$xJ$Z zHMMOr