# SPDX-License-Identifier: GPL-2.0+ # Copyright 2025 Canonical Ltd. # Written by Simon Glass 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()