Open an issue first for a new feature or a change of behavior. A short discussion saves a large rewrite.
make help # every target
make lint # clippy, rustdoc, rustfmt, prettier
make test-unit
make verify-generatedmake lint runs cargo fmt on nightly. rust-toolchain.toml pins the rest.
A change to the generator changes its own output. Three paths hold that output:
crates/oapi-codegen/tests/generatedexamples/bookstore/generateddocs/cli.md
Run make verify-generated before you open a pull request. It regenerates all
three and fails on a difference. CI runs the same target.
TEST_TABLE in crates/oapi-codegen/tests/coverage.rs lists every OpenAPI 3.0
construct. Each one is Supported, Unsupported, Ignored, or Planned. Nothing is
unknown, and a test fails when a construct has no entry.
A new fixture needs four registrations, or the tests fail:
- Its row in
TEST_TABLE. - Its stem in the matching fixture list, such as
COMBINED_FIXTURES. - Its stem in the matching
generated_tests!macro call. - Its module in
tests/generated.rs.
Base your branch on develop. Only main carries stable releases.
Write commit messages in the
Conventional Commits form. commitlint
checks them, and each line has a limit of 150 characters.
Dependency updates use the deps scope. Cargo updates use build(deps), and
GitHub Actions updates use ci(deps). semantic-release groups these commits
under Dependency Updates.
Give the smallest specification that shows the problem. This tool reads a specification, so a report without one is hard to act on.