Re: [wic][PATCH v4 0/6] tests: standalone test-suite framework plus the first unit test
Trevor Woerner <[email protected]> Wed, 8 Jul 2026 23:50:12 -0400
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <[email protected]> |
Patch series applied to wic, master branch. Thanks Paul! On Mon 2026-07-06 @ 06:28:58 PM, Trevor Woerner wrote: > wic has no test mechanism of its own; it relies on the oe-selftest from > oe-core, which needs a full bitbake build to exercise even pure-Python > logic. This series starts a small standalone suite that runs from a > plain checkout, framework first, then the first fix, and its test. > > - the suite skeleton (pyproject test extra, pytest config, layout, > a justfile command runner, and a README Testing section); > - a conftest that imports wic once up front (stopping the session with > a clear message if that fails) and prints a session banner; > - optional coverage and ruff linting, each exposed as just recipes; > - a one-line fix to wic.bb.utils (import errno) so mkdirhier's OSError > handler works, as its own commit; > - unit tests for mkdirhier() that pin its behaviour and catch that > bug. > > The suite is green at every commit and the test tree is ruff-clean. > > Changes in v4 (in response to review feedback, thanks to Paul Barker): > > v4 restructures the v3 10-patch series into 6 patches. How the old > patches map to the new ones: > > - v3 1/10 (skeleton) -> v4 1/6, which also gains a justfile command > runner in place of the run-tests.sh wrapper and no longer creates a > tests/docs/ tree; > - v3 2/10 (conftest banner) -> v4 2/6, which also absorbs the > wic-import check (see next line); > - v3 3/10 (run-tests.sh wrapper) -> dropped; the justfile replaces it > and its wic-import check moves into conftest, so the check runs on > every invocation rather than only through the wrapper; > - v3 4/10 (coverage) -> v4 3/6, exposed as just recipes; > - v3 5/10 (ruff linting) -> v4 4/6, exposed as just recipes, with > ruff now pinned exactly so the clean-bar gate is reproducible; > - v3 8/10 (tests/** E402 ignore) -> folded into v4 4/6; > - v3 6/10, 7/10, 10/10 (docs README, authoring guide, review rubric) > -> dropped; the suite ships a short README Testing section instead > of a tests/docs/ tree; > - v3 9/10 (test plus folded-in errno fix) -> split into v4 5/6 (the > errno fix, on its own, first) and v4 6/6 (the tests), and the tests > are reframed to target mkdirhier's own behaviour rather than > re-testing os.makedirs. > > Dependency versions were also refreshed to current releases. > > Changes in v3: > > - test_bb_utils used the tmp_path fixture instead of > tempfile.mkdtemp(), so the tests no longer leaked scratch > directories under /tmp; > - documented the standard pytest scratch-directory controls (TMPDIR > and --basetemp) rather than a custom variable; > - added a review-rubric doc. > > Changes in v2: > > - v1 was a single ~6000-line commit that used xfail markers to record > the bugs it found; v2 broke the work into a reviewable series where > each test lands green next to the fix that makes it pass, with no > xfails. > > Trevor Woerner (6): > tests: add the standalone unit-test suite skeleton > tests: add conftest with a wic-import preflight and session banner > tests: add optional coverage reporting > add ruff linting > bb/utils: import errno so mkdirhier's OSError handler works > tests/unit/test_bb_utils: cover mkdirhier() > > .gitignore | 4 ++ > README.md | 15 +++++++ > justfile | 27 +++++++++++++ > pyproject.toml | 24 +++++++++++ > src/wic/bb/utils.py | 1 + > tests/conftest.py | 28 +++++++++++++ > tests/unit/test_bb_utils.py | 81 +++++++++++++++++++++++++++++++++++++ > 7 files changed, 180 insertions(+) > create mode 100644 justfile > create mode 100644 tests/conftest.py > create mode 100644 tests/unit/test_bb_utils.py > > -- > 2.50.0.173.g8b6f19ccfc3a