Skip to main content

Tests

Review test adequacy for changed code.

Scope

1. Coverage gaps

  • new exported functions or modules without tests
  • new branches or error paths without coverage
  • changed behavior that existing tests do not exercise

2. Edge cases

  • boundary conditions (empty inputs, missing files, null/undefined)
  • error recovery paths (command not found, parse failures)
  • configuration variants the code handles

3. Test quality

  • tests asserting implementation details instead of behavior (method call sequences break on refactor)
  • tests duplicating coverage without distinct scenarios
  • fragile tests (timing, ordering, absolute paths)
  • using the wrong test type (filesystem/process/network in unit tests) — move those to integration tests
  • missing cleanup (temp files, cache state)
  • mocking internals instead of testing through the real contract — mock at boundaries only
  • test names that don’t read as specifications

4. Unnecessary tests

  • tests covering trivial pass-through or type-only modules
  • tests duplicating what the type system guarantees
  • tests for code that has since changed

Evidence threshold

Only flag gaps where untested code has meaningful behavior. Do not demand 100% coverage — prioritize tests that catch real bugs.

Output

For each finding: severity, source file + test file, what is untested, why it matters, fix direction.

Then: Must-add | Should-add | Optional | Remove (if any).

Red flags

  • Demanding 100% line coverage
  • Flagging missing tests for trivial functions
  • Suggesting tests that only verify the type system
  • Broad test rewrites instead of targeted additions
  • Confusing test quantity with quality