u-boot/test/py/tests/test_vbe.py
Simon Glass 15c39587cf test: Move stat-printing into its own function
Add a function to show the stats, so we can decide when to print it.

This slightly adjusts the output, so that any 'test not found' message
appears on its own line after all other output.

The 'failures' message now appears in lower case so update pytest
accordingly.

Signed-off-by: Simon Glass <sjg@chromium.org>
2025-01-24 14:34:41 -06:00

120 lines
3 KiB
Python

# SPDX-License-Identifier: GPL-2.0+
# Copyright 2022 Google LLC
#
# Test addition of VBE
import pytest
import fit_util
# Define a base ITS which we can adjust using % and a dictionary
base_its = '''
/dts-v1/;
/ {
description = "Example kernel";
images {
kernel-1 {
data = /incbin/("%(kernel)s");
type = "kernel";
arch = "sandbox";
os = "linux";
load = <0x40000>;
entry = <0x8>;
compression = "%(compression)s";
random {
compatible = "vbe,random-rand";
vbe,size = <0x40>;
vbe,required;
};
aslr1 {
compatible = "vbe,aslr-move";
vbe,align = <0x100000>;
};
aslr2 {
compatible = "vbe,aslr-rand";
};
efi-runtime {
compatible = "vbe,efi-runtime-rand";
};
wibble {
compatible = "vbe,wibble";
};
};
fdt-1 {
description = "snow";
data = /incbin/("%(fdt)s");
type = "flat_dt";
arch = "sandbox";
load = <%(fdt_addr)#x>;
compression = "%(compression)s";
};
};
configurations {
default = "conf-1";
conf-1 {
kernel = "kernel-1";
fdt = "fdt-1";
};
};
};
'''
# Define a base FDT - currently we don't use anything in this
base_fdt = '''
/dts-v1/;
/ {
chosen {
};
};
'''
# This is the U-Boot script that is run for each test. First load the FIT,
# then run the 'bootm' command, then run the unit test which checks that the
# working tree has the required things filled in according to the OS requests
# above (random, aslr2, etc.)
base_script = '''
host load hostfs 0 %(fit_addr)x %(fit)s
fdt addr %(fit_addr)x
bootm start %(fit_addr)x
bootm loados
bootm prep
fdt addr
fdt print
ut bootstd -f vbe_test_fixup_norun
'''
@pytest.mark.boardspec('sandbox_flattree')
@pytest.mark.requiredtool('dtc')
def test_vbe(u_boot_console):
cons = u_boot_console
kernel = fit_util.make_kernel(cons, 'vbe-kernel.bin', 'kernel')
fdt = fit_util.make_dtb(cons, base_fdt, 'vbe-fdt')
fdt_out = fit_util.make_fname(cons, 'fdt-out.dtb')
params = {
'fit_addr' : 0x1000,
'kernel' : kernel,
'fdt' : fdt,
'fdt_out' : fdt_out,
'fdt_addr' : 0x80000,
'fdt_size' : 0x1000,
'compression' : 'none',
}
mkimage = cons.config.build_dir + '/tools/mkimage'
fit = fit_util.make_fit(cons, mkimage, base_its, params, 'test-vbe.fit',
base_fdt)
params['fit'] = fit
cmd = base_script % params
with cons.log.section('Kernel load'):
output = cons.run_command_list(cmd.splitlines())
assert 'failures: 0' in output[-1]