a :êdg%ã@s ddlZddlZddlZddlZddlZddlZddlZe eedƒd¡e  ej dkd¡Gdd„dej ƒƒƒZ e eedƒd¡e  ej dkd¡Gdd „d e ƒƒƒZ e eedƒd¡e  ej dkd¡Gd d „d e ƒƒƒZe eedƒd¡e  ej dkd¡Gd d „d e ƒƒƒZedkre ¡dS)éNÚkillzTest requires os.killÚwin32zTest cannot run on Windowsc@s€eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)Ú TestBreakNcCs,t tj¡|_|jdur(t tj|j¡dS©N)ÚsignalÚ getsignalÚSIGINTÚ_default_handlerÚ int_handler©Úself©r ú4/usr/local/lib/python3.9/unittest/test/test_break.pyÚsetUps zTestBreak.setUpcCs(t tj|j¡t ¡tj_dtj_dSr) rrr ÚweakrefÚWeakKeyDictionaryÚunittestÚsignalsÚ_resultsÚ_interrupt_handlerr r r rÚtearDowns zTestBreak.tearDowncCstt tj¡}t ¡| t tj¡|¡zt ¡}t |tj¡Wnt y^|  d¡Yn0|  tj j j¡dS)NúKeyboardInterrupt not handled)rrrrÚinstallHandlerÚassertNotEqualÚosÚgetpidrÚKeyboardInterruptÚfailÚ assertTruerrZcalled)r Údefault_handlerÚpidr r rÚtestInstallHandlers  zTestBreak.testInstallHandlerc CsRt ¡}| |tjj¡t |¡z| |tjj¡Wt |¡n t |¡0dSr)rÚ TestResultZ assertNotInrrÚregisterResultÚassertInÚ removeResult)r Úresultr r rÚtestRegisterResult(s  zTestBreak.testRegisterResultcs€t tj¡}t ¡}t ¡t |¡ˆ t tj¡|¡‡fdd„}z ||ƒWntynˆ  d¡Yn0ˆ  |j ¡dS)Ncs,t ¡}t |tj¡d|_ˆ |j¡dS)NT)rrrrrÚ breakCaughtrÚ shouldStop©r&r r r rÚtest;sz+TestBreak.testInterruptCaught..testr) rrrrr"rr#rrrrr()r rr&r+r r rÚtestInterruptCaught2s     zTestBreak.testInterruptCaughtcs|t tj¡tjkrˆ d¡t ¡}t ¡t |¡‡fdd„}z ||ƒWnt y`Yn 0ˆ  d¡ˆ  |j ¡dS)Nú&test requires SIGINT to not be ignoredcsDt ¡}t |tj¡d|_ˆ |j¡t |tj¡ˆ d¡dS)NTú#Second KeyboardInterrupt not raised) rrrrrr(rr)rr*r r rr+Qs  z+TestBreak.testSecondInterrupt..testr.) rrrÚSIG_IGNÚskipTestrr"rr#rrrr()r r&r+r r rÚtestSecondInterruptHs      zTestBreak.testSecondInterruptcCs®t ¡t ¡}t |¡t tj¡}t ¡}t |¡| t tj¡|¡t ¡}dd„}z ||ƒWnty„|  d¡Yn0|  |j ¡|  |j ¡|  |j ¡dS)NcSst ¡}t |tj¡dSr)rrrrrr*r r rr+osz&TestBreak.testTwoResults..testr) rrr"r#rrrÚ assertEqualrrrr)Ú assertFalse)r r&Ú new_handlerZresult2Zresult3r+r r rÚtestTwoResultsbs        zTestBreak.testTwoResultscs†t tj¡tjkr| d¡t ¡t tj¡‰‡fdd„}t tj|¡zt ¡}t  |tj¡Wnt yvYn 0|  d¡dS)Nr-csˆ||ƒdSrr )ÚframeÚsignum©Úhandlerr rr4ˆsz;TestBreak.testHandlerReplacedButCalled..new_handlerz6replaced but delegated handler doesn't raise interrupt) rrrr/r0rrrrrrr)r r4r r r8rÚtestHandlerReplacedButCalled}s    z&TestBreak.testHandlerReplacedButCalledcCs2tjt ¡d}| t ¡¡}| |tjj¡dS)N)Ústream) rZTextTestRunnerÚioÚStringIOÚrunZ TestSuiter$rr)r Zrunnerr&r r rÚ testRunner”szTestBreak.testRunnercCs>t ¡}t |¡t |¡}~t ¡t ¡| |ƒ¡dSr)rr"r#rÚrefÚgcZcollectZ assertIsNone)r r&r@r r rÚtestWeakReferencesœs   zTestBreak.testWeakReferencescCs|t ¡}t |¡t ¡| t |¡¡| t t ¡¡¡zt ¡}t  |t j ¡Wnt yjYn0| |j ¡dSr)rr"r#rrr%r3rrrrrrr))r r&r r r rÚtestRemoveResult©s  zTestBreak.testRemoveResultc s(tƒ‰tƒ‰tƒ‰tƒ‰t tj¡}G‡fdd„dtƒ‰G‡‡‡‡fdd„dtjƒ}|dƒ}| ¡| ˆjddˆˆdddœfg¡| ˆj ˆg¡| |j ˆ¡| t tj¡|¡gˆ_gˆ_ |dƒ}| ¡| ˆjddˆˆdddœfg¡| ˆj ˆg¡| |j ˆ¡|  t tj¡|¡dS) Ncs(eZdZgZgZdd„Z‡fdd„ZdS)z5TestBreak.testMainInstallsHandler..FakeRunnerc_s|j ||f¡dSr)ÚinitArgsÚappend)r ÚargsÚkwargsr r rÚ__init__Åsz>TestBreak.testMainInstallsHandler..FakeRunner.__init__cs|j |¡ˆSr)ÚrunArgsrE©r r+©r&r rr>Çs z9TestBreak.testMainInstallsHandler..FakeRunner.runN)Ú__name__Ú __module__Ú __qualname__rDrIrHr>r rKr rÚ FakeRunnerÂsrOcseZdZ‡‡‡‡fdd„ZdS)z2TestBreak.testMainInstallsHandler..Programcs4d|_ˆ|_ˆ|_||_d|_ˆ|_ˆ|_d|_dS)NF)ÚexitÚ verbosityÚfailfastÚ catchbreakÚ tb_localsr?r+r&)r rS©rOrRr+rQr rrHÌsz;TestBreak.testMainInstallsHandler..Program.__init__N)rLrMrNrHr rUr rÚProgramËsrVFr )ÚbufferrQrRrTÚwarningsT) ÚobjectrrrrZ TestProgramZrunTestsr2rDrIr&r)r rrVÚpr )rOrRr&r+rQrÚtestMainInstallsHandler»s>    ü  ü z!TestBreak.testMainInstallsHandlercCsPt tj¡}t ¡t ¡| t tj¡|¡t ¡| t tj¡|¡dSr)rrrrrÚ removeHandlerr2)r rr r rÚtestRemoveHandleròs  zTestBreak.testRemoveHandlercsFt tj¡‰t ¡tj‡‡fdd„ƒ}|ƒˆ t tj¡ˆ¡dS)Ncsˆ t tj¡ˆ¡dSr)r2rrrr ©rr r rr+sz4TestBreak.testRemoveHandlerAsDecorator..test)rrrrrr\rrJr r^rÚtestRemoveHandlerAsDecoratorüs  z&TestBreak.testRemoveHandlerAsDecorator)rLrMrNr rrr!r'r,r1r5r:r?rBrCr[r]r_r r r rr s   7 rc@seZdZejZdS)ÚTestBreakDefaultIntHandlerN)rLrMrNrÚdefault_int_handlerr r r r rr`sr`c@seZdZejZdS)ÚTestBreakSignalIgnoredN)rLrMrNrr/r r r r rrb srbc@seZdZejZdS)ÚTestBreakSignalDefaultN)rLrMrNrÚSIG_DFLr r r r rrcsrcÚ__main__)rAr<rÚsysrrrZ skipUnlessÚhasattrZskipIfÚplatformZTestCaserr`rbrcrLÚmainr r r rÚs*{