aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/tests/heavy_tests
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-10 21:37:10 +0000
committerAleksey Kladov <[email protected]>2019-01-10 21:51:34 +0000
commitcd00158b1db9dd8565d2db08b4b0ebab9d5c00b3 (patch)
tree2072596e298e76aa6d5a8896ef30f591d7c7051c /crates/ra_lsp_server/tests/heavy_tests
parente35374ec7c26be8de61ec7c6175c2385ee5c006f (diff)
wire sysroot into crate graph
Diffstat (limited to 'crates/ra_lsp_server/tests/heavy_tests')
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/main.rs41
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/support.rs13
2 files changed, 23 insertions, 31 deletions
diff --git a/crates/ra_lsp_server/tests/heavy_tests/main.rs b/crates/ra_lsp_server/tests/heavy_tests/main.rs
index 927664ffb..02d62a259 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/main.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/main.rs
@@ -1,5 +1,10 @@
1mod support; 1mod support;
2 2
3use std::{
4 collections::HashMap,
5 time::Instant,
6};
7
3use languageserver_types::{ 8use languageserver_types::{
4 CodeActionContext, DocumentFormattingParams, FormattingOptions, Position, Range, 9 CodeActionContext, DocumentFormattingParams, FormattingOptions, Position, Range,
5}; 10};
@@ -14,6 +19,7 @@ const LOG: &'static str = "";
14 19
15#[test] 20#[test]
16fn completes_items_from_standard_library() { 21fn completes_items_from_standard_library() {
22 let project_start = Instant::now();
17 let server = project( 23 let server = project(
18 r#" 24 r#"
19//- Cargo.toml 25//- Cargo.toml
@@ -22,33 +28,19 @@ name = "foo"
22version = "0.0.0" 28version = "0.0.0"
23 29
24//- src/lib.rs 30//- src/lib.rs
25use std::collections::; 31use std::collections::Spam;
26"#, 32"#,
27 ); 33 );
28 server.wait_for_feedback("workspace loaded"); 34 server.wait_for_feedback("workspace loaded");
29 server.request::<Completion>( 35 eprintln!("loading took {:?}", project_start.elapsed());
30 CompletionParams { 36 let completion_start = Instant::now();
31 text_document: server.doc_id("src/lib.rs"), 37 let res = server.send_request::<Completion>(CompletionParams {
32 context: None, 38 text_document: server.doc_id("src/lib.rs"),
33 position: Position::new(0, 22), 39 context: None,
34 }, 40 position: Position::new(0, 23),
35 json!([ 41 });
36 { 42 assert!(format!("{}", res).contains("HashMap"));
37 "filterText": "self", 43 eprintln!("completion took {:?}", completion_start.elapsed());
38 "insertText": "self",
39 "insertTextFormat": 1,
40 "kind": 14,
41 "label": "self"
42 },
43 {
44 "filterText": "super",
45 "insertText": "super",
46 "insertTextFormat": 1,
47 "kind": 14,
48 "label": "super"
49 }
50 ]),
51 );
52} 44}
53 45
54#[test] 46#[test]
@@ -161,7 +153,6 @@ fn test_eggs() {}
161 ); 153 );
162} 154}
163 155
164use std::collections::HashMap;
165#[test] 156#[test]
166fn test_format_document() { 157fn test_format_document() {
167 let server = project( 158 let server = project(
diff --git a/crates/ra_lsp_server/tests/heavy_tests/support.rs b/crates/ra_lsp_server/tests/heavy_tests/support.rs
index 7db168b0f..46107b6b6 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/support.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/support.rs
@@ -93,9 +93,7 @@ impl Server {
93 R: Request, 93 R: Request,
94 R::Params: Serialize, 94 R::Params: Serialize,
95 { 95 {
96 let id = self.req_id.get(); 96 let actual = self.send_request::<R>(params);
97 self.req_id.set(id + 1);
98 let actual = self.send_request::<R>(id, params);
99 match find_mismatch(&expected_resp, &actual) { 97 match find_mismatch(&expected_resp, &actual) {
100 Some((expected_part, actual_part)) => panic!( 98 Some((expected_part, actual_part)) => panic!(
101 "JSON mismatch\nExpected:\n{}\nWas:\n{}\nExpected part:\n{}\nActual part:\n{}\n", 99 "JSON mismatch\nExpected:\n{}\nWas:\n{}\nExpected part:\n{}\nActual part:\n{}\n",
@@ -108,11 +106,14 @@ impl Server {
108 } 106 }
109 } 107 }
110 108
111 fn send_request<R>(&self, id: u64, params: R::Params) -> Value 109 pub fn send_request<R>(&self, params: R::Params) -> Value
112 where 110 where
113 R: Request, 111 R: Request,
114 R::Params: Serialize, 112 R::Params: Serialize,
115 { 113 {
114 let id = self.req_id.get();
115 self.req_id.set(id + 1);
116
116 let r = RawRequest::new::<R>(id, &params); 117 let r = RawRequest::new::<R>(id, &params);
117 self.send_request_(r) 118 self.send_request_(r)
118 } 119 }
@@ -178,7 +179,7 @@ impl Server {
178 179
179impl Drop for Server { 180impl Drop for Server {
180 fn drop(&mut self) { 181 fn drop(&mut self) {
181 self.send_request::<Shutdown>(666, ()); 182 self.send_request::<Shutdown>(());
182 let receiver = self.worker.take().unwrap().shutdown(); 183 let receiver = self.worker.take().unwrap().shutdown();
183 while let Some(msg) = recv_timeout(&receiver) { 184 while let Some(msg) = recv_timeout(&receiver) {
184 drop(msg); 185 drop(msg);
@@ -188,7 +189,7 @@ impl Drop for Server {
188} 189}
189 190
190fn recv_timeout(receiver: &Receiver<RawMessage>) -> Option<RawMessage> { 191fn recv_timeout(receiver: &Receiver<RawMessage>) -> Option<RawMessage> {
191 let timeout = Duration::from_secs(5); 192 let timeout = Duration::from_secs(50);
192 select! { 193 select! {
193 recv(receiver) -> msg => msg.ok(), 194 recv(receiver) -> msg => msg.ok(),
194 recv(after(timeout)) -> _ => panic!("timed out"), 195 recv(after(timeout)) -> _ => panic!("timed out"),