Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

Commit c1d705d

Browse files
committed
Ensure we always wait with a timeout
1 parent a4a1fb7 commit c1d705d

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

tests/client.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ fn client_changing_workspace_lib_retains_diagnostics() {
222222

223223
let lib = rls.future_diagnostics("library/src/lib.rs");
224224
let bin = rls.future_diagnostics("binary/src/main.rs");
225-
let (lib, bin) = rls.runtime().block_on(lib.join(bin)).unwrap();
225+
let (lib, bin) = rls.block_on(lib.join(bin)).unwrap();
226226

227227
assert!(lib.diagnostics.iter().any(|m| m.message.contains("unused variable: `test_val`")));
228228
assert!(lib.diagnostics.iter().any(|m| m.message.contains("unused variable: `unused`")));
@@ -251,7 +251,7 @@ fn client_changing_workspace_lib_retains_diagnostics() {
251251

252252
let lib = rls.future_diagnostics("library/src/lib.rs");
253253
let bin = rls.future_diagnostics("binary/src/main.rs");
254-
let (lib, bin) = rls.runtime().block_on(lib.join(bin)).unwrap();
254+
let (lib, bin) = rls.block_on(lib.join(bin)).unwrap();
255255

256256
// lib unit tests have compile errors
257257
assert!(lib.diagnostics.iter().any(|m| m.message.contains("unused variable: `unused`")));
@@ -282,7 +282,7 @@ fn client_changing_workspace_lib_retains_diagnostics() {
282282

283283
let lib = rls.future_diagnostics("library/src/lib.rs");
284284
let bin = rls.future_diagnostics("binary/src/main.rs");
285-
let (lib, bin) = rls.runtime().block_on(lib.join(bin)).unwrap();
285+
let (lib, bin) = rls.block_on(lib.join(bin)).unwrap();
286286

287287
assert!(lib.diagnostics.iter().any(|m| m.message.contains("unused variable: `test_val`")));
288288
assert!(lib.diagnostics.iter().any(|m| m.message.contains("unused variable: `unused`")));
@@ -339,7 +339,7 @@ fn client_implicit_workspace_pick_up_lib_changes() {
339339
rls.request::<Initialize>(0, initialize_params(root_path));
340340

341341
let bin = rls.future_diagnostics("src/main.rs");
342-
let bin = rls.runtime().block_on(bin).unwrap();
342+
let bin = rls.block_on(bin).unwrap();
343343
assert!(bin.diagnostics[0].message.contains("unused variable: `val`"));
344344

345345
rls.notify::<DidChangeTextDocument>(DidChangeTextDocumentParams {
@@ -365,7 +365,7 @@ fn client_implicit_workspace_pick_up_lib_changes() {
365365

366366
// bin depending on lib picks up type mismatch
367367
let bin = rls.future_diagnostics("src/main.rs");
368-
let bin = rls.runtime().block_on(bin).unwrap();
368+
let bin = rls.block_on(bin).unwrap();
369369
assert!(bin.diagnostics[0].message.contains("cannot find function `foo`"));
370370

371371
rls.notify::<DidChangeTextDocument>(DidChangeTextDocumentParams {
@@ -390,7 +390,7 @@ fn client_implicit_workspace_pick_up_lib_changes() {
390390
});
391391

392392
let bin = rls.future_diagnostics("src/main.rs");
393-
let bin = rls.runtime().block_on(bin).unwrap();
393+
let bin = rls.block_on(bin).unwrap();
394394
assert!(bin.diagnostics[0].message.contains("unused variable: `val`"));
395395

396396
rls.shutdown();

tests/support/client.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,11 @@ impl RlsHandle {
135135
self.messages.borrow()
136136
}
137137

138-
pub fn runtime(&mut self) -> &mut Runtime {
139-
&mut self.runtime
138+
/// Block on returned, associated future with a timeout.
139+
pub fn block_on<F: Future>(&mut self, f: F) -> Result<F::Item, tokio_timer::timeout::Error<F::Error>> {
140+
let future_with_timeout = f.timeout(rls_timeout());
141+
142+
self.runtime.block_on(future_with_timeout)
140143
}
141144

142145
/// Send a request to the RLS and block until we receive the message.
@@ -182,7 +185,7 @@ impl RlsHandle {
182185

183186
let fut = writer.send(msg);
184187

185-
self.writer = Some(self.runtime.block_on(fut).unwrap());
188+
self.writer = Some(self.block_on(fut).unwrap());
186189
}
187190

188191
/// Enqueues a channel that is notified and consumed when a given predicate
@@ -214,7 +217,8 @@ impl RlsHandle {
214217
/// Blocks until a message, for which predicate `f` returns true, is received.
215218
pub fn wait_for_message(&mut self, f: impl Fn(&Value) -> bool + 'static) -> Value {
216219
let fut = self.future_msg(f);
217-
self.runtime.block_on(fut).unwrap()
220+
221+
self.block_on(fut).unwrap()
218222
}
219223

220224
/// Blocks until the processing (building + indexing) is done by the RLS.

0 commit comments

Comments
 (0)