mirror of https://github.com/astral-sh/ruff
85 lines
1.9 KiB
Rust
85 lines
1.9 KiB
Rust
use crate::TestServerBuilder;
|
|
use crate::notebook::NotebookBuilder;
|
|
use insta::assert_json_snapshot;
|
|
|
|
#[test]
|
|
fn text_document() -> anyhow::Result<()> {
|
|
let mut server = TestServerBuilder::new()?
|
|
.with_file("foo.py", "")?
|
|
.enable_pull_diagnostics(true)
|
|
.build()
|
|
.wait_until_workspaces_are_initialized();
|
|
|
|
server.open_text_document(
|
|
"foo.py",
|
|
r#"def test(): ...
|
|
|
|
test()
|
|
"#,
|
|
1,
|
|
);
|
|
|
|
let edits = server
|
|
.rename(
|
|
&server.file_uri("foo.py"),
|
|
lsp_types::Position {
|
|
line: 0,
|
|
character: 5,
|
|
},
|
|
"new_name",
|
|
)
|
|
.expect("Can rename `test` function");
|
|
|
|
assert_json_snapshot!(edits);
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn notebook() -> anyhow::Result<()> {
|
|
let mut server = TestServerBuilder::new()?
|
|
.with_file("test.ipynb", "")?
|
|
.enable_pull_diagnostics(true)
|
|
.build()
|
|
.wait_until_workspaces_are_initialized();
|
|
|
|
let mut builder = NotebookBuilder::virtual_file("test.ipynb");
|
|
builder.add_python_cell(
|
|
r#"from typing import Literal
|
|
|
|
type Style = Literal["italic", "bold", "underline"]"#,
|
|
);
|
|
|
|
let cell2 = builder.add_python_cell(
|
|
r#"def with_style(line: str, word, style: Style) -> str:
|
|
if style == "italic":
|
|
return line.replace(word, f"*{word}*")
|
|
elif style == "bold":
|
|
return line.replace(word, f"__{word}__")
|
|
|
|
position = line.find(word)
|
|
output = line + "\n"
|
|
output += " " * position
|
|
output += "-" * len(word)
|
|
"#,
|
|
);
|
|
|
|
builder.open(&mut server);
|
|
|
|
let edits = server
|
|
.rename(
|
|
&cell2,
|
|
lsp_types::Position {
|
|
line: 0,
|
|
character: 16,
|
|
},
|
|
"text",
|
|
)
|
|
.expect("Can rename `line` parameter");
|
|
|
|
assert_json_snapshot!(edits);
|
|
|
|
server.collect_publish_diagnostic_notifications(2);
|
|
Ok(())
|
|
}
|