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 <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
8ebc227806
commit
e664c5f71c
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user