def test_closed(self): """ When the closed event is received, L{PantheonSession} closed the standard input of its child process and signals it with C{SIGHUP}. """ mockos = MockProcessState(0, 0) mockos.seteuid(100) session = PantheonSession(None) session.os = mockos process = session._process = MemoryProcessTransport(mockos) session.closed() self.assertTrue(process.stdinClosed) self.assertEqual(process.signals, [SIGHUP]) self.assertEqual(mockos.geteuid(), 100)
def test_alreadyExited(self): """ No unhandled exceptions are raised if the channel receives eof or is closed after the child process has already exited. stdin is still closed and the process's euid is still set back to its original value. """ mockos = MockProcessState(0, 0) mockos.seteuid(100) session = PantheonSession(None) session.os = mockos process = session._process = MemoryProcessTransport(mockos) process._exited = True session.closed() self.assertTrue(process.stdinClosed) self.assertEqual(mockos.geteuid(), 100)