mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-25 06:46:00 +00:00

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>
120 lines
3 KiB
Python
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]
|