diff options
Diffstat (limited to 'test/py/tests/test_distro.py')
| -rw-r--r-- | test/py/tests/test_distro.py | 61 | 
1 files changed, 61 insertions, 0 deletions
| diff --git a/test/py/tests/test_distro.py b/test/py/tests/test_distro.py new file mode 100644 index 00000000000..bdf4ab657d1 --- /dev/null +++ b/test/py/tests/test_distro.py @@ -0,0 +1,61 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2025 Canonical Ltd. +# Written by Simon Glass <simon.glass@canonical.com> + +import pytest + +# Enable early console so that the test can see if something goes wrong +CONSOLE = 'earlycon=uart8250,io,0x3f8 console=uart8250,io,0x3f8' + +@pytest.mark.boardspec('qemu-x86_64') +@pytest.mark.role('qemu-x86_64') +def test_distro(ubman): +    """Test that of-platdata can be generated and used in sandbox""" +    with ubman.log.section('boot'): +        ubman.run_command('boot', wait_for_prompt=False) + +    with ubman.log.section('Grub'): +        # Wait for grub to come up and offset a menu +        ubman.p.expect(['Try or Install Ubuntu']) + +        # Press 'e' to edit the command line +        ubman.log.info("Pressing 'e'") +        ubman.run_command('e', wait_for_prompt=False, send_nl=False) + +        # Wait until we see the editor appear +        ubman.p.expect(['/casper/initrd']) + +        # Go down to the 'linux' line. Avoid using down-arrow as that includes +        # an Escape character, which may be parsed by Grub as such, causing it +        # to return to the top menu +        ubman.log.info("Going DOWN") +        ubman.ctrl('N') +        ubman.ctrl('N') +        ubman.ctrl('N') + +        # Go to end of line +        ubman.log.info("Going to EOL") +        ubman.ctrl('E') + +        # Backspace to remove 'quiet splash' +        ubman.log.info("Erasing quiet and splash") +        ubman.send('\b' * len('quiet splash')) + +        # Send our noisy console +        ubman.log.info("Noisy console") +        ubman.send(CONSOLE) + +        # Tell grub to boot +        ubman.log.info("boot") +        ubman.ctrl('X') +        ubman.p.expect(['Booting a command list']) + +    with ubman.log.section('Linux'): +        # Linux should start immediately +        ubman.p.expect(['Linux version']) + +    with ubman.log.section('Ubuntu'): +        # Shortly later, we should see this banner +        ubman.p.expect(['Welcome to .*Ubuntu 24.04.1 LTS.*!']) + +    ubman.restart_uboot() | 
