mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-28 04:45:05 +00:00
Merge #5201
5201: Add function to test completion edit r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
ef6a6d75d5
2 changed files with 22 additions and 1 deletions
|
@ -176,7 +176,10 @@ fn complete_return(
|
||||||
mod tests {
|
mod tests {
|
||||||
use expect::{expect, Expect};
|
use expect::{expect, Expect};
|
||||||
|
|
||||||
use crate::completion::{test_utils::completion_list, CompletionKind};
|
use crate::completion::{
|
||||||
|
test_utils::{check_edit, completion_list},
|
||||||
|
CompletionKind,
|
||||||
|
};
|
||||||
|
|
||||||
fn check(ra_fixture: &str, expect: Expect) {
|
fn check(ra_fixture: &str, expect: Expect) {
|
||||||
let actual = completion_list(ra_fixture, CompletionKind::Keyword);
|
let actual = completion_list(ra_fixture, CompletionKind::Keyword);
|
||||||
|
@ -312,6 +315,11 @@ mod tests {
|
||||||
kw while
|
kw while
|
||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
|
check_edit(
|
||||||
|
"else",
|
||||||
|
r#"fn quux() { if true { () } <|> }"#,
|
||||||
|
r#"fn quux() { if true { () } else {$0} }"#,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
//! Runs completion for testing purposes.
|
//! Runs completion for testing purposes.
|
||||||
|
|
||||||
use hir::Semantics;
|
use hir::Semantics;
|
||||||
|
use itertools::Itertools;
|
||||||
use ra_syntax::{AstNode, NodeOrToken, SyntaxElement};
|
use ra_syntax::{AstNode, NodeOrToken, SyntaxElement};
|
||||||
use stdx::format_to;
|
use stdx::format_to;
|
||||||
|
use test_utils::assert_eq_text;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
completion::{completion_item::CompletionKind, CompletionConfig},
|
completion::{completion_item::CompletionKind, CompletionConfig},
|
||||||
|
@ -54,6 +56,17 @@ pub(crate) fn completion_list_with_options(
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn check_edit(what: &str, ra_fixture_before: &str, ra_fixture_after: &str) {
|
||||||
|
let (analysis, position) = analysis_and_position(ra_fixture_before);
|
||||||
|
let completions: Vec<CompletionItem> =
|
||||||
|
analysis.completions(&CompletionConfig::default(), position).unwrap().unwrap().into();
|
||||||
|
let (completion,) =
|
||||||
|
completions.into_iter().filter(|it| it.label() == what).collect_tuple().unwrap();
|
||||||
|
let mut actual = analysis.file_text(position.file_id).unwrap().to_string();
|
||||||
|
completion.text_edit().apply(&mut actual);
|
||||||
|
assert_eq_text!(ra_fixture_after, &actual)
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) {
|
pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) {
|
||||||
let (analysis, pos) = analysis_and_position(code);
|
let (analysis, pos) = analysis_and_position(code);
|
||||||
analysis
|
analysis
|
||||||
|
|
Loading…
Reference in a new issue