u-boot/test/py/tests/test_bootmenu.py
Tom Rini e1076c6619 doc: pytest: Document the test_bootmenu test
Add this test to the documentation. There was already a function comment
that included the argument, so convert it to the right style to be
rendered correctly in output.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2025-05-11 12:52:57 +02:00

47 lines
2.0 KiB
Python

# SPDX-License-Identifier: GPL-2.0+
"""Test bootmenu"""
import pytest
@pytest.mark.buildconfigspec('cmd_bootmenu')
def test_bootmenu(ubman):
"""Test bootmenu
Args:
ubman: U-Boot console
"""
with ubman.temporary_timeout(500):
ubman.run_command('setenv bootmenu_default 1')
ubman.run_command('setenv bootmenu_0 test 1=echo ok 1')
ubman.run_command('setenv bootmenu_1 test 2=echo ok 2')
ubman.run_command('setenv bootmenu_2 test 3=echo ok 3')
ubman.run_command('bootmenu 2', wait_for_prompt=False)
for i in ('U-Boot Boot Menu', 'test 1', 'test 2', 'test 3', 'autoboot'):
ubman.p.expect([i])
# Press enter key to execute default entry
response = ubman.run_command(cmd='\x0d', wait_for_echo=False, send_nl=False)
assert 'ok 2' in response
ubman.run_command('bootmenu 2', wait_for_prompt=False)
ubman.p.expect(['autoboot'])
# Press up key to select prior entry followed by the enter key
response = ubman.run_command(cmd='\x1b\x5b\x41\x0d', wait_for_echo=False,
send_nl=False)
assert 'ok 1' in response
ubman.run_command('bootmenu 2', wait_for_prompt=False)
ubman.p.expect(['autoboot'])
# Press down key to select next entry followed by the enter key
response = ubman.run_command(cmd='\x1b\x5b\x42\x0d', wait_for_echo=False,
send_nl=False)
assert 'ok 3' in response
ubman.run_command('bootmenu 2; echo rc:$?', wait_for_prompt=False)
ubman.p.expect(['autoboot'])
# Press the escape key
response = ubman.run_command(cmd='\x1b', wait_for_echo=False, send_nl=False)
assert 'ok' not in response
assert 'rc:0' in response
ubman.run_command('setenv bootmenu_default')
ubman.run_command('setenv bootmenu_0')
ubman.run_command('setenv bootmenu_1')
ubman.run_command('setenv bootmenu_2')