Hi Daniel,

On 2026-05-07T16:40:15, Daniel Golle <[email protected]> wrote:
> test: py: add mkimage dm-verity round-trip test
>
> Add test/py/tests/test_fit_verity.py with two tests.
>
> Both tests are skipped if veritysetup is not installed on the host.
>
> Signed-off-by: Daniel Golle <[email protected]>
>
> test/py/tests/test_fit_verity.py | 145 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 145 insertions(+)

Reviewed-by: Simon Glass <[email protected]>

A few improvements below

> diff --git a/test/py/tests/test_fit_verity.py 
> b/test/py/tests/test_fit_verity.py
> @@ -0,0 +1,145 @@
> +    # Without -E, mkimage should fail for dm-verity images
> +    dtc_args = f'-I dts -O dtb -i {tempdir}'
> +    with pytest.raises(Exception):
> +        utils.run_and_log(ubman,
> +                          [mkimage, '-D', dtc_args, '-f', its_file, 
> fit_file])

pytest.raises(Exception) is too broad - it will swallow any failure
(FileNotFoundError, an mkimage segfault, etc.) and the test will
appear to pass. Please use utils.run_and_log_expect_exception() with
the specific retcode and a fragment of the expected diagnostic
('dm-verity requires external data') so we verify mkimage rejected the
image for the right reason.

> diff --git a/test/py/tests/test_fit_verity.py 
> b/test/py/tests/test_fit_verity.py
> @@ -0,0 +1,145 @@
> +            dm-verity {
> +                algo = 'sha256';
> +                data-block-size = <4096>;
> +                hash-block-size = <4096>;
> +            };

Since v3 extends the block-count overflow check to cover
hash-block-size < data-block-size, and patch 5 calls out that
hash-start-block only equals num-data-blocks when the two sizes are
equal, how about a second positive case with mismatched sizes (e.g.
data 4096, hash 1024) so hash-start-block != num-data-blocks is
actually exercised.

> diff --git a/test/py/tests/test_fit_verity.py 
> b/test/py/tests/test_fit_verity.py
> @@ -0,0 +1,145 @@
> +    # Build the FIT with external data (required for dm-verity)
> +    dtc_args = f'-I dts -O dtb -i {tempdir}'
> +    utils.run_and_log(ubman,
> +                      [mkimage, '-E', '-D', dtc_args, '-f', its_file, 
> fit_file])

The test confirms mkimage writes back the four computed properties,
but never that the digest is correct for the data, so a regression
that produced a stable but wrong digest would still pass. Can you run
'veritysetup verify' against the external data and assert the digests
match?

Regards,
Simon

Reply via email to