[PATCH v2 06/17] boot: Add a new test for global bootmeths

Tom Rini trini at konsulko.com
Tue Oct 7 19:58:49 CEST 2025


On Wed, Oct 01, 2025 at 03:26:31PM -0600, Simon Glass wrote:

> These have different behaviour from normal bootmeths and we are about to
> enhance it. So add a test and also an extra check in bootflow_iter()
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
[snip]
> @@ -388,6 +390,49 @@ static int bootflow_iter(struct unit_test_state *uts)
>  BOOTSTD_TEST(bootflow_iter, UTF_DM | UTF_SCAN_FDT | UTF_CONSOLE);
>  
>  #if defined(CONFIG_SANDBOX) && defined(CONFIG_BOOTMETH_GLOBAL)
> +
> +/* Check iterating through available bootflows to test global bootmeths */
> +static int bootflow_iter_glob(struct unit_test_state *uts)
> +{
> +	struct bootflow_iter iter;
> +	struct bootflow bflow;
> +
> +	bootstd_clear_glob();
> +
> +	/* we should get the global bootmeth initially */
> +	ut_asserteq(-EINVAL,
> +		    bootflow_scan_first(NULL, NULL, &iter, BOOTFLOWIF_ALL |
> +					BOOTFLOWIF_SHOW, &bflow));
> +	bootflow_show(0, &bflow, true);

Here is the one call of bootflow_show outside of where show_bootflow is
called today, and bootflow_show is called by the end of this series.

> +	ut_asserteq(3, iter.num_methods);
> +	ut_assert(iter.doing_global);
> +	ut_asserteq(2, iter.first_glob_method);
> +
> +	ut_asserteq(2, iter.cur_method);
> +	ut_asserteq(0, iter.part);
> +	ut_asserteq(0, iter.max_part);
> +	ut_asserteq_str("firmware0", iter.method->name);
> +	ut_asserteq(0, bflow.err);
> +	bootflow_free(&bflow);
> +
> +	/* next we should get the first non-global bootmeth */
> +	ut_asserteq(-EPROTONOSUPPORT, bootflow_scan_next(&iter, &bflow));
> +
> +	/* at this point the global bootmeths are stranded above num_methods */
> +	ut_asserteq(2, iter.num_methods);
> +	ut_asserteq(2, iter.first_glob_method);
> +	ut_assert(!iter.doing_global);
> +
> +	ut_asserteq(0, iter.cur_method);
> +	ut_asserteq(0, iter.part);
> +	ut_asserteq(0, iter.max_part);
> +	ut_asserteq_str("extlinux", iter.method->name);
> +	ut_asserteq(0, bflow.err);

Nothing in the rest of this test is checking the output of strings, and
nor should it since the test is checking the struct itself to be as
expected. Am I missing something? If not, I don't think we should bother
with the previous patch.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20251007/6c6086fa/attachment.sig>


More information about the U-Boot mailing list