a }|gR@sdZddlZddlZddlZddlmZddlmZddlmZddlZddlm Z ddl Z ddl m Z dd Z d d Zejd d ZddZGdddejZGdddeZedkree ejddegdS)z*Tests for certbot._internal.error_handler.N)Callable)Dict)Union)mock)oscCsdd|DS)z,Get the handlers for an iterable of signums.cSsi|]}|t|qS)signal getsignal.0srrN/usr/lib/python3.9/site-packages/certbot/_internal/tests/error_handler_test.py zget_signals..r)signumsrrr get_signalssrcCs"|D]\}}t||qdS)zDSet the signal (keys) with the handler (values) from the input dict.N)itemsr)Zsig_handler_dictr hrrr set_signalssrc#s4gt|}tfdd|DVt|dS)z Context manager to catch signalscsi|]}|fddqS)cs |SN)append)r _signalsrr  rz,signal_receiver...rr rrr r rz#signal_receiver..N)rr)rZ prev_handlersrrr signal_receivers rcCstt|dS)zSend the given signalN)rkillgetpid)signumrrr send_signal%src@sHeZdZdZddZddZddZdd Zd d Zd d Z ddZ dS)ErrorHandlerTestz7Tests for certbot._internal.error_handler.ErrorHandler.cCsTddlm}t|_dh|_ddi|_|j|jg|jRi|j|_|j |_ dS)Nr error_handler*ZfooZbar) certbot._internalr"r MagicMock init_func init_args init_kwargsZ ErrorHandlerhandlerZ_SIGNALSrselfr"rrr setUp-s    zErrorHandlerTest.setUpcCsld}z.|jtWdn1s&0YWntyHd}Yn0|sRJ|jj|ji|jdS)NFT)r) ValueErrorr&assert_called_once_withr'r()r+Zexception_raisedrrr test_context_manager:s&   z%ErrorHandlerTest.test_context_managerc Cs|js|jddt|j}t|jP}|j*d}t|jd|d9}Wdn1s^0YWdn1s|0Yd|ksJ|jdg|ksJ|jj|ji|j |jD]}||t |ksJqdS)N%Signals cannot be handled on Windows.reasonr#r ) rskipTestrrr)rr&r.r'r(rr )r+Z init_signalssignals_receivedZ should_be_42rrrr test_context_manager_with_signalFs   D   z1ErrorHandlerTest.test_context_manager_with_signalcCs~tjtgd}|j|z.|jtWdn1s<0YWntyZYn0|jj|ji|j|dS)NZ side_effect) rr%r-r)registerr&r.r'r()r+bad_funcrrr test_bad_recoveryZs &  z"ErrorHandlerTest.test_bad_recoveryc s|js|jdd|jd|jd}tjfddd}|j|t|j>}|jt|Wdn1sv0YWdn1s0Y|g|ksJ|jj |j i|j | dS)Nr0r1rcstSr)rrZsig1rr rkrz@ErrorHandlerTest.test_bad_recovery_with_signal..r7) rr4rr%r)r8rrr&r.r'r()r+Zsig2r9r5rr<r test_bad_recovery_with_signalfs     D z.ErrorHandlerTest.test_bad_recovery_with_signalcCs\z4|jtdWdn1s(0YWntyFYn0|jjdusXJdS)NrF)r)sysexit SystemExitr&Zcalled)r+rrr test_sysexit_ignoredus , z%ErrorHandlerTest.test_sysexit_ignoredcCsPt}|j||jWdn1s00Y|j|dSr)rr%r)r8r&Zassert_not_calledr+funcrrr test_regular_exit}s   z"ErrorHandlerTest.test_regular_exitN) __name__ __module__ __qualname____doc__r,r/r6r:r=rArDrrrr r *s   r cs(eZdZdZfddZddZZS)ExitHandlerTestz6Tests for certbot._internal.error_handler.ExitHandler.cs:ddlm}t|j|jg|jRi|j|_dS)Nrr!) r$r"superr,Z ExitHandlerr&r'r(r)r* __class__rr r,s   zExitHandlerTest.setUpcCs\t}|j||jWdn1s00Y|jj|ji|j|dSr)rr%r)r8r&r.r'r(rBrrr rDs  z!ExitHandlerTest.test_regular_exit)rErFrGrHr,rD __classcell__rrrKr rIs rI__main__)rH contextlibrr>typingrrrZunittestrZpytestZcertbot.compatrrrcontextmanagerrrZTestCaser rIrEr?mainargv__file__rrrr s&      \