aboutsummaryrefslogtreecommitdiff
path: root/crates/server/tests/heavy_tests/support.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/server/tests/heavy_tests/support.rs')
-rw-r--r--crates/server/tests/heavy_tests/support.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/server/tests/heavy_tests/support.rs b/crates/server/tests/heavy_tests/support.rs
index 99a784e8d..731c2f51c 100644
--- a/crates/server/tests/heavy_tests/support.rs
+++ b/crates/server/tests/heavy_tests/support.rs
@@ -155,6 +155,9 @@ impl Server {
155 panic!("no response"); 155 panic!("no response");
156 } 156 }
157 pub fn wait_for_feedback(&self, feedback: &str) { 157 pub fn wait_for_feedback(&self, feedback: &str) {
158 self.wait_for_feedback_n(feedback, 1)
159 }
160 pub fn wait_for_feedback_n(&self, feedback: &str, n: usize) {
158 let f = |msg: &RawMessage| match msg { 161 let f = |msg: &RawMessage| match msg {
159 RawMessage::Notification(n) if n.method == "internalFeedback" => { 162 RawMessage::Notification(n) if n.method == "internalFeedback" => {
160 return n.clone().cast::<req::InternalFeedback>() 163 return n.clone().cast::<req::InternalFeedback>()
@@ -162,18 +165,18 @@ impl Server {
162 } 165 }
163 _ => false, 166 _ => false,
164 }; 167 };
165 168 let mut total = 0;
166 for msg in self.messages.borrow().iter() { 169 for msg in self.messages.borrow().iter() {
167 if f(msg) { 170 if f(msg) {
168 return; 171 total += 1
169 } 172 }
170 } 173 }
171 while let Some(msg) = self.recv() { 174 while total < n {
175 let msg = self.recv().expect("no response");
172 if f(&msg) { 176 if f(&msg) {
173 return; 177 total += 1;
174 } 178 }
175 } 179 }
176 panic!("no response")
177 } 180 }
178 fn recv(&self) -> Option<RawMessage> { 181 fn recv(&self) -> Option<RawMessage> {
179 let timeout = Duration::from_secs(5); 182 let timeout = Duration::from_secs(5);