From 2dbf58c579d6fe6a8acefcd9ae17eef7e984bca1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 23 Jan 2019 16:05:13 +0300 Subject: move completion item tests closer to the code this is the reason why we need marks: the tests were spread across two files, because I've forgotten that there were tests already --- crates/ra_ide_api/src/completion/complete_path.rs | 26 --------- crates/ra_ide_api/src/completion/complete_scope.rs | 17 ------ .../ra_ide_api/src/completion/completion_item.rs | 61 +++++++++++++++++++++- 3 files changed, 60 insertions(+), 44 deletions(-) (limited to 'crates/ra_ide_api/src/completion') diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index 804954ee1..6bed299d2 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -121,30 +121,4 @@ mod tests { ", ); } - - #[test] - fn dont_render_function_parens_in_use_item() { - check_reference_completion( - "dont_render_function_parens_in_use_item", - " - //- /lib.rs - mod m { pub fn foo() {} } - use crate::m::f<|>; - ", - ) - } - - #[test] - fn dont_render_function_parens_if_already_call() { - check_reference_completion( - "dont_render_function_parens_if_already_call", - " - //- /lib.rs - fn frobnicate() {} - fn main() { - frob<|>(); - } - ", - ) - } } diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs index 20fc77f06..f837bb1db 100644 --- a/crates/ra_ide_api/src/completion/complete_scope.rs +++ b/crates/ra_ide_api/src/completion/complete_scope.rs @@ -175,21 +175,4 @@ mod tests { check_reference_completion("self_in_methods", r"impl S { fn foo(&self) { <|> } }") } - #[test] - fn inserts_parens_for_function_calls() { - check_reference_completion( - "inserts_parens_for_function_calls1", - r" - fn no_args() {} - fn main() { no_<|> } - ", - ); - check_reference_completion( - "inserts_parens_for_function_calls2", - r" - fn with_args(x: i32, y: String) {} - fn main() { with_<|> } - ", - ); - } } diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index 680fd8d1b..48be812a0 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs @@ -3,9 +3,10 @@ use hir::PerNs; use crate::completion::completion_context::CompletionContext; use ra_syntax::{ ast::{self, AstNode}, - TextRange + TextRange, }; use ra_text_edit::TextEdit; +use test_utils::tested_by; /// `CompletionItem` describes a single completion variant in the editor pop-up. /// It is basically a POD with various properties. To construct a @@ -255,6 +256,7 @@ impl Builder { ) -> Builder { // If not an import, add parenthesis automatically. if ctx.use_item_syntax.is_none() && !ctx.is_call { + tested_by!(inserts_parens_for_function_calls); if function.signature(ctx.db).params().is_empty() { self.insert_text = Some(format!("{}()$0", self.label)); } else { @@ -344,3 +346,60 @@ pub(crate) fn check_completion(test_name: &str, code: &str, kind: CompletionKind .collect(); assert_debug_snapshot_matches!(test_name, kind_completions); } + +#[cfg(test)] +mod tests { + use test_utils::covers; + + use super::*; + + fn check_reference_completion(code: &str, expected_completions: &str) { + check_completion(code, expected_completions, CompletionKind::Reference); + } + + #[test] + fn inserts_parens_for_function_calls() { + covers!(inserts_parens_for_function_calls); + check_reference_completion( + "inserts_parens_for_function_calls1", + r" + fn no_args() {} + fn main() { no_<|> } + ", + ); + check_reference_completion( + "inserts_parens_for_function_calls2", + r" + fn with_args(x: i32, y: String) {} + fn main() { with_<|> } + ", + ); + } + + #[test] + fn dont_render_function_parens_in_use_item() { + check_reference_completion( + "dont_render_function_parens_in_use_item", + " + //- /lib.rs + mod m { pub fn foo() {} } + use crate::m::f<|>; + ", + ) + } + + #[test] + fn dont_render_function_parens_if_already_call() { + check_reference_completion( + "dont_render_function_parens_if_already_call", + " + //- /lib.rs + fn frobnicate() {} + fn main() { + frob<|>(); + } + ", + ) + } + +} -- cgit v1.2.3