add regression test

This commit is contained in:
Brent Westbrook
2025-12-31 16:59:12 -05:00
parent b2b9d91859
commit 8ccea64ed4
3 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
"""
Regression test for https://github.com/astral-sh/ruff/issues/20096
"""
from __future__ import annotations
from typing import Optional, cast
x: Optional[str] # UP045
x: "Optional[str]" # UP045
cast("Optional[str]", None) # UP045

View File

@@ -452,4 +452,17 @@ mod tests {
assert_diagnostics!(snapshot, diagnostics);
Ok(())
}
#[test]
fn up045_future_annotations_py39() -> Result<()> {
let diagnostics = test_path(
Path::new("pyupgrade/UP045_py39.py"),
&settings::LinterSettings {
unresolved_target_version: PythonVersion::PY39.into(),
..settings::LinterSettings::for_rule(Rule::NonPEP604AnnotationOptional)
},
)?;
assert_diagnostics!(diagnostics);
Ok(())
}
}

View File

@@ -0,0 +1,37 @@
---
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
---
UP045 [*] Use `X | None` for type annotations
--> UP045_py39.py:10:4
|
10 | x: Optional[str] # UP045
| ^^^^^^^^^^^^^
11 | x: "Optional[str]" # UP045
12 | cast("Optional[str]", None) # UP045
|
help: Convert to `X | None`
7 | from typing import Optional, cast
8 |
9 |
- x: Optional[str] # UP045
10 + x: str | None # UP045
11 | x: "Optional[str]" # UP045
12 | cast("Optional[str]", None) # UP045
note: This is an unsafe fix and may change runtime behavior
UP045 [*] Use `X | None` for type annotations
--> UP045_py39.py:11:5
|
10 | x: Optional[str] # UP045
11 | x: "Optional[str]" # UP045
| ^^^^^^^^^^^^^
12 | cast("Optional[str]", None) # UP045
|
help: Convert to `X | None`
8 |
9 |
10 | x: Optional[str] # UP045
- x: "Optional[str]" # UP045
11 + x: "str | None" # UP045
12 | cast("Optional[str]", None) # UP045
note: This is an unsafe fix and may change runtime behavior