<!--
title: Test edge cases
domain: devtools
topic: Testing
language: Python
source: astral-sh/ruff
updated: 2025-06-27
url: https://awesomereviewers.com/reviewers/ruff-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.

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:

```python
# 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.
