From 952da31f44b717d5679c1c0baffcd998c0f67266 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 3 Sep 2018 23:32:42 +0300 Subject: switch to internal feedback --- crates/server/tests/heavy_tests/main.rs | 33 ++-------------------- crates/server/tests/heavy_tests/support.rs | 45 ++++++++---------------------- 2 files changed, 14 insertions(+), 64 deletions(-) (limited to 'crates/server/tests/heavy_tests') diff --git a/crates/server/tests/heavy_tests/main.rs b/crates/server/tests/heavy_tests/main.rs index 78842e44f..d6e89bdf2 100644 --- a/crates/server/tests/heavy_tests/main.rs +++ b/crates/server/tests/heavy_tests/main.rs @@ -10,7 +10,7 @@ extern crate m; mod support; -use m::req::{Runnables, RunnablesParams, DidReloadWorkspace}; +use m::req::{Runnables, RunnablesParams}; use support::project; @@ -59,7 +59,7 @@ pub fn foo() {} #[test] fn test_eggs() {} "#); - server.wait_for_notification::(); + server.wait_for_feedback("workspace loaded"); server.request::( RunnablesParams { text_document: server.doc_id("tests/spam.rs"), @@ -79,32 +79,3 @@ fn test_eggs() {} ]"# ); } - -#[test] -fn test_project_model() { - let server = project(r#" -//- Cargo.toml -[package] -name = "foo" -version = "0.0.0" - -//- src/lib.rs -pub fn foo() {} -"#); - server.notification::(r#"[ - { - "packages": [ - { - "is_member": true, - "manifest": "$PROJECT_ROOT$/Cargo.toml", - "name": "foo", - "targets": [ 0 ] - } - ], - "targets": [ - { "kind": "Lib", "name": "foo", "pkg": 0, "root": "$PROJECT_ROOT$/src/lib.rs" } - ] - } -]"# - ); -} diff --git a/crates/server/tests/heavy_tests/support.rs b/crates/server/tests/heavy_tests/support.rs index 38a9e6c76..99a784e8d 100644 --- a/crates/server/tests/heavy_tests/support.rs +++ b/crates/server/tests/heavy_tests/support.rs @@ -14,7 +14,7 @@ use languageserver_types::{ Url, TextDocumentIdentifier, request::{Request, Shutdown}, - notification::{Notification, DidOpenTextDocument}, + notification::DidOpenTextDocument, DidOpenTextDocumentParams, TextDocumentItem, }; @@ -22,7 +22,7 @@ use serde::Serialize; use serde_json::{Value, from_str, to_string_pretty}; use gen_lsp_server::{RawMessage, RawRequest, RawNotification}; -use m::{Result, main_loop}; +use m::{Result, main_loop, req}; pub fn project(fixture: &str) -> Server { static INIT: Once = Once::new(); @@ -72,7 +72,7 @@ impl Server { let path = dir.path().to_path_buf(); let (client_sender, mut server_receiver) = bounded(1); let (mut server_sender, client_receiver) = bounded(1); - let server = thread::spawn(move || main_loop(path, &mut server_receiver, &mut server_sender)); + let server = thread::spawn(move || main_loop(true, path, &mut server_receiver, &mut server_sender)); let res = Server { req_id: Cell::new(1), dir, @@ -125,25 +125,6 @@ impl Server { ); } - pub fn notification( - &self, - expected: &str, - ) - where - N: Notification, - { - let expected = expected.replace("$PROJECT_ROOT$", &self.dir.path().display().to_string()); - let expected: Value = from_str(&expected).unwrap(); - let actual = self.wait_for_notification::(); - assert_eq!( - expected, actual, - "Expected:\n{}\n\ - Actual:\n{}\n", - to_string_pretty(&expected).unwrap(), - to_string_pretty(&actual).unwrap(), - ); - } - fn send_request(&self, id: u64, params: R::Params) -> Value where R: Request, @@ -173,25 +154,23 @@ impl Server { } panic!("no response"); } - pub fn wait_for_notification(&self) -> Value { - self.wait_for_notification_(N::METHOD) - } - fn wait_for_notification_(&self, method: &str) -> Value { + pub fn wait_for_feedback(&self, feedback: &str) { let f = |msg: &RawMessage| match msg { - RawMessage::Notification(n) if n.method == method => { - Some(n.params.clone()) + RawMessage::Notification(n) if n.method == "internalFeedback" => { + return n.clone().cast::() + .unwrap() == feedback } - _ => None, + _ => false, }; for msg in self.messages.borrow().iter() { - if let Some(res) = f(msg) { - return res; + if f(msg) { + return; } } while let Some(msg) = self.recv() { - if let Some(res) = f(&msg) { - return res; + if f(&msg) { + return; } } panic!("no response") -- cgit v1.2.3