Run all existing software tests and static/documentation checks.
Complete setup, then run the three checks:
make pre-commit # static checks and hooks
make test-all # tests
make docs-build # strict documentation buildmake check runs all three at once (and first warns if the Git hooks are missing):
make checkAll current tests are self-contained; there is no integration suite or coverage instrumentation yet.
test-all runs the unit tests, then builds the wheel and loads its entry point in an isolated environment.
Future integration suites must join test-all and CI.
| Command | Scope |
|---|---|
make check |
pre-commit-status, pre-commit, test-all and docs-build |
make test-all |
Unit tests plus the built-wheel smoke; required comprehensive check |
make test-unit / make test-local |
Unit tests; use ARGS to select cases |
make test-installation |
Build the wheel, install it in a throwaway env, load hello |
make pre-commit |
Static hooks and strict docs; FILES="path/a path/b" selects files |
make pre-commit-status |
Warn when the Git hooks are not installed |
make docs-build |
Strict docs build only |
make build-package |
Build and verify the wheel/sdist separately |
For example:
make test-unit N=1 ARGS="-k release"Tests use four workers by default (N=4). test-all rejects selection filters; empty collections fail.
make test-installation builds the wheel and loads its entry point in an isolated environment; test-all
runs it after the unit tests.
Use tests/unit/test_<module>.py; tests/README.md maps docs/release tests.
Use tmp_path and monkeypatch so parallel tests share no state or local dotenv settings.
Mark async tests with @pytest.mark.asyncio (strict mode).
Release tests use isolated Git/GitHub/uv command substitutes and never publish.
CI and both release branches run static checks and test-all; summaries include setup failures.
Build/package installation checks remain separate, and no live-service validation is claimed.
Hooks check formatting and lint (Ruff), syntax and whitespace, secrets, Markdown and spelling, the
lockfile and the strict docs build, workflow syntax (actionlint) and workflow security (zizmor). Commitizen runs only at the commit-msg stage.
make install-dev installs the Git hooks in a checkout (not in CI or Docker); run
make pre-commit-install if that step failed, and make pre-commit-status (part of make check) warns
when they are missing. make pre-commit only runs the hooks and never installs them.
See .pre-commit-config.yaml for the full list; pip-audit, bandit and markdown-link-check are disabled. .github/zizmor.yml holds the one
zizmor exception: the release workflow's checkouts keep their credentials because they push.