From 20a77f4c5e97ccb572064b1aceb53177598e8647 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 3 Nov 2021 09:39:15 +0100 Subject: [PATCH] Fix test for disk-based diagnostics --- crates/language/src/tests.rs | 65 ++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/crates/language/src/tests.rs b/crates/language/src/tests.rs index 8ee3beebf4..0bc81b0808 100644 --- a/crates/language/src/tests.rs +++ b/crates/language/src/tests.rs @@ -1,6 +1,6 @@ use super::*; use gpui::{ModelHandle, MutableAppContext}; -use std::rc::Rc; +use std::{iter::FromIterator, rc::Rc}; use unindent::Unindent as _; #[gpui::test] @@ -79,7 +79,9 @@ async fn test_apply_diff(mut cx: gpui::TestAppContext) { #[gpui::test] async fn test_reparse(mut cx: gpui::TestAppContext) { let text = "fn a() {}"; - let buffer = cx.add_model(|cx| Buffer::new(0, text, cx).with_language(rust_lang(), None, cx)); + let buffer = cx.add_model(|cx| { + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx) + }); // Wait for the initial text to parse buffer @@ -221,7 +223,7 @@ fn test_enclosing_bracket_ranges(cx: &mut MutableAppContext) { } " .unindent(); - Buffer::new(0, text, cx).with_language(rust_lang(), None, cx) + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx) }); let buffer = buffer.read(cx); assert_eq!( @@ -251,7 +253,8 @@ fn test_enclosing_bracket_ranges(cx: &mut MutableAppContext) { fn test_edit_with_autoindent(cx: &mut MutableAppContext) { cx.add_model(|cx| { let text = "fn a() {}"; - let mut buffer = Buffer::new(0, text, cx).with_language(rust_lang(), None, cx); + let mut buffer = + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx); buffer.edit_with_autoindent([8..8], "\n\n", cx); assert_eq!(buffer.text(), "fn a() {\n \n}"); @@ -271,7 +274,8 @@ fn test_autoindent_moves_selections(cx: &mut MutableAppContext) { cx.add_model(|cx| { let text = "fn a() {}"; - let mut buffer = Buffer::new(0, text, cx).with_language(rust_lang(), None, cx); + let mut buffer = + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx); let selection_set_id = buffer.add_selection_set::(&[], cx); buffer.start_transaction(Some(selection_set_id)).unwrap(); @@ -329,7 +333,8 @@ fn test_autoindent_does_not_adjust_lines_with_unchanged_suggestion(cx: &mut Muta " .unindent(); - let mut buffer = Buffer::new(0, text, cx).with_language(rust_lang(), None, cx); + let mut buffer = + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx); // Lines 2 and 3 don't match the indentation suggestion. When editing these lines, // their indentation is not adjusted. @@ -378,7 +383,8 @@ fn test_autoindent_adjusts_lines_when_only_text_changes(cx: &mut MutableAppConte " .unindent(); - let mut buffer = Buffer::new(0, text, cx).with_language(rust_lang(), None, cx); + let mut buffer = + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang())), None, cx); buffer.edit_with_autoindent([5..5], "\nb", cx); assert_eq!( @@ -409,6 +415,11 @@ fn test_autoindent_adjusts_lines_when_only_text_changes(cx: &mut MutableAppConte #[gpui::test] async fn test_diagnostics(mut cx: gpui::TestAppContext) { let (language_server, mut fake) = lsp::LanguageServer::fake(cx.background()).await; + let mut rust_lang = rust_lang(); + rust_lang.config.language_server = Some(LanguageServerConfig { + disk_based_diagnostic_sources: HashSet::from_iter(["disk".to_string()]), + ..Default::default() + }); let text = " fn a() { A } @@ -418,7 +429,7 @@ async fn test_diagnostics(mut cx: gpui::TestAppContext) { .unindent(); let buffer = cx.add_model(|cx| { - Buffer::new(0, text, cx).with_language(rust_lang(), Some(language_server), cx) + Buffer::new(0, text, cx).with_language(Some(Arc::new(rust_lang)), Some(language_server), cx) }); let open_notification = fake @@ -586,14 +597,14 @@ async fn test_diagnostics(mut cx: gpui::TestAppContext) { range: lsp::Range::new(lsp::Position::new(1, 9), lsp::Position::new(1, 11)), severity: Some(lsp::DiagnosticSeverity::ERROR), message: "undefined variable 'BB'".to_string(), - source: Some("rustc".to_string()), + source: Some("disk".to_string()), ..Default::default() }, lsp::Diagnostic { range: lsp::Range::new(lsp::Position::new(0, 9), lsp::Position::new(0, 10)), severity: Some(lsp::DiagnosticSeverity::ERROR), message: "undefined variable 'A'".to_string(), - source: Some("rustc".to_string()), + source: Some("disk".to_string()), ..Default::default() }, ], @@ -669,29 +680,27 @@ impl Buffer { } } -fn rust_lang() -> Option> { - Some(Arc::new( - Language::new( - LanguageConfig { - name: "Rust".to_string(), - path_suffixes: vec!["rs".to_string()], - language_server: None, - ..Default::default() - }, - tree_sitter_rust::language(), - ) - .with_indents_query( - r#" +fn rust_lang() -> Language { + Language::new( + LanguageConfig { + name: "Rust".to_string(), + path_suffixes: vec!["rs".to_string()], + language_server: None, + ..Default::default() + }, + tree_sitter_rust::language(), + ) + .with_indents_query( + r#" (call_expression) @indent (field_expression) @indent (_ "(" ")" @end) @indent (_ "{" "}" @end) @indent "#, - ) - .unwrap() - .with_brackets_query(r#" ("{" @open "}" @close) "#) - .unwrap(), - )) + ) + .unwrap() + .with_brackets_query(r#" ("{" @open "}" @close) "#) + .unwrap() } fn empty(point: Point) -> Range {