On Tue, Jun 11, 2024 at 02:01:39PM -0600, Simon Glass wrote: > Sometimes we know that the board is already running the right software, > so provide an option to allow running of tests directly, without first > resetting the board. > > This saves time when re-running a test where only the Python code is > changing. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > test/py/conftest.py | 3 +++ > test/py/u_boot_console_base.py | 14 ++++++++++---- > test/py/u_boot_console_exec_attach.py | 21 ++++++++++++--------- > 3 files changed, 25 insertions(+), 13 deletions(-) > > diff --git a/test/py/conftest.py b/test/py/conftest.py > index fc9dd3a83f8..ca66b9d9e61 100644 > --- a/test/py/conftest.py > +++ b/test/py/conftest.py > @@ -79,6 +79,8 @@ def pytest_addoption(parser): > parser.addoption('--gdbserver', default=None, > help='Run sandbox under gdbserver. The argument is the channel '+ > 'over which gdbserver should communicate, e.g. localhost:1234') > + parser.addoption('--no-prompt-wait', default=False, action='store_true', > + help="Assume that U-Boot is ready and don't wait for a prompt") > > def run_build(config, source_dir, build_dir, board_type, log): > """run_build: Build U-Boot > @@ -238,6 +240,7 @@ def pytest_configure(config): > ubconfig.board_type = board_type > ubconfig.board_identity = board_identity > ubconfig.gdbserver = gdbserver > + ubconfig.no_prompt_wait = config.getoption('no_prompt_wait') > ubconfig.dtb = build_dir + '/arch/sandbox/dts/test.dtb' > > env_vars = ( > diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py > index e4f86f6af5b..a61eec31148 100644 > --- a/test/py/u_boot_console_base.py > +++ b/test/py/u_boot_console_base.py > @@ -413,11 +413,17 @@ class ConsoleBase(object): > if not self.config.gdbserver: > self.p.timeout = TIMEOUT_MS > self.p.logfile_read = self.logstream > - if expect_reset: > - loop_num = 2 > + if self.config.no_prompt_wait: > + # Send an empty command to set up the 'expect' logic. This > has > + # the side effect of ensuring that there was no partial > command > + # line entered > + self.run_command(' ') > else: > - loop_num = 1 > - self.wait_for_boot_prompt(loop_num = loop_num) > + if expect_reset: > + loop_num = 2 > + else: > + loop_num = 1 > + self.wait_for_boot_prompt(loop_num = loop_num)
Hi Simon, I had a very bad day, so here you go: == ? /Andrejs > self.at_prompt = True > self.at_prompt_logevt = self.logstream.logfile.cur_evt > except Exception as ex: > diff --git a/test/py/u_boot_console_exec_attach.py > b/test/py/u_boot_console_exec_attach.py > index 5f4916b7da2..42fc15197b9 100644 > --- a/test/py/u_boot_console_exec_attach.py > +++ b/test/py/u_boot_console_exec_attach.py > @@ -59,15 +59,18 @@ class ConsoleExecAttach(ConsoleBase): > args = [self.config.board_type, self.config.board_identity] > s = Spawn(['u-boot-test-console'] + args) > > - try: > - self.log.action('Resetting board') > - cmd = ['u-boot-test-reset'] + args > - runner = self.log.get_runner(cmd[0], sys.stdout) > - runner.run(cmd) > - runner.close() > - except: > - s.close() > - raise > + if self.config.no_prompt_wait: > + self.log.action('Connecting to board without reset') > + else: > + try: > + self.log.action('Resetting board') > + cmd = ['u-boot-test-reset'] + args > + runner = self.log.get_runner(cmd[0], sys.stdout) > + runner.run(cmd) > + runner.close() > + except: > + s.close() > + raise > > return s > > -- > 2.34.1 >