From e664c5f71c9614b991b13225809772eaea4a3dc5 Mon Sep 17 00:00:00 2001 From: Ricardo Martincoski Date: Wed, 28 Jun 2017 23:45:43 -0300 Subject: [PATCH] support/testing: let pexpect write stdout to log When the parameter logfile is passed to spawn(), pexpect sends both stdin and stdout to the logfile and it creates a double echo effect. One way to avoid the double echo in the logfile would be to disable the echo on the terminal just after login ("stty -echo"), but double echo of user and password would remain. Instead of that, send only the stdout to the logfile using the logfile_read property. Signed-off-by: Ricardo Martincoski Signed-off-by: Thomas Petazzoni --- support/testing/infra/emulator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/support/testing/infra/emulator.py b/support/testing/infra/emulator.py index aa1e9e5b2c..55110db401 100644 --- a/support/testing/infra/emulator.py +++ b/support/testing/infra/emulator.py @@ -67,6 +67,8 @@ class Emulator(object): self.logfile.write("> starting qemu with '%s'\n" % " ".join(qemu_cmd)) self.qemu = pexpect.spawn(qemu_cmd[0], qemu_cmd[1:]) + # We want only stdout into the log to avoid double echo + self.qemu.logfile_read = self.logfile def __read_until(self, waitstr, timeout=5): index = self.qemu.expect([waitstr, pexpect.TIMEOUT], timeout=timeout) @@ -74,7 +76,6 @@ class Emulator(object): if index == 0: data += self.qemu.after self.log += data - self.logfile.write(data) # Remove double carriage return from qemu stdout so str.splitlines() # works as expected. return data.replace("\r\r", "\r")