From 6ab97244b88b180c1cafd5b47533bd4366a09177 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Tue, 10 Nov 2020 11:08:59 +0200 Subject: Tidy up the tests --- .../completion/src/completions/complete_magic.rs | 64 +++++----------------- 1 file changed, 15 insertions(+), 49 deletions(-) (limited to 'crates/completion/src/completions/complete_magic.rs') diff --git a/crates/completion/src/completions/complete_magic.rs b/crates/completion/src/completions/complete_magic.rs index 9242b860c..15af2190d 100644 --- a/crates/completion/src/completions/complete_magic.rs +++ b/crates/completion/src/completions/complete_magic.rs @@ -10,6 +10,7 @@ use crate::{context::CompletionContext, item::CompletionKind, CompletionItem, Co use super::Completions; +// TODO kb when typing, completes partial results, need to rerun manually to see the proper ones pub(crate) fn complete_magic(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> { if !(ctx.is_trivial_path || ctx.is_pat_binding_or_const) { return None; @@ -19,7 +20,7 @@ pub(crate) fn complete_magic(acc: &mut Completions, ctx: &CompletionContext) -> let import_scope = ImportScope::find_insert_use_container(anchor.syntax(), &ctx.sema)?; // TODO kb consider heuristics, such as "don't show `hash_map` import if `HashMap` is the import for completion" - // TODO kb module functions are not completed, consider `std::io::stdin` one + // also apply completion ordering let potential_import_name = ctx.token.to_string(); let possible_imports = ctx @@ -38,6 +39,7 @@ pub(crate) fn complete_magic(acc: &mut Completions, ctx: &CompletionContext) -> builder.replace(anchor.syntax().text_range(), correct_qualifier); // TODO kb: assists already have the merge behaviour setting, need to unite both + // also consider a settings toggle for this particular feature? let rewriter = insert_use(&import_scope, mod_path_to_ast(&mod_path), Some(MergeBehaviour::Full)); let old_ast = rewriter.rewrite_root()?; @@ -60,37 +62,10 @@ pub(crate) fn complete_magic(acc: &mut Completions, ctx: &CompletionContext) -> #[cfg(test)] mod tests { - use expect_test::{expect, Expect}; - - use crate::{ - item::CompletionKind, - test_utils::{check_edit, completion_list}, - }; - - fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(ra_fixture, CompletionKind::Magic); - expect.assert_eq(&actual) - } + use crate::test_utils::check_edit; #[test] fn function_magic_completion() { - check( - r#" -//- /lib.rs crate:dep -pub mod io { - pub fn stdin() {} -}; - -//- /main.rs crate:main deps:dep -fn main() { - stdi<|> -} -"#, - expect![[r#" - st dep::io::stdin - "#]], - ); - check_edit( "dep::io::stdin", r#" @@ -116,37 +91,28 @@ fn main() { #[test] fn case_insensitive_magic_completion_works() { - check( - r#" -//- /lib.rs crate:dep -pub struct TestStruct; - -//- /main.rs crate:main deps:dep -fn main() { - teru<|> -} -"#, - expect![[r#" - st dep::TestStruct - "#]], - ); - check_edit( - "dep::TestStruct", + "dep::some_module::ThirdStruct", r#" //- /lib.rs crate:dep -pub struct TestStruct; +pub struct FirstStruct; +pub mod some_module { + pub struct SecondStruct; + pub struct ThirdStruct; +} //- /main.rs crate:main deps:dep +use dep::{FirstStruct, some_module::SecondStruct}; + fn main() { - teru<|> + this<|> } "#, r#" -use dep::TestStruct; +use dep::{FirstStruct, some_module::{SecondStruct, ThirdStruct}}; fn main() { - TestStruct + ThirdStruct } "#, ); -- cgit v1.2.3