diff options
author | Simon Glass <sjg@chromium.org> | 2024-11-12 07:13:21 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-11-13 12:01:35 -0600 |
commit | 5825ddccc6e5fc6bac1a91c3be013443d84a8aed (patch) | |
tree | e771833f66f2a504512c6b5fbe50dcf7c9955dfd /test/py/u_boot_spawn.py | |
parent | f32951df40ae0c5389a480dedba2b22ba0a39a05 (diff) |
test: Avoid double echo when starting up
There is a very annoying bug at present where the terminal echos part
of the first command sent to the board. This happens because the
terminal is still set to echo for a period until Labgrid starts up and
can change this.
Fix this by disabling echo (and other terminal features) as soon as the
spawn happens.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test/py/u_boot_spawn.py')
-rw-r--r-- | test/py/u_boot_spawn.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/py/u_boot_spawn.py b/test/py/u_boot_spawn.py index 24d369035e5..9fa05057848 100644 --- a/test/py/u_boot_spawn.py +++ b/test/py/u_boot_spawn.py @@ -5,12 +5,15 @@ Logic to spawn a sub-process and interact with its stdio. """ +import io import os import re import pty import pytest import signal import select +import sys +import termios import time import traceback @@ -115,11 +118,30 @@ class Spawn: finally: os._exit(255) + old = None try: + isatty = False + try: + isatty = os.isatty(sys.stdout.fileno()) + + # with --capture=tee-sys we cannot call fileno() + except io.UnsupportedOperation as exc: + pass + if isatty: + new = termios.tcgetattr(self.fd) + old = new + new[3] = new[3] & ~(termios.ICANON | termios.ISIG) + new[3] = new[3] & ~termios.ECHO + new[6][termios.VMIN] = 0 + new[6][termios.VTIME] = 0 + termios.tcsetattr(self.fd, termios.TCSANOW, new) + self.poll = select.poll() self.poll.register(self.fd, select.POLLIN | select.POLLPRI | select.POLLERR | select.POLLHUP | select.POLLNVAL) except: + if old: + termios.tcsetattr(self.fd, termios.TCSANOW, old) self.close() raise |