Skip to content

Commit b660300

Browse files
bors[bot]matklad
andauthored
Merge #3555
3555: Introduce completion test utils r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2 parents bf77850 + fe9853f commit b660300

16 files changed

+91
-40
lines changed

crates/ra_ide/src/completion.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ mod complete_scope;
1616
mod complete_postfix;
1717
mod complete_macro_in_item_position;
1818
mod complete_trait_impl;
19+
#[cfg(test)]
20+
mod test_utils;
1921

2022
use ra_ide_db::RootDatabase;
2123

22-
#[cfg(test)]
23-
use crate::completion::completion_item::do_completion;
2424
use crate::{
2525
completion::{
2626
completion_context::CompletionContext,

crates/ra_ide/src/completion/complete_dot.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: &T
7070

7171
#[cfg(test)]
7272
mod tests {
73-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
73+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
7474
use insta::assert_debug_snapshot;
7575

7676
fn do_ref_completion(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_fn_param.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ pub(super) fn complete_fn_param(acc: &mut Completions, ctx: &CompletionContext)
5252

5353
#[cfg(test)]
5454
mod tests {
55-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
55+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
5656
use insta::assert_debug_snapshot;
5757

5858
fn do_magic_completion(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_keyword.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ fn complete_return(
117117

118118
#[cfg(test)]
119119
mod tests {
120-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
120+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
121121
use insta::assert_debug_snapshot;
122122

123123
fn do_keyword_completion(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_macro_in_item_position.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ pub(super) fn complete_macro_in_item_position(acc: &mut Completions, ctx: &Compl
1515

1616
#[cfg(test)]
1717
mod tests {
18-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
1918
use insta::assert_debug_snapshot;
2019

20+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
21+
2122
fn do_reference_completion(code: &str) -> Vec<CompletionItem> {
2223
do_completion(code, CompletionKind::Reference)
2324
}

crates/ra_ide/src/completion/complete_path.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) {
103103
mod tests {
104104
use test_utils::covers;
105105

106-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
106+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
107107
use insta::assert_debug_snapshot;
108108

109109
fn do_reference_completion(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_pattern.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub(super) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) {
2727

2828
#[cfg(test)]
2929
mod tests {
30-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
30+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
3131
use insta::assert_debug_snapshot;
3232

3333
fn complete(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_postfix.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet:
8181
mod tests {
8282
use insta::assert_debug_snapshot;
8383

84-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
84+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
8585

8686
fn do_postfix_completion(code: &str) -> Vec<CompletionItem> {
8787
do_completion(code, CompletionKind::Postfix)

crates/ra_ide/src/completion/complete_record_literal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub(super) fn complete_record_literal(acc: &mut Completions, ctx: &CompletionCon
1818

1919
#[cfg(test)]
2020
mod tests {
21-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
21+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
2222
use insta::assert_debug_snapshot;
2323

2424
fn complete(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_record_pattern.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub(super) fn complete_record_pattern(acc: &mut Completions, ctx: &CompletionCon
1717

1818
#[cfg(test)]
1919
mod tests {
20-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
20+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
2121
use insta::assert_debug_snapshot;
2222

2323
fn complete(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_scope.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ pub(super) fn complete_scope(acc: &mut Completions, ctx: &CompletionContext) {
1414
mod tests {
1515
use insta::assert_debug_snapshot;
1616

17-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
17+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
1818

19-
fn do_reference_completion(code: &str) -> Vec<CompletionItem> {
20-
do_completion(code, CompletionKind::Reference)
19+
fn do_reference_completion(ra_fixture: &str) -> Vec<CompletionItem> {
20+
do_completion(ra_fixture, CompletionKind::Reference)
2121
}
2222

2323
#[test]

crates/ra_ide/src/completion/complete_snippet.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn ${1:feature}() {
4242

4343
#[cfg(test)]
4444
mod tests {
45-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
45+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
4646
use insta::assert_debug_snapshot;
4747

4848
fn do_snippet_completion(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/complete_trait_impl.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ fn make_const_compl_syntax(const_: &ast::ConstDef) -> String {
217217

218218
#[cfg(test)]
219219
mod tests {
220-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
220+
use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
221221
use insta::assert_debug_snapshot;
222222

223223
fn complete(code: &str) -> Vec<CompletionItem> {

crates/ra_ide/src/completion/completion_item.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub struct CompletionItem {
1313
/// Used only internally in tests, to check only specific kind of
1414
/// completion (postfix, keyword, reference, etc).
1515
#[allow(unused)]
16-
completion_kind: CompletionKind,
16+
pub(crate) completion_kind: CompletionKind,
1717
/// Label in the completion pop up which identifies completion.
1818
label: String,
1919
/// Range of identifier that is being completed.
@@ -318,24 +318,3 @@ impl Into<Vec<CompletionItem>> for Completions {
318318
self.buf
319319
}
320320
}
321-
322-
#[cfg(test)]
323-
pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> {
324-
use crate::{
325-
completion::{completions, CompletionOptions},
326-
mock_analysis::{analysis_and_position, single_file_with_position},
327-
};
328-
329-
let (analysis, position) = if code.contains("//-") {
330-
analysis_and_position(code)
331-
} else {
332-
single_file_with_position(code)
333-
};
334-
let options = CompletionOptions::default();
335-
let completions = completions(&analysis.db, position, &options).unwrap();
336-
let completion_items: Vec<CompletionItem> = completions.into();
337-
let mut kind_completions: Vec<CompletionItem> =
338-
completion_items.into_iter().filter(|c| c.completion_kind == kind).collect();
339-
kind_completions.sort_by_key(|c| c.label.clone());
340-
kind_completions
341-
}

crates/ra_ide/src/completion/presentation.rs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,12 +307,22 @@ mod tests {
307307
use insta::assert_debug_snapshot;
308308
use test_utils::covers;
309309

310-
use crate::completion::{do_completion, CompletionItem, CompletionKind};
310+
use crate::completion::{
311+
test_utils::{do_completion, do_completion_with_options},
312+
CompletionItem, CompletionKind, CompletionOptions,
313+
};
311314

312315
fn do_reference_completion(ra_fixture: &str) -> Vec<CompletionItem> {
313316
do_completion(ra_fixture, CompletionKind::Reference)
314317
}
315318

319+
fn do_reference_completion_with_options(
320+
ra_fixture: &str,
321+
options: CompletionOptions,
322+
) -> Vec<CompletionItem> {
323+
do_completion_with_options(ra_fixture, CompletionKind::Reference, &options)
324+
}
325+
316326
#[test]
317327
fn enum_detail_includes_names_for_record() {
318328
assert_debug_snapshot!(
@@ -533,7 +543,7 @@ mod tests {
533543
}
534544

535545
#[test]
536-
fn parens_for_method_call() {
546+
fn arg_snippets_for_method_call() {
537547
assert_debug_snapshot!(
538548
do_reference_completion(
539549
r"
@@ -562,6 +572,40 @@ mod tests {
562572
)
563573
}
564574

575+
#[test]
576+
fn no_arg_snippets_for_method_call() {
577+
assert_debug_snapshot!(
578+
do_reference_completion_with_options(
579+
r"
580+
struct S {}
581+
impl S {
582+
fn foo(&self, x: i32) {}
583+
}
584+
fn bar(s: &S) {
585+
s.f<|>
586+
}
587+
",
588+
CompletionOptions {
589+
add_call_argument_snippets: false,
590+
.. Default::default()
591+
}
592+
),
593+
@r###"
594+
[
595+
CompletionItem {
596+
label: "foo(…)",
597+
source_range: [171; 172),
598+
delete: [171; 172),
599+
insert: "foo($0)",
600+
kind: Method,
601+
lookup: "foo",
602+
detail: "fn foo(&self, x: i32)",
603+
},
604+
]
605+
"###
606+
)
607+
}
608+
565609
#[test]
566610
fn dont_render_function_parens_in_use_item() {
567611
assert_debug_snapshot!(
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
use crate::{
2+
completion::{completion_item::CompletionKind, completions, CompletionOptions},
3+
mock_analysis::{analysis_and_position, single_file_with_position},
4+
CompletionItem,
5+
};
6+
7+
pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> {
8+
do_completion_with_options(code, kind, &CompletionOptions::default())
9+
}
10+
11+
pub(crate) fn do_completion_with_options(
12+
code: &str,
13+
kind: CompletionKind,
14+
options: &CompletionOptions,
15+
) -> Vec<CompletionItem> {
16+
let (analysis, position) = if code.contains("//-") {
17+
analysis_and_position(code)
18+
} else {
19+
single_file_with_position(code)
20+
};
21+
let completions = completions(&analysis.db, position, &options).unwrap();
22+
let completion_items: Vec<CompletionItem> = completions.into();
23+
let mut kind_completions: Vec<CompletionItem> =
24+
completion_items.into_iter().filter(|c| c.completion_kind == kind).collect();
25+
kind_completions.sort_by_key(|c| c.label().to_owned());
26+
kind_completions
27+
}

0 commit comments

Comments
 (0)