Re: [yocto-patches] [wic][PATCH 0/5] ksparser: four argparse-type fixes plus unit coverage

Paul Barker <[email protected]> Thu, 16 Jul 2026 08:37:57 +0100
Newsgroups org.yoctoproject.lists.yocto-patches
Message-ID <[email protected]>
On Wed, 2026-07-15 at 18:32 -0400, Trevor Woerner via
lists.yoctoproject.org wrote:
> This series continues the standalone unit-test work, this time over the
> custom argparse types in ksparser.py: sizetype(), overheadtype(), and
> systemidtype(). It keeps the shape the suite settled on: each source fix
> is its own standalone commit, and the green test module lands last, so
> the suite passes at every commit.
> 
> Four fixes come first, each independent of the others:
> 
>   - sizetype() accepted a leading minus, so "-1M" returned -1024 and
>     "-5" returned -5120. A negative size is meaningless for every
>     consumer (--size, --fixed-size, --offset, --extra-*-space, the empty
>     source plugin's size=/bs=); reject it.
>   - overheadtype()'s below-1.0 error path did "...message..." % arg with
>     no %-placeholder, so every out-of-range value crashed with an opaque
>     TypeError instead of the intended ArgumentTypeError. Add the missing
>     placeholder.
>   - overheadtype() let float('nan') and float('inf') slip past the < 1.0
>     guard, which then multiplied the rootfs size by nan/inf downstream.
>     Reject any non-finite factor up front.
>   - systemidtype() converted with int(arg, 16), which also accepts a
>     bare "82" (hex 130) and a signed "+0x82", contradicting its
>     documented "hex between 0x1 and 0xFF" contract. Require an explicit
>     0x prefix.
> 
> The final commit adds tests/unit/test_ksparser_types.py, covering the
> three types' accepted forms, boundaries, and rejected inputs, and
> locking in the four fixes. Backing any fix out turns the matching test
> red. The suite is green at every commit and ruff-clean.
> 
> Trevor Woerner (5):
>   ksparser: reject negative sizes in sizetype()
>   ksparser: fix crash on out-of-range overhead factor
>   ksparser: reject non-finite overhead factors
>   ksparser: require an explicit 0x prefix for --system-id
>   tests/unit/test_ksparser_types: cover ksparser's argparse types
> 
>  src/wic/ksparser.py               |  15 +-
>  tests/unit/test_ksparser_types.py | 226 ++++++++++++++++++++++++++++++
>  2 files changed, 236 insertions(+), 5 deletions(-)
>  create mode 100644 tests/unit/test_ksparser_types.py

Hi Trevor,

This all looks good to me!

Reviewed-by: Paul Barker <[email protected]>

Best regards,

-- 
Paul Barker
signature.asc (application/pgp-signature, 252 B)
-----BEGIN PGP SIGNATURE-----

iIcEABYKAC8WIQSzjPXf5Y1BDWhU2iCrY1Tsnbr0bgUCaliKVREccGF1bEBwYmFy
a2VyLmRldgAKCRCrY1Tsnbr0bukyAQDI8nX9+EyezMJSHbUcUsF4V3iABIKsf8oE
mzkc/0hCbAEA4XeDbWaOji97Y0nBVRIgNCXipZJ+1hxLaM3AKzie5wQ=
=93Th
-----END PGP SIGNATURE-----