1# SPDX-License-Identifier: GPL-2.0+ 2# Copyright 2025 Canonical Ltd. 3# Written by Simon Glass <simon.glass@canonical.com> 4 5import pytest 6 7# Enable early console so that the test can see if something goes wrong 8CONSOLE = 'earlycon=uart8250,io,0x3f8 console=uart8250,io,0x3f8' 9 10@pytest.mark.boardspec('qemu-x86_64') 11@pytest.mark.role('qemu-x86_64') 12def test_distro(ubman): 13 """Test that of-platdata can be generated and used in sandbox""" 14 with ubman.log.section('boot'): 15 ubman.run_command('boot', wait_for_prompt=False) 16 17 with ubman.log.section('Grub'): 18 # Wait for grub to come up and offset a menu 19 ubman.p.expect(['Try or Install Ubuntu']) 20 21 # Press 'e' to edit the command line 22 ubman.log.info("Pressing 'e'") 23 ubman.run_command('e', wait_for_prompt=False, send_nl=False) 24 25 # Wait until we see the editor appear 26 ubman.p.expect(['/casper/initrd']) 27 28 # Go down to the 'linux' line. Avoid using down-arrow as that includes 29 # an Escape character, which may be parsed by Grub as such, causing it 30 # to return to the top menu 31 ubman.log.info("Going DOWN") 32 ubman.ctrl('N') 33 ubman.ctrl('N') 34 ubman.ctrl('N') 35 36 # Go to end of line 37 ubman.log.info("Going to EOL") 38 ubman.ctrl('E') 39 40 # Backspace to remove 'quiet splash' 41 ubman.log.info("Erasing quiet and splash") 42 ubman.send('\b' * len('quiet splash')) 43 44 # Send our noisy console 45 ubman.log.info("Noisy console") 46 ubman.send(CONSOLE) 47 48 # Tell grub to boot 49 ubman.log.info("boot") 50 ubman.ctrl('X') 51 ubman.p.expect(['Booting a command list']) 52 53 with ubman.log.section('Linux'): 54 # Linux should start immediately 55 ubman.p.expect(['Linux version']) 56 57 with ubman.log.section('Ubuntu'): 58 # Shortly later, we should see this banner 59 ubman.p.expect(['Welcome to .*Ubuntu 24.04.1 LTS.*!']) 60 61 ubman.restart_uboot() 62