mirror of https://github.com/astral-sh/ruff
[ty] Add some attribute/method renaming test cases (#21809)
This commit is contained in:
parent
5df8a959f5
commit
3deb7e1b90
|
|
@ -1426,4 +1426,144 @@ result = func(10, y=20)
|
|||
|
|
||||
");
|
||||
}
|
||||
|
||||
// TODO: This should rename all overloads
|
||||
#[test]
|
||||
fn rename_overloaded_function() {
|
||||
let test = CursorTest::builder()
|
||||
.source(
|
||||
"mypackage/__init__.py",
|
||||
r#"
|
||||
from typing import overload, Any
|
||||
|
||||
@overload
|
||||
def test<CURSOR>() -> None: ...
|
||||
@overload
|
||||
def test(a: str) -> str: ...
|
||||
@overload
|
||||
def test(a: int) -> int: ...
|
||||
|
||||
def test(a: Any) -> Any:
|
||||
return a
|
||||
"#,
|
||||
)
|
||||
.source(
|
||||
"mypackage/subpkg/__init__.py",
|
||||
r#"
|
||||
from lib import test
|
||||
|
||||
test("test")
|
||||
"#,
|
||||
)
|
||||
.build();
|
||||
|
||||
assert_snapshot!(test.rename("better_name"), @r"
|
||||
info[rename]: Rename symbol (found 1 locations)
|
||||
--> mypackage/__init__.py:5:5
|
||||
|
|
||||
4 | @overload
|
||||
5 | def test() -> None: ...
|
||||
| ^^^^
|
||||
6 | @overload
|
||||
7 | def test(a: str) -> str: ...
|
||||
|
|
||||
");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rename_attribute() {
|
||||
let test = CursorTest::builder()
|
||||
.source(
|
||||
"mypackage/__init__.py",
|
||||
r#"
|
||||
class Test:
|
||||
attribute<CURSOR>: str
|
||||
|
||||
def __init__(self, value: str):
|
||||
self.attribute = value
|
||||
|
||||
class Child(Test):
|
||||
def test(self):
|
||||
return self.attribute
|
||||
|
||||
|
||||
c = Child("test")
|
||||
|
||||
print(c.attribute)
|
||||
c.attribute = "new_value"
|
||||
"#,
|
||||
)
|
||||
.build();
|
||||
|
||||
assert_snapshot!(test.rename("better_name"), @r#"
|
||||
info[rename]: Rename symbol (found 5 locations)
|
||||
--> mypackage/__init__.py:3:5
|
||||
|
|
||||
2 | class Test:
|
||||
3 | attribute: str
|
||||
| ^^^^^^^^^
|
||||
4 |
|
||||
5 | def __init__(self, value: str):
|
||||
6 | self.attribute = value
|
||||
| ---------
|
||||
7 |
|
||||
8 | class Child(Test):
|
||||
9 | def test(self):
|
||||
10 | return self.attribute
|
||||
| ---------
|
||||
|
|
||||
::: mypackage/__init__.py:15:9
|
||||
|
|
||||
13 | c = Child("test")
|
||||
14 |
|
||||
15 | print(c.attribute)
|
||||
| ---------
|
||||
16 | c.attribute = "new_value"
|
||||
| ---------
|
||||
|
|
||||
"#);
|
||||
}
|
||||
|
||||
// TODO: This should rename all attribute usages
|
||||
// Note: Pylance only renames the assignment in `__init__`.
|
||||
#[test]
|
||||
fn rename_implicit_attribute() {
|
||||
let test = CursorTest::builder()
|
||||
.source(
|
||||
"mypackage/__init__.py",
|
||||
r#"
|
||||
class Test:
|
||||
def __init__(self, value: str):
|
||||
self.<CURSOR>attribute = value
|
||||
|
||||
class Child(Test):
|
||||
def __init__(self, value: str):
|
||||
super().__init__(value)
|
||||
self.attribute = value + "child"
|
||||
|
||||
def test(self):
|
||||
return self.attribute
|
||||
|
||||
|
||||
c = Child("test")
|
||||
|
||||
print(c.attribute)
|
||||
c.attribute = "new_value"
|
||||
"#,
|
||||
)
|
||||
.build();
|
||||
|
||||
assert_snapshot!(test.rename("better_name"), @r"
|
||||
info[rename]: Rename symbol (found 1 locations)
|
||||
--> mypackage/__init__.py:4:14
|
||||
|
|
||||
2 | class Test:
|
||||
3 | def __init__(self, value: str):
|
||||
4 | self.attribute = value
|
||||
| ^^^^^^^^^
|
||||
5 |
|
||||
6 | class Child(Test):
|
||||
|
|
||||
");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue