Structured, Meaningful Tests

Tests should follow consistent structure and provide high-signal coverage. Apply these rules: 1) Put tests in dedicated files - Follow the repo convention: place unit tests in separate `*_tests.rs` (or `*_test.rs`) files, not inline `#[cfg(test)] mod tests { ... }` blocks.

copy reviewer prompt

Prompt

Reviewer Prompt

Tests should follow consistent structure and provide high-signal coverage.

Apply these rules: 1) Put tests in dedicated files

  • Follow the repo convention: place unit tests in separate *_tests.rs (or *_test.rs) files, not inline #[cfg(test)] mod tests { ... } blocks.
  • Avoid inserting test modules between import statements. If you need a separate file but want to keep the module declaration local, use #[path = "..."] mod tests;.

Example pattern:

// in source file
#[cfg(test)]
#[path = "my_module_tests.rs"]
mod tests;

2) Keep tests concise and behavior-focused

  • Don’t add verbose scaffolding when a test only needs to prove one meaningful behavior (e.g., “override/clear works”).

3) Consolidate related checks into regression-style tests

  • When covering a previously reported bug, consolidate to a single regression test and add a comment pointing to the issue/PR (e.g., // regression for #10139).

4) Assert complete, observable sequences

  • If logic triggers multiple events (e.g., press + release routing), the test should assert the full sequence rather than only the first effect.

5) Ensure cross-platform coverage when you condition tests

  • If tests are excluded on Windows (or made platform-dependent), add Windows-specific unit tests to validate the same behavior/round-trip semantics.

These practices improve maintainability, reduce test brittleness, and ensure coverage remains accurate as behavior evolves.

Source discussions