[PATCH] test: boot: Add test for bootmeth_rauc

Simon Glass sjg at chromium.org
Wed Oct 8 16:52:59 CEST 2025


On Wed, 8 Oct 2025 at 08:50, Tom Rini <trini at konsulko.com> wrote:
>
> On Wed, Oct 08, 2025 at 08:57:30AM +0200, Martin Schwan wrote:
>
> > Add a simple unit test for testing the RAUC bootmethod. Provide only the
> > very basic tests for now, running a scan and list, to verify correct
> > detection of the RAUC bootmethod. More advanced boot tests of this
> > bootmethod can be added in a separate patch.
> >
> > This requires another mmc image (mmc9) to contain the following
> > partitions:
> >
> > 1. boot A: contains a dummy boot.scr
> > 2. root A: contains an empty root filesystem
> > 3. boot B: contains a dummy boot.scr
> > 4. root B: contains an empty root filesystem
> >
> > The bootmeth_rauc scans all four partitions for existence and expects a
> > boot script in each boot partition.
> >
> > Also add BOOTMETH_RAUC as a dependency on sandbox so that we can test
> > this with:
> >
> > $ ./test/py/test.py -B sandbox --build -k test_ut # build the mmc9.img
> > $ ./test/py/test.py -B sandbox --build -k bootflow_rauc
> >
> > Signed-off-by: Martin Schwan <m.schwan at phytec.de>
>
> I'm glad to see the tests. A question:
>
> [snip]
> > +    # Generate boot script
> > +    script = '# dummy boot script'
> > +    bootdir = os.path.join(mnt, 'boot')
> > +    utils.run_and_log(ubman, f'mkdir -p {bootdir}')
> > +    cmd_fname = os.path.join(bootdir, 'boot.cmd')
> > +    scr_fname = os.path.join(bootdir, 'boot.scr')
> > +    with open(cmd_fname, 'w', encoding='ascii') as outf:
> > +        print(script, file=outf)
> > +
> > +    mkimage = os.path.join(ubman.config.build_dir, 'tools/mkimage')
> > +    utils.run_and_log(
> > +        ubman, f'{mkimage} -C none -A arm -T script -d {cmd_fname} {scr_fname}')
> > +
> > +    # Create boot filesystem image with boot script in it and copy to disk image
> > +    fsfile = 'rauc_boot.img'
> > +    utils.run_and_log(ubman, f'fallocate -l 8M {fsfile}')
> > +    utils.run_and_log(ubman, f'mkfs.vfat {fsfile}')
> > +    utils.run_and_log(ubman, ['sh', '-c', f'mcopy -vs -i {fsfile} {scr_fname} ::/'])
> > +    utils.run_and_log(ubman, f'dd if={fsfile} of=mmc{mmc_dev}.img bs=1M seek=1 conv=notrunc')
> > +    utils.run_and_log(ubman, f'dd if={fsfile} of=mmc{mmc_dev}.img bs=1M seek=19 conv=notrunc')
> > +    utils.run_and_log(ubman, f'rm -f {fsfile} {cmd_fname} {scr_fname}')
> > +
> > +    # Create empty root filesystem image and copy to disk image
> > +    fsfile = 'rauc_root.img'
> > +    utils.run_and_log(ubman, f'fallocate -l 10M {fsfile}')
> > +    utils.run_and_log(ubman, f'mkfs.vfat {fsfile}')
> > +    utils.run_and_log(ubman, f'dd if={fsfile} of=mmc{mmc_dev}.img bs=1M seek=9 conv=notrunc')
> > +    utils.run_and_log(ubman, f'dd if={fsfile} of=mmc{mmc_dev}.img bs=1M seek=27 conv=notrunc')
> > +    utils.run_and_log(ubman, f'rm -f {fsfile}')
>
> Can we use mk_fs from test/py/tests/fs_helper.py for this part? I know
> we can't use setup_image without further changes to allow for 'spec' to
> be passed (which may or may not be worth doing, I'm not sure) but I
> think we can use mk_fs here? Thanks.

+1

Other than that:

Reviewed-by: Simon Glass <sjg at chromium.org>

and thanks for doing it.

Regards,
Simon


More information about the U-Boot mailing list