Test edge cases

When writing tests, prioritize coverage of edge cases and non-standard code patterns to ensure robust functionality. Particularly for linting rules or code transformations, identify scenarios that might behave unexpectedly or require special handling.

copy reviewer prompt

Prompt

Reviewer Prompt

When writing tests, prioritize coverage of edge cases and non-standard code patterns to ensure robust functionality. Particularly for linting rules or code transformations, identify scenarios that might behave unexpectedly or require special handling.

Include tests for:

  • Code with comments in various positions
  • Unusual formatting or line continuations
  • Nested object constructions
  • Dependencies on multiple variables
  • Different parameter passing styles (positional vs. keyword)

For example, when testing a rule that transforms string paths to Path objects:

# Test with comments in different positions
func_name( # comment
    "filename")

func_name( # comment
    "filename",
    #comment
)

# Test with line continuations
func_name \
 \
        ( # comment
        "filename",
    )

# Test with nested objects
func_name(Path("filename").resolve())

# Test with dependencies on other variables
for x, y in some_pairs:
    result.add((x, y))

Testing these edge cases early prevents subtle bugs from surfacing in production code and makes your code more maintainable over time.

Source discussions