blob: bdf4ab657d1be2cb04cab848a3cbee618b86d5d9 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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()
 |