From e98d8cd255ab5c2fee873a58af6c2c3ad561dab4 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 2 Sep 2018 16:36:03 +0300 Subject: nail down runnables --- crates/server/tests/heavy_tests/main.rs | 40 ++++++++++++++++++++++++++++-- crates/server/tests/heavy_tests/support.rs | 13 +++++++--- 2 files changed, 48 insertions(+), 5 deletions(-) (limited to 'crates/server/tests') diff --git a/crates/server/tests/heavy_tests/main.rs b/crates/server/tests/heavy_tests/main.rs index 9c0196f22..0dc6074b2 100644 --- a/crates/server/tests/heavy_tests/main.rs +++ b/crates/server/tests/heavy_tests/main.rs @@ -14,10 +14,10 @@ use m::req::{Runnables, RunnablesParams, DidReloadWorkspace}; use support::project; -const LOG: &'static str = "WARN"; +const LOG: &'static str = ""; #[test] -fn test_runnables() { +fn test_runnables_no_project() { let server = project(r" //- lib.rs #[test] @@ -44,6 +44,42 @@ fn foo() { ); } +#[test] +fn test_runnables_project() { + let server = project(r#" +//- Cargo.toml +[package] +name = "foo" +version = "0.0.0" + +//- src/lib.rs +pub fn foo() {} + +//- tests/spam.rs +#[test] +fn test_eggs() {} +"#); + server.wait_for_notification::(); + server.request::( + RunnablesParams { + text_document: server.doc_id("tests/spam.rs"), + position: None, + }, + r#"[ + { + "args": [ "test", "--package", "foo", "--test", "spam", "--", "test_eggs", "--nocapture" ], + "bin": "cargo", + "env": { "RUST_BACKTRACE": "short" }, + "label": "test test_eggs", + "range": { + "end": { "character": 17, "line": 1 }, + "start": { "character": 0, "line": 0 } + } + } + ]"# + ); +} + #[test] fn test_project_model() { let server = project(r#" diff --git a/crates/server/tests/heavy_tests/support.rs b/crates/server/tests/heavy_tests/support.rs index 76cbd56ea..38a9e6c76 100644 --- a/crates/server/tests/heavy_tests/support.rs +++ b/crates/server/tests/heavy_tests/support.rs @@ -134,7 +134,7 @@ impl Server { { 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(N::METHOD); + let actual = self.wait_for_notification::(); assert_eq!( expected, actual, "Expected:\n{}\n\ @@ -150,6 +150,11 @@ impl Server { R::Params: Serialize, { let r = RawRequest::new::(id, ¶ms); + self.send_request_(r) + } + fn send_request_(&self, r: RawRequest) -> Value + { + let id = r.id; self.sender.as_ref() .unwrap() .send(RawMessage::Request(r)); @@ -168,7 +173,10 @@ impl Server { } panic!("no response"); } - fn wait_for_notification(&self, method: &str) -> Value { + pub fn wait_for_notification(&self) -> Value { + self.wait_for_notification_(N::METHOD) + } + fn wait_for_notification_(&self, method: &str) -> Value { let f = |msg: &RawMessage| match msg { RawMessage::Notification(n) if n.method == method => { Some(n.params.clone()) @@ -215,7 +223,6 @@ impl Drop for Server { drop(msg); } } - eprintln!("joining server"); self.server.take() .unwrap() .join().unwrap().unwrap(); -- cgit v1.2.3