bake-test
Reusable Bake tasks for running Rust tests and testing downstream repositories against local Cargo workspace packages.
Motivation
Rust provides a good test runner through Cargo, but it does not provide a shared way to prepare project resources or exercise selected downstream crates. This package gives Rust projects a consistent bake test, bake test:coverage, and bake test:external interface while keeping Cargo and cargo-llvm-cov as the test runners.
Usage
Add the task crate to the private bake/ package:
Then run the workspace tests:
The coverage task runs documentation tests and requires 100% measured source-region coverage for the selected workspace test configuration. Regions inside unreachable!() calls are excluded automatically. It reports uncovered source locations when the gate fails. Install cargo-llvm-cov first; see the Rust Testing guide for feature selection and architecture notes. Use --package name to limit a workspace run to one package.
As a last resort, a package can exclude from the gate a file whose code cannot run in CI, such as raw device or platform calls. List each file in the package's Cargo.toml with a reason:
[[]]
= "src/xr.rs"
= "Raw OpenXR runtime calls; needs a headset runtime."
The coverage summary always lists each excluded file with its reason and size. See Excluding files for the rules.
Configure downstream repositories in the root Cargo.toml:
[[]]
= "https://github.com/socketry/downstream-project"
= "main"
See the Rust Testing guide for the test:before hook, checkout reuse, Cargo patching, and canonical GitHub Actions workflows.
Releasing
Prepare a release with cargo bake cargo:release:patch (or minor, major, or bump --version X.Y.Z) from a clean checkout of main; it bumps the version, commits with the Release: vVERSION trailer, validates the candidate, and opens the pull request. After review and merge, GitHub Actions publishes the release when the configured crates-io environment approves it. Follow the shared Releasing skill for the standard process.
Releases
See releases.md for the full release history.
v0.3.7
- Add a
licensejob to the canonicaltest.yml, which runslicense:checkon the pull request's head commit with its full history, and require it in thetest-resultaggregate, so a missing or stale license header fails the pull request that introduces it rather than changing sources in a release.
v0.3.6
- Add a
minimum-rustjob to the canonicaltest.yml, which readsrust-versionfrom the rootCargo.tomland checks every publishable package with that toolchain, and require it in thetest-resultaggregate.
v0.3.5
- Let a package exclude specific files from the coverage gate under
[[package.metadata.bake.test.coverage.exclude]], each with a requiredreason. The task rejects missing reasons, missing files, and duplicate entries, and always lists each excluded file with its reason and size in regions and lines.
See Also
Contributing
Please open an issue or pull request on GitHub.
Agent Context
Run cargo bake agent:context:install to install shared context and skills. Read .agents/context/index.md to find relevant guides, follow agents.md if present, and apply skills under .agents/skills/. The installer preserves repository-owned agents.md; it does not create or regenerate that file.