From 09f347b81568e8be1449a82d762f1052f93d18fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Sm=C3=B3=C5=82ka?= Date: Thu, 31 Oct 2024 12:02:25 +0100 Subject: [PATCH] LS: Allow parametrizing completion tests behaviour commit-id:46f1dadf --- .../tests/e2e/completions.rs | 36 ++++++++++++++++--- .../completions/methods_text_edits.txt | 4 +-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/crates/cairo-lang-language-server/tests/e2e/completions.rs b/crates/cairo-lang-language-server/tests/e2e/completions.rs index cc6fe9d865e..d36046d3258 100644 --- a/crates/cairo-lang-language-server/tests/e2e/completions.rs +++ b/crates/cairo-lang-language-server/tests/e2e/completions.rs @@ -24,8 +24,14 @@ cairo_lang_test_utils::test_file_test!( /// expected quick fixes from the snapshot file. fn test_completions_text_edits( inputs: &OrderedHashMap, - _args: &OrderedHashMap, + args: &OrderedHashMap, ) -> TestRunnerResult { + let check_detail: bool = + args.get("detail").map(|value| value.parse().unwrap()).unwrap_or_default(); + let check_edit: bool = args.get("edit").map(|value| value.parse().unwrap()).unwrap_or_default(); + let check_insert: bool = + args.get("insert").map(|value| value.parse().unwrap()).unwrap_or_default(); + let (cairo, cursors) = cursors(&inputs["cairo_code"]); let mut ls = sandbox! { @@ -52,20 +58,42 @@ fn test_completions_text_edits( partial_result_params: Default::default(), context: None, }; + let caret_completions = ls.send_request::(completion_params); + if let Some(completions) = caret_completions { let completion_items = match completions { lsp_types::CompletionResponse::Array(items) => items, lsp_types::CompletionResponse::List(list) => list.items, }; + for completion in completion_items { - if let Some(text_edit) = completion.additional_text_edits { - report.push_str("--------------------------\n"); - report.push_str(format!("Completion: {}\n", completion.label).as_str()); + report.push_str("--------------------------\n"); + let completion_label = completion.label; + + if completion_label.is_empty() { + // A special case to avoid having trailing spaces in tests. + report.push_str("Completion:\n"); + } else { + report.push_str(format!("Completion: {}\n", completion_label).as_str()); + } + + if check_detail { + if let Some(detail) = completion.detail { + report.push_str(format!("Detail: {detail}\n").as_str()); + } + } + + if check_insert { if let Some(text) = completion.insert_text { report.push_str(format!("Insert text: {text}\n").as_str()); } + } + + if check_edit { + let text_edit = completion.additional_text_edits.unwrap_or_default(); + for edit in text_edit { report.push_str(format!("Text edit: {}", edit.new_text).as_str()); } diff --git a/crates/cairo-lang-language-server/tests/test_data/completions/methods_text_edits.txt b/crates/cairo-lang-language-server/tests/test_data/completions/methods_text_edits.txt index 799334c3c00..d427e52de49 100644 --- a/crates/cairo-lang-language-server/tests/test_data/completions/methods_text_edits.txt +++ b/crates/cairo-lang-language-server/tests/test_data/completions/methods_text_edits.txt @@ -1,7 +1,7 @@ //! > Test adding simple trait. //! > test_runner_name -test_completions_text_edits +test_completions_text_edits(edit: true, insert: true) //! > cairo_project.toml [crate_roots] @@ -135,7 +135,7 @@ Text edit: use super::ATrait1; //! > Test adding non directly visible traits. //! > test_runner_name -test_completions_text_edits +test_completions_text_edits(edit: true, insert: true) //! > cairo_project.toml [crate_roots]