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_hir/src/lib.rs | 5 +- crates/ra_hir/src/marks.rs | 4 +- 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 +++++++++++++++++++++- crates/ra_ide_api/src/lib.rs | 3 ++ crates/ra_ide_api/src/marks.rs | 3 ++ 7 files changed, 72 insertions(+), 47 deletions(-) create mode 100644 crates/ra_ide_api/src/marks.rs (limited to 'crates') diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 33a9ba605..a861ee88e 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs @@ -8,8 +8,6 @@ pub mod db; #[cfg(test)] mod mock; -#[cfg(test)] -mod marks; mod query_definitions; mod path; pub mod source_binder; @@ -29,6 +27,9 @@ mod generics; mod code_model_api; mod code_model_impl; +#[cfg(test)] +mod marks; + use crate::{ db::HirDatabase, name::{AsName, KnownName}, diff --git a/crates/ra_hir/src/marks.rs b/crates/ra_hir/src/marks.rs index 6aff2c4e1..f4d0c3e59 100644 --- a/crates/ra_hir/src/marks.rs +++ b/crates/ra_hir/src/marks.rs @@ -1 +1,3 @@ -test_utils::mark!(name_res_works_for_broken_modules); +use test_utils::mark; + +mark!(name_res_works_for_broken_modules); 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<|>(); + } + ", + ) + } + +} diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs index 3c53e75ac..3502bfd2e 100644 --- a/crates/ra_ide_api/src/lib.rs +++ b/crates/ra_ide_api/src/lib.rs @@ -26,6 +26,9 @@ mod syntax_highlighting; mod parent_module; mod rename; +#[cfg(test)] +mod marks; + use std::{fmt, sync::Arc}; use ra_syntax::{SourceFile, TreeArc, TextRange, TextUnit}; diff --git a/crates/ra_ide_api/src/marks.rs b/crates/ra_ide_api/src/marks.rs new file mode 100644 index 000000000..b4a726ef0 --- /dev/null +++ b/crates/ra_ide_api/src/marks.rs @@ -0,0 +1,3 @@ +use test_utils::mark; + +mark!(inserts_parens_for_function_calls); -- cgit v1.2.3