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
This commit is contained in:
Aleksey Kladov 2019-01-23 16:05:13 +03:00
parent 86507c0626
commit 2dbf58c579
7 changed files with 72 additions and 47 deletions

View file

@ -8,8 +8,6 @@
pub mod db; pub mod db;
#[cfg(test)] #[cfg(test)]
mod mock; mod mock;
#[cfg(test)]
mod marks;
mod query_definitions; mod query_definitions;
mod path; mod path;
pub mod source_binder; pub mod source_binder;
@ -29,6 +27,9 @@ mod generics;
mod code_model_api; mod code_model_api;
mod code_model_impl; mod code_model_impl;
#[cfg(test)]
mod marks;
use crate::{ use crate::{
db::HirDatabase, db::HirDatabase,
name::{AsName, KnownName}, name::{AsName, KnownName},

View file

@ -1 +1,3 @@
test_utils::mark!(name_res_works_for_broken_modules); use test_utils::mark;
mark!(name_res_works_for_broken_modules);

View file

@ -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<|>();
}
",
)
}
} }

View file

@ -175,21 +175,4 @@ mod tests {
check_reference_completion("self_in_methods", r"impl S { fn foo(&self) { <|> } }") 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_<|> }
",
);
}
} }

View file

@ -3,9 +3,10 @@ use hir::PerNs;
use crate::completion::completion_context::CompletionContext; use crate::completion::completion_context::CompletionContext;
use ra_syntax::{ use ra_syntax::{
ast::{self, AstNode}, ast::{self, AstNode},
TextRange TextRange,
}; };
use ra_text_edit::TextEdit; use ra_text_edit::TextEdit;
use test_utils::tested_by;
/// `CompletionItem` describes a single completion variant in the editor pop-up. /// `CompletionItem` describes a single completion variant in the editor pop-up.
/// It is basically a POD with various properties. To construct a /// It is basically a POD with various properties. To construct a
@ -255,6 +256,7 @@ impl Builder {
) -> Builder { ) -> Builder {
// If not an import, add parenthesis automatically. // If not an import, add parenthesis automatically.
if ctx.use_item_syntax.is_none() && !ctx.is_call { 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() { if function.signature(ctx.db).params().is_empty() {
self.insert_text = Some(format!("{}()$0", self.label)); self.insert_text = Some(format!("{}()$0", self.label));
} else { } else {
@ -344,3 +346,60 @@ pub(crate) fn check_completion(test_name: &str, code: &str, kind: CompletionKind
.collect(); .collect();
assert_debug_snapshot_matches!(test_name, kind_completions); 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<|>();
}
",
)
}
}

View file

@ -26,6 +26,9 @@ mod syntax_highlighting;
mod parent_module; mod parent_module;
mod rename; mod rename;
#[cfg(test)]
mod marks;
use std::{fmt, sync::Arc}; use std::{fmt, sync::Arc};
use ra_syntax::{SourceFile, TreeArc, TextRange, TextUnit}; use ra_syntax::{SourceFile, TreeArc, TextRange, TextUnit};

View file

@ -0,0 +1,3 @@
use test_utils::mark;
mark!(inserts_parens_for_function_calls);