Ticket #5151: issue-5151-1.diff
File issue-5151-1.diff, 2.6 KB (added by , 11 years ago) |
---|
-
twisted/internet/_baseprocess.py
34 34 _missingProcessExited % (qual(self.proto.__class__),), 35 35 DeprecationWarning, stacklevel=0) 36 36 else: 37 processExited(Failure(reason)) 37 try: 38 processExited(Failure(reason)) 39 except: 40 err(None, "unexpected error in processExited") 38 41 39 42 40 43 def processEnded(self, status): -
twisted/internet/test/test_process.py
298 298 self.runReactor(reactor) 299 299 300 300 301 def test_processExitedRaises(self): 302 """ 303 Test that a protocol raising an exception inside processExited 304 doesn't cause the reactor to explode. 305 """ 306 reactor = self.buildReactor() 307 308 class TestException(Exception): 309 pass 310 311 class Protocol(ProcessProtocol): 312 def processExited(self, reason): 313 reactor.callLater(0.01, lambda: reactor.stop()) 314 raise TestException("processedExited raised") 315 316 protocol = Protocol() 317 transport = reactor.spawnProcess( 318 protocol, sys.executable, [sys.executable, "-c", ""], 319 usePTY=self.usePTY) 320 reactor.run() 321 self.flushLoggedErrors() 322 323 # Manually clean-up broken process handler 324 for pid, handler in process.reapProcessHandlers.items(): 325 if handler is not transport: 326 continue 327 process.unregisterReapProcessHandler(pid, handler) 328 self.fail("After processExited raised, transport was left in" 329 " reapProcessHandlers") 330 331 301 332 class ProcessTestsBuilder(ProcessTestsBuilderBase): 302 333 """ 303 334 Builder defining tests relating to L{IReactorProcess} for child processes -
NEWS
69 69 - twisted.words.services referenced nonexistent 70 70 twisted.words.protocols.irc.IRC_NOSUCHCHANNEL. This has been fixed. 71 71 Related code has also received test cases. (#4915) 72 - Broken process handlers will no longer be left in the global state 73 if a ProcessProtocol raises an exception from within processExited. 74 (#5151) 72 75 73 76 Improved Documentation 74 77 ----------------------