| # 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() |