Skip to content

Commit 91bedef

Browse files
bors[bot]matklad
andauthored
Merge #5883
5883: Cleanup heavy tests r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents 6141e27 + c6dffe4 commit 91bedef

File tree

2 files changed

+42
-37
lines changed

2 files changed

+42
-37
lines changed

crates/rust-analyzer/tests/rust-analyzer/main.rs

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ fn completes_items_from_standard_library() {
3939
return;
4040
}
4141

42-
let project_start = Instant::now();
4342
let server = Project::with_fixture(
4443
r#"
4544
//- /Cargo.toml
@@ -52,10 +51,9 @@ use std::collections::Spam;
5251
"#,
5352
)
5453
.with_sysroot(true)
55-
.server();
56-
server.wait_until_workspace_is_loaded();
57-
eprintln!("loading took {:?}", project_start.elapsed());
58-
let completion_start = Instant::now();
54+
.server()
55+
.wait_until_workspace_is_loaded();
56+
5957
let res = server.send_request::<Completion>(CompletionParams {
6058
text_document_position: TextDocumentPositionParams::new(
6159
server.doc_id("src/lib.rs"),
@@ -66,7 +64,6 @@ use std::collections::Spam;
6664
work_done_progress_params: WorkDoneProgressParams::default(),
6765
});
6866
assert!(res.to_string().contains("HashMap"));
69-
eprintln!("completion took {:?}", completion_start.elapsed());
7067
}
7168

7269
#[test]
@@ -75,7 +72,8 @@ fn test_runnables_project() {
7572
return;
7673
}
7774

78-
let code = r#"
75+
let server = Project::with_fixture(
76+
r#"
7977
//- /foo/Cargo.toml
8078
[package]
8179
name = "foo"
@@ -95,11 +93,13 @@ version = "0.0.0"
9593
9694
//- /bar/src/main.rs
9795
fn main() {}
98-
"#;
99-
100-
let server = Project::with_fixture(code).root("foo").root("bar").server();
96+
"#,
97+
)
98+
.root("foo")
99+
.root("bar")
100+
.server()
101+
.wait_until_workspace_is_loaded();
101102

102-
server.wait_until_workspace_is_loaded();
103103
server.request::<Runnables>(
104104
RunnablesParams { text_document: server.doc_id("foo/tests/spam.rs"), position: None },
105105
json!([
@@ -166,8 +166,8 @@ fn main() {
166166
167167
pub use std::collections::HashMap;
168168
"#,
169-
);
170-
server.wait_until_workspace_is_loaded();
169+
)
170+
.wait_until_workspace_is_loaded();
171171

172172
server.request::<Formatting>(
173173
DocumentFormattingParams {
@@ -224,8 +224,8 @@ fn main() {
224224
225225
pub use std::collections::HashMap;
226226
"#,
227-
);
228-
server.wait_until_workspace_is_loaded();
227+
)
228+
.wait_until_workspace_is_loaded();
229229

230230
server.request::<Formatting>(
231231
DocumentFormattingParams {
@@ -277,14 +277,14 @@ mod bar;
277277
278278
fn main() {}
279279
"#,
280-
);
281-
server.wait_until_workspace_is_loaded();
282-
let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None };
280+
)
281+
.wait_until_workspace_is_loaded();
282+
283283
server.request::<CodeActionRequest>(
284284
CodeActionParams {
285285
text_document: server.doc_id("src/lib.rs"),
286286
range: Range::new(Position::new(0, 4), Position::new(0, 7)),
287-
context: empty_context(),
287+
context: CodeActionContext::default(),
288288
partial_result_params: PartialResultParams::default(),
289289
work_done_progress_params: WorkDoneProgressParams::default(),
290290
},
@@ -307,7 +307,7 @@ fn main() {}
307307
CodeActionParams {
308308
text_document: server.doc_id("src/lib.rs"),
309309
range: Range::new(Position::new(2, 4), Position::new(2, 7)),
310-
context: empty_context(),
310+
context: CodeActionContext::default(),
311311
partial_result_params: PartialResultParams::default(),
312312
work_done_progress_params: WorkDoneProgressParams::default(),
313313
},
@@ -348,15 +348,14 @@ fn main() {{}}
348348
PROJECT = project.to_string(),
349349
);
350350

351-
let server = Project::with_fixture(&code).tmp_dir(tmp_dir).server();
351+
let server =
352+
Project::with_fixture(&code).tmp_dir(tmp_dir).server().wait_until_workspace_is_loaded();
352353

353-
server.wait_until_workspace_is_loaded();
354-
let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None };
355354
server.request::<CodeActionRequest>(
356355
CodeActionParams {
357356
text_document: server.doc_id("src/lib.rs"),
358357
range: Range::new(Position::new(0, 4), Position::new(0, 7)),
359-
context: empty_context(),
358+
context: CodeActionContext::default(),
360359
partial_result_params: PartialResultParams::default(),
361360
work_done_progress_params: WorkDoneProgressParams::default(),
362361
},
@@ -379,7 +378,7 @@ fn main() {{}}
379378
CodeActionParams {
380379
text_document: server.doc_id("src/lib.rs"),
381380
range: Range::new(Position::new(2, 4), Position::new(2, 7)),
382-
context: empty_context(),
381+
context: CodeActionContext::default(),
383382
partial_result_params: PartialResultParams::default(),
384383
work_done_progress_params: WorkDoneProgressParams::default(),
385384
},
@@ -412,9 +411,9 @@ fn main() {{}}
412411
librs, libs
413412
))
414413
.with_sysroot(true)
415-
.server();
414+
.server()
415+
.wait_until_workspace_is_loaded();
416416

417-
server.wait_until_workspace_is_loaded();
418417
for i in 0..10 {
419418
server.notification::<DidOpenTextDocument>(DidOpenTextDocumentParams {
420419
text_document: TextDocumentItem {
@@ -425,7 +424,7 @@ fn main() {{}}
425424
},
426425
});
427426
}
428-
let start = std::time::Instant::now();
427+
let start = Instant::now();
429428
server.request::<OnEnter>(
430429
TextDocumentPositionParams {
431430
text_document: server.doc_id("src/m0.rs"),
@@ -461,8 +460,8 @@ version = \"0.0.0\"
461460
/// Some Docs\r\nfn main() {}
462461
",
463462
)
464-
.server();
465-
server.wait_until_workspace_is_loaded();
463+
.server()
464+
.wait_until_workspace_is_loaded();
466465

467466
server.request::<OnEnter>(
468467
TextDocumentPositionParams {
@@ -536,8 +535,9 @@ fn main() {
536535
.with_config(|config| {
537536
config.cargo.load_out_dirs_from_check = true;
538537
})
539-
.server();
540-
server.wait_until_workspace_is_loaded();
538+
.server()
539+
.wait_until_workspace_is_loaded();
540+
541541
let res = server.send_request::<HoverRequest>(HoverParams {
542542
text_document_position_params: TextDocumentPositionParams::new(
543543
server.doc_id("src/main.rs"),
@@ -546,6 +546,7 @@ fn main() {
546546
work_done_progress_params: Default::default(),
547547
});
548548
assert!(res.to_string().contains("&str"));
549+
549550
let res = server.send_request::<HoverRequest>(HoverParams {
550551
text_document_position_params: TextDocumentPositionParams::new(
551552
server.doc_id("src/main.rs"),
@@ -554,6 +555,7 @@ fn main() {
554555
work_done_progress_params: Default::default(),
555556
});
556557
assert!(res.to_string().contains("&str"));
558+
557559
server.request::<GotoTypeDefinition>(
558560
GotoDefinitionParams {
559561
text_document_position_params: TextDocumentPositionParams::new(
@@ -579,6 +581,7 @@ fn main() {
579581
"targetUri": "file:///[..]src/main.rs"
580582
}]),
581583
);
584+
582585
server.request::<GotoTypeDefinition>(
583586
GotoDefinitionParams {
584587
text_document_position_params: TextDocumentPositionParams::new(
@@ -611,6 +614,7 @@ fn resolve_proc_macro() {
611614
if skip_slow_tests() {
612615
return;
613616
}
617+
614618
let server = Project::with_fixture(
615619
r###"
616620
//- /foo/Cargo.toml
@@ -679,16 +683,16 @@ pub fn foo(_input: TokenStream) -> TokenStream {
679683
})
680684
.root("foo")
681685
.root("bar")
682-
.server();
683-
server.wait_until_workspace_is_loaded();
686+
.server()
687+
.wait_until_workspace_is_loaded();
688+
684689
let res = server.send_request::<HoverRequest>(HoverParams {
685690
text_document_position_params: TextDocumentPositionParams::new(
686691
server.doc_id("foo/src/main.rs"),
687692
Position::new(7, 9),
688693
),
689694
work_done_progress_params: Default::default(),
690695
});
691-
692696
let value = res.get("contents").unwrap().get("value").unwrap().to_string();
693697
assert_eq!(value, r#""\n```rust\nfoo::Bar\n```\n\n```rust\nfn bar()\n```""#)
694698
}

crates/rust-analyzer/tests/rust-analyzer/support.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ impl Server {
202202
}
203203
panic!("no response");
204204
}
205-
pub fn wait_until_workspace_is_loaded(&self) {
205+
pub fn wait_until_workspace_is_loaded(self) -> Server {
206206
self.wait_for_message_cond(1, &|msg: &Message| match msg {
207207
Message::Notification(n) if n.method == "$/progress" => {
208208
match n.clone().extract::<ProgressParams>("$/progress").unwrap() {
@@ -214,7 +214,8 @@ impl Server {
214214
}
215215
}
216216
_ => false,
217-
})
217+
});
218+
self
218219
}
219220
fn wait_for_message_cond(&self, n: usize, cond: &dyn Fn(&Message) -> bool) {
220221
let mut total = 0;

0 commit comments

Comments
 (0)