|
| 1 | +# How to work on this project |
| 2 | + |
| 3 | +Thanks for your interest! |
| 4 | + |
| 5 | +You should have a few prerequisite tools installed. Most importantly, you'll |
| 6 | +need [mise](https://mise.jdx.dev/), an environment manager and task runner. |
| 7 | + |
| 8 | +Once you install mise, run `mise install` and `mise run` to get all the |
| 9 | +necessary tools and view the available actions. |
| 10 | + |
| 11 | +## Testing |
| 12 | + |
| 13 | +Tests are handled |
| 14 | +with [cargo-nextest](https://github.com/nextest-rs/nextest). Test coverage is |
| 15 | +generated with [cargo-llvm-cov.](https://github.com/taiki-e/cargo-llvm-cov) |
| 16 | +Generally, tests should be built out using |
| 17 | +[q_test_harness.](./crates/test_harness) Read that documentation to learn |
| 18 | +common testing patterns. |
| 19 | + |
| 20 | +You can test CI locally by running `mise ci`. You can change which workflow and |
| 21 | +which matrix parameters are set by using this sort of pattern: |
| 22 | + |
| 23 | +```mise ci -W ./.github/workflows/ci.yml --matrix target:x86_64-unknown-linux-gnu``` |
| 24 | + |
| 25 | +## PRs and Commit Messages |
| 26 | + |
| 27 | +PRs, when accepted, should be squashed into a single commit using [git |
| 28 | +convention](https://www.conventionalcommits.org/en/v1.0.0/) for the message. |
| 29 | +This is used to automatically generate changelogs when we publish. |
| 30 | + |
| 31 | +PRs are expected to follow best practices. If you author a PR using an LLM, |
| 32 | +please disclose that you have done so. All CI checks should pass. |
| 33 | + |
| 34 | + |
| 35 | +## Publishing |
| 36 | + |
| 37 | +Crates are published using |
| 38 | +[cargo-smart-release.](https://github.com/crate-ci/cargo-release) Contributors |
| 39 | +generally shouldn't be running this, so this documentation is mostly for me :p |
| 40 | +Crates should have at least 80% test coverage before release. Currently there |
| 41 | +are hooks to enforce this, so use your best judgement. |
0 commit comments