docs: document pkh test
CI / build (push) Successful in 3m6s
CI / test (push) Skipped
CI / publish (push) Skipped
CI / snap (push) Successful in 6m22s

Add the DEP-8 runner to the command list and a usage section: default
chroot testbed sharing the deb tarball cache, binary reuse from pkh deb
with in-process rebuilds, the local and vm modes, and the 0/1/2 exit
contract. autopkgtest joins the shell-out list (vm mode) and the
roadmap bullet comes off — the feature exists.
This commit is contained in:
2026-09-27 21:33:11 +02:00
parent 8513805f98
commit 318bcea341
+31 -3
View File
@@ -22,8 +22,8 @@ cargo install --path .
``` ```
At runtime pkh shells out to the Debian packaging toolchain (git, At runtime pkh shells out to the Debian packaging toolchain (git,
dpkg-dev, quilt, mmdebstrap, lintian, pristine-tar, ...): install the dpkg-dev, quilt, mmdebstrap, lintian, pristine-tar, autopkgtest, ...):
ones your workflows use, or build the classic snap from install the ones your workflows use, or build the classic snap from
`snap/snapcraft.yaml` (`snapcraft pack`), which carries them. `snap/snapcraft.yaml` (`snapcraft pack`), which carries them.
## Usage and features ## Usage and features
@@ -55,6 +55,7 @@ Commands:
build Build the source package (into a .dsc) build Build the source package (into a .dsc)
put Upload the built source package to a PPA put Upload the built source package to a PPA
deb Build the source package into binary package (.deb) deb Build the source package into binary package (.deb)
test Run the package's DEP-8 as-installed tests (autopkgtests)
lint Lint the package (lintian wrapper + pkh-native checks) lint Lint the package (lintian wrapper + pkh-native checks)
prune Prune residual pkh build artifacts and caches prune Prune residual pkh build artifacts and caches
help Print this message or the help of the given subcommand(s) help Print this message or the help of the given subcommand(s)
@@ -133,11 +134,38 @@ A plain `pkh deb` never reuses a session — everything is rechecked from
scratch — and it replaces the session of its target. `pkh deb --resume` scratch — and it replaces the session of its target. `pkh deb --resume`
refuses to adopt a session built for a different series/architecture. refuses to adopt a session built for a different series/architecture.
### Running the DEP-8 tests
`pkh test` runs the package's as-installed tests (`debian/tests/control`,
declared by `Testsuite: autopkgtest` in `debian/control`) through a
native runner on a pkh testbed, and reports one verdict per test:
```
pkh test # test this tree: builds it first if needed
pkh test --mode local # on the current context, no isolation
pkh test --mode vm --image img.qcow2 # in a VM, via autopkgtest
pkh test --json --fail-on skip # CI-shaped
pkh test --list-tests # what does this package test?
```
By default the tests run in an ephemeral unshare chroot bootstrapped
from the same cached tarballs as `pkh deb`, against the binaries pkh deb
just built next to the tree (stale or missing output is rebuilt first;
`--no-build` refuses, `--debs` overrides). Pockets and PPAs resolve test
dependencies like in `pkh deb` (`-p`, `--ppa`), and `--test-name`,
`--skip-test`, `--shell-fail` and `--setup-commands` cover the day-to-day
debugging loop. Tests needing a real machine (`isolation-machine`,
`needs-reboot`) run only in `--mode vm`, which execs the installed
`autopkgtest` with its qemu runner.
Exit codes: 0 all tests passed (skips and flaky allowed), 1 at least one
test failed (or a `--fail-on` trigger), 2 runtime errors (no declared
tests, no usable testbed, ...).
## Future improvement ideas ## Future improvement ideas
- pull: try to fetch the correct git branch for series on Debian - pull: try to fetch the correct git branch for series on Debian
- deb: asynchronous build, detachable and monitorable - deb: asynchronous build, detachable and monitorable
- put: allow uploads to Debian or Ubuntu archives - put: allow uploads to Debian or Ubuntu archives
- test: add 'pkh test' to run autopkgtests
- pull: cache Sources.gz files to improve speed - pull: cache Sources.gz files to improve speed
- pull: 'pkh pull' in a package tree should git pull and re-fetch orig tgz - pull: 'pkh pull' in a package tree should git pull and re-fetch orig tgz