diff options
Diffstat (limited to 'crates/server/tests')
-rw-r--r-- | crates/server/tests/heavy_tests/main.rs | 40 | ||||
-rw-r--r-- | crates/server/tests/heavy_tests/support.rs | 13 |
2 files changed, 48 insertions, 5 deletions
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}; | |||
14 | 14 | ||
15 | use support::project; | 15 | use support::project; |
16 | 16 | ||
17 | const LOG: &'static str = "WARN"; | 17 | const LOG: &'static str = ""; |
18 | 18 | ||
19 | #[test] | 19 | #[test] |
20 | fn test_runnables() { | 20 | fn test_runnables_no_project() { |
21 | let server = project(r" | 21 | let server = project(r" |
22 | //- lib.rs | 22 | //- lib.rs |
23 | #[test] | 23 | #[test] |
@@ -45,6 +45,42 @@ fn foo() { | |||
45 | } | 45 | } |
46 | 46 | ||
47 | #[test] | 47 | #[test] |
48 | fn test_runnables_project() { | ||
49 | let server = project(r#" | ||
50 | //- Cargo.toml | ||
51 | [package] | ||
52 | name = "foo" | ||
53 | version = "0.0.0" | ||
54 | |||
55 | //- src/lib.rs | ||
56 | pub fn foo() {} | ||
57 | |||
58 | //- tests/spam.rs | ||
59 | #[test] | ||
60 | fn test_eggs() {} | ||
61 | "#); | ||
62 | server.wait_for_notification::<DidReloadWorkspace>(); | ||
63 | server.request::<Runnables>( | ||
64 | RunnablesParams { | ||
65 | text_document: server.doc_id("tests/spam.rs"), | ||
66 | position: None, | ||
67 | }, | ||
68 | r#"[ | ||
69 | { | ||
70 | "args": [ "test", "--package", "foo", "--test", "spam", "--", "test_eggs", "--nocapture" ], | ||
71 | "bin": "cargo", | ||
72 | "env": { "RUST_BACKTRACE": "short" }, | ||
73 | "label": "test test_eggs", | ||
74 | "range": { | ||
75 | "end": { "character": 17, "line": 1 }, | ||
76 | "start": { "character": 0, "line": 0 } | ||
77 | } | ||
78 | } | ||
79 | ]"# | ||
80 | ); | ||
81 | } | ||
82 | |||
83 | #[test] | ||
48 | fn test_project_model() { | 84 | fn test_project_model() { |
49 | let server = project(r#" | 85 | let server = project(r#" |
50 | //- Cargo.toml | 86 | //- Cargo.toml |
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 { | |||
134 | { | 134 | { |
135 | let expected = expected.replace("$PROJECT_ROOT$", &self.dir.path().display().to_string()); | 135 | let expected = expected.replace("$PROJECT_ROOT$", &self.dir.path().display().to_string()); |
136 | let expected: Value = from_str(&expected).unwrap(); | 136 | let expected: Value = from_str(&expected).unwrap(); |
137 | let actual = self.wait_for_notification(N::METHOD); | 137 | let actual = self.wait_for_notification::<N>(); |
138 | assert_eq!( | 138 | assert_eq!( |
139 | expected, actual, | 139 | expected, actual, |
140 | "Expected:\n{}\n\ | 140 | "Expected:\n{}\n\ |
@@ -150,6 +150,11 @@ impl Server { | |||
150 | R::Params: Serialize, | 150 | R::Params: Serialize, |
151 | { | 151 | { |
152 | let r = RawRequest::new::<R>(id, ¶ms); | 152 | let r = RawRequest::new::<R>(id, ¶ms); |
153 | self.send_request_(r) | ||
154 | } | ||
155 | fn send_request_(&self, r: RawRequest) -> Value | ||
156 | { | ||
157 | let id = r.id; | ||
153 | self.sender.as_ref() | 158 | self.sender.as_ref() |
154 | .unwrap() | 159 | .unwrap() |
155 | .send(RawMessage::Request(r)); | 160 | .send(RawMessage::Request(r)); |
@@ -168,7 +173,10 @@ impl Server { | |||
168 | } | 173 | } |
169 | panic!("no response"); | 174 | panic!("no response"); |
170 | } | 175 | } |
171 | fn wait_for_notification(&self, method: &str) -> Value { | 176 | pub fn wait_for_notification<N: Notification>(&self) -> Value { |
177 | self.wait_for_notification_(N::METHOD) | ||
178 | } | ||
179 | fn wait_for_notification_(&self, method: &str) -> Value { | ||
172 | let f = |msg: &RawMessage| match msg { | 180 | let f = |msg: &RawMessage| match msg { |
173 | RawMessage::Notification(n) if n.method == method => { | 181 | RawMessage::Notification(n) if n.method == method => { |
174 | Some(n.params.clone()) | 182 | Some(n.params.clone()) |
@@ -215,7 +223,6 @@ impl Drop for Server { | |||
215 | drop(msg); | 223 | drop(msg); |
216 | } | 224 | } |
217 | } | 225 | } |
218 | eprintln!("joining server"); | ||
219 | self.server.take() | 226 | self.server.take() |
220 | .unwrap() | 227 | .unwrap() |
221 | .join().unwrap().unwrap(); | 228 | .join().unwrap().unwrap(); |