def test_write(self, cmd, recv_out, recv_err): text = bytes('Hello World') received = bytearray() def recv_data(buffer): # cannot use received += buffer with a variable # defined in the parent function. operator.iadd(received, buffer) c = self._startCommand(cmd) p = utils.CommandStream( c, recv_data if recv_out else self.assertUnexpectedCall, recv_data if recv_err else self.assertUnexpectedCall) c.stdin.write(text) c.stdin.flush() c.stdin.close() while not p.closed: p.receive() retcode = c.wait() self.assertEqual(retcode, 0) self.assertEqual(text, str(received))
def test_timeout(self): c = self._startCommand(["sleep", "5"]) p = utils.CommandStream(c, self.assertUnexpectedCall, self.assertUnexpectedCall) with self.assertElapsed(2): p.receive(2) self.assertEqual(p.closed, False) c.terminate() self.assertEqual(c.wait(), -signal.SIGTERM)
def test_signals(self, method, expected_retcode): c = self._startCommand(["sleep", "2"]) p = utils.CommandStream(c, self.assertUnexpectedCall, self.assertUnexpectedCall) getattr(c, method)() try: with self.assertElapsed(0): p.receive(2) finally: retcode = c.wait() self.assertEqual(retcode, expected_retcode)