Skip to content

Commit 008e9d0

Browse files
authored
[ty] Add panic-by-default await methods to TestServer (#21451)
1 parent 8529d79 commit 008e9d0

File tree

10 files changed

+363
-268
lines changed

10 files changed

+363
-268
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ty_server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ salsa = { workspace = true }
3434
serde = { workspace = true }
3535
serde_json = { workspace = true }
3636
shellexpand = { workspace = true }
37+
smallvec = { workspace=true }
3738
thiserror = { workspace = true }
3839
tracing = { workspace = true }
3940
tracing-subscriber = { workspace = true, features = ["chrono"] }

crates/ty_server/tests/e2e/commands.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fn execute_command(
99
server: &mut TestServer,
1010
command: String,
1111
arguments: Vec<serde_json::Value>,
12-
) -> anyhow::Result<Option<serde_json::Value>> {
12+
) -> Option<serde_json::Value> {
1313
let params = ExecuteCommandParams {
1414
command,
1515
arguments,
@@ -32,10 +32,10 @@ return 42
3232
.with_workspace(workspace_root, None)?
3333
.with_file(foo, foo_content)?
3434
.enable_pull_diagnostics(false)
35-
.build()?
36-
.wait_until_workspaces_are_initialized()?;
35+
.build()
36+
.wait_until_workspaces_are_initialized();
3737

38-
let response = execute_command(&mut server, "ty.printDebugInformation".to_string(), vec![])?;
38+
let response = execute_command(&mut server, "ty.printDebugInformation".to_string(), vec![]);
3939
let response = response.expect("expect server response");
4040

4141
let response = response

crates/ty_server/tests/e2e/initialize.rs

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ use crate::TestServerBuilder;
99
#[test]
1010
fn empty_workspace_folders() -> Result<()> {
1111
let server = TestServerBuilder::new()?
12-
.build()?
13-
.wait_until_workspaces_are_initialized()?;
12+
.build()
13+
.wait_until_workspaces_are_initialized();
1414

1515
let initialization_result = server.initialization_result().unwrap();
1616

@@ -24,8 +24,8 @@ fn single_workspace_folder() -> Result<()> {
2424
let workspace_root = SystemPath::new("foo");
2525
let server = TestServerBuilder::new()?
2626
.with_workspace(workspace_root, None)?
27-
.build()?
28-
.wait_until_workspaces_are_initialized()?;
27+
.build()
28+
.wait_until_workspaces_are_initialized();
2929

3030
let initialization_result = server.initialization_result().unwrap();
3131

@@ -47,12 +47,12 @@ fn workspace_diagnostic_registration_without_configuration() -> Result<()> {
4747
.with_workspace(workspace_root, None)?
4848
.enable_workspace_configuration(false)
4949
.enable_diagnostic_dynamic_registration(true)
50-
.build()?;
50+
.build();
5151

5252
// No need to wait for workspaces to initialize as the client does not support workspace
5353
// configuration.
5454

55-
let (_, params) = server.await_request::<RegisterCapability>()?;
55+
let (_, params) = server.await_request::<RegisterCapability>();
5656
let [registration] = params.registrations.as_slice() else {
5757
panic!(
5858
"Expected a single registration, got: {:#?}",
@@ -90,12 +90,12 @@ fn open_files_diagnostic_registration_without_configuration() -> Result<()> {
9090
.with_workspace(workspace_root, None)?
9191
.enable_workspace_configuration(false)
9292
.enable_diagnostic_dynamic_registration(true)
93-
.build()?;
93+
.build();
9494

9595
// No need to wait for workspaces to initialize as the client does not support workspace
9696
// configuration.
9797

98-
let (_, params) = server.await_request::<RegisterCapability>()?;
98+
let (_, params) = server.await_request::<RegisterCapability>();
9999
let [registration] = params.registrations.as_slice() else {
100100
panic!(
101101
"Expected a single registration, got: {:#?}",
@@ -131,10 +131,10 @@ fn workspace_diagnostic_registration_via_initialization() -> Result<()> {
131131
)
132132
.with_workspace(workspace_root, None)?
133133
.enable_diagnostic_dynamic_registration(true)
134-
.build()?
135-
.wait_until_workspaces_are_initialized()?;
134+
.build()
135+
.wait_until_workspaces_are_initialized();
136136

137-
let (_, params) = server.await_request::<RegisterCapability>()?;
137+
let (_, params) = server.await_request::<RegisterCapability>();
138138
let [registration] = params.registrations.as_slice() else {
139139
panic!(
140140
"Expected a single registration, got: {:#?}",
@@ -170,10 +170,10 @@ fn open_files_diagnostic_registration_via_initialization() -> Result<()> {
170170
)
171171
.with_workspace(workspace_root, None)?
172172
.enable_diagnostic_dynamic_registration(true)
173-
.build()?
174-
.wait_until_workspaces_are_initialized()?;
173+
.build()
174+
.wait_until_workspaces_are_initialized();
175175

176-
let (_, params) = server.await_request::<RegisterCapability>()?;
176+
let (_, params) = server.await_request::<RegisterCapability>();
177177
let [registration] = params.registrations.as_slice() else {
178178
panic!(
179179
"Expected a single registration, got: {:#?}",
@@ -209,10 +209,10 @@ fn workspace_diagnostic_registration() -> Result<()> {
209209
Some(ClientOptions::default().with_diagnostic_mode(DiagnosticMode::Workspace)),
210210
)?
211211
.enable_diagnostic_dynamic_registration(true)
212-
.build()?
213-
.wait_until_workspaces_are_initialized()?;
212+
.build()
213+
.wait_until_workspaces_are_initialized();
214214

215-
let (_, params) = server.await_request::<RegisterCapability>()?;
215+
let (_, params) = server.await_request::<RegisterCapability>();
216216
let [registration] = params.registrations.as_slice() else {
217217
panic!(
218218
"Expected a single registration, got: {:#?}",
@@ -248,10 +248,10 @@ fn open_files_diagnostic_registration() -> Result<()> {
248248
Some(ClientOptions::default().with_diagnostic_mode(DiagnosticMode::OpenFilesOnly)),
249249
)?
250250
.enable_diagnostic_dynamic_registration(true)
251-
.build()?
252-
.wait_until_workspaces_are_initialized()?;
251+
.build()
252+
.wait_until_workspaces_are_initialized();
253253

254-
let (_, params) = server.await_request::<RegisterCapability>()?;
254+
let (_, params) = server.await_request::<RegisterCapability>();
255255
let [registration] = params.registrations.as_slice() else {
256256
panic!(
257257
"Expected a single registration, got: {:#?}",
@@ -291,11 +291,11 @@ def foo() -> str:
291291
.with_workspace(workspace_root, None)?
292292
.enable_pull_diagnostics(true)
293293
.with_file(foo, foo_content)?
294-
.build()?
295-
.wait_until_workspaces_are_initialized()?;
294+
.build()
295+
.wait_until_workspaces_are_initialized();
296296

297297
server.open_text_document(foo, &foo_content, 1);
298-
let hover = server.hover_request(foo, Position::new(0, 5))?;
298+
let hover = server.hover_request(foo, Position::new(0, 5));
299299

300300
assert!(
301301
hover.is_none(),
@@ -323,11 +323,11 @@ def foo() -> str:
323323
)?
324324
.enable_pull_diagnostics(true)
325325
.with_file(foo, foo_content)?
326-
.build()?
327-
.wait_until_workspaces_are_initialized()?;
326+
.build()
327+
.wait_until_workspaces_are_initialized();
328328

329329
server.open_text_document(foo, &foo_content, 1);
330-
let hover = server.hover_request(foo, Position::new(0, 5))?;
330+
let hover = server.hover_request(foo, Position::new(0, 5));
331331

332332
assert!(
333333
hover.is_none(),
@@ -364,18 +364,18 @@ def bar() -> str:
364364
.enable_pull_diagnostics(true)
365365
.with_file(foo, foo_content)?
366366
.with_file(bar, bar_content)?
367-
.build()?
368-
.wait_until_workspaces_are_initialized()?;
367+
.build()
368+
.wait_until_workspaces_are_initialized();
369369

370370
server.open_text_document(foo, &foo_content, 1);
371-
let hover_foo = server.hover_request(foo, Position::new(0, 5))?;
371+
let hover_foo = server.hover_request(foo, Position::new(0, 5));
372372
assert!(
373373
hover_foo.is_none(),
374374
"Expected no hover information for workspace A, got: {hover_foo:?}"
375375
);
376376

377377
server.open_text_document(bar, &bar_content, 1);
378-
let hover_bar = server.hover_request(bar, Position::new(0, 5))?;
378+
let hover_bar = server.hover_request(bar, Position::new(0, 5));
379379
assert!(
380380
hover_bar.is_some(),
381381
"Expected hover information for workspace B, got: {hover_bar:?}"
@@ -394,10 +394,10 @@ fn unknown_initialization_options() -> Result<()> {
394394
.with_initialization_options(
395395
ClientOptions::default().with_unknown([("bar".to_string(), Value::Null)].into()),
396396
)
397-
.build()?
398-
.wait_until_workspaces_are_initialized()?;
397+
.build()
398+
.wait_until_workspaces_are_initialized();
399399

400-
let show_message_params = server.await_notification::<ShowMessage>()?;
400+
let show_message_params = server.await_notification::<ShowMessage>();
401401

402402
insta::assert_json_snapshot!(show_message_params, @r#"
403403
{
@@ -419,10 +419,10 @@ fn unknown_options_in_workspace_configuration() -> Result<()> {
419419
workspace_root,
420420
Some(ClientOptions::default().with_unknown([("bar".to_string(), Value::Null)].into())),
421421
)?
422-
.build()?
423-
.wait_until_workspaces_are_initialized()?;
422+
.build()
423+
.wait_until_workspaces_are_initialized();
424424

425-
let show_message_params = server.await_notification::<ShowMessage>()?;
425+
let show_message_params = server.await_notification::<ShowMessage>();
426426

427427
insta::assert_json_snapshot!(show_message_params, @r#"
428428
{
@@ -443,10 +443,10 @@ fn register_rename_capability_when_enabled() -> Result<()> {
443443
.with_workspace(workspace_root, None)?
444444
.with_initialization_options(ClientOptions::default().with_experimental_rename(true))
445445
.enable_rename_dynamic_registration(true)
446-
.build()?
447-
.wait_until_workspaces_are_initialized()?;
446+
.build()
447+
.wait_until_workspaces_are_initialized();
448448

449-
let (_, params) = server.await_request::<RegisterCapability>()?;
449+
let (_, params) = server.await_request::<RegisterCapability>();
450450
let [registration] = params.registrations.as_slice() else {
451451
panic!(
452452
"Expected a single registration, got: {:#?}",
@@ -477,8 +477,8 @@ fn rename_available_without_dynamic_registration() -> Result<()> {
477477
.with_workspace(workspace_root, None)?
478478
.with_initialization_options(ClientOptions::default().with_experimental_rename(true))
479479
.enable_rename_dynamic_registration(false)
480-
.build()?
481-
.wait_until_workspaces_are_initialized()?;
480+
.build()
481+
.wait_until_workspaces_are_initialized();
482482

483483
let initialization_result = server.initialization_result().unwrap();
484484
insta::assert_json_snapshot!(initialization_result.capabilities.rename_provider, @r#"
@@ -500,8 +500,8 @@ fn not_register_rename_capability_when_disabled() -> Result<()> {
500500
.with_workspace(workspace_root, None)?
501501
.with_initialization_options(ClientOptions::default().with_experimental_rename(false))
502502
.enable_rename_dynamic_registration(true)
503-
.build()?
504-
.wait_until_workspaces_are_initialized()?;
503+
.build()
504+
.wait_until_workspaces_are_initialized();
505505

506506
// The `Drop` implementation will make sure that the client did not receive any registration
507507
// request.
@@ -525,10 +525,10 @@ fn register_multiple_capabilities() -> Result<()> {
525525
)
526526
.enable_rename_dynamic_registration(true)
527527
.enable_diagnostic_dynamic_registration(true)
528-
.build()?
529-
.wait_until_workspaces_are_initialized()?;
528+
.build()
529+
.wait_until_workspaces_are_initialized();
530530

531-
let (_, params) = server.await_request::<RegisterCapability>()?;
531+
let (_, params) = server.await_request::<RegisterCapability>();
532532
let registrations = params.registrations;
533533

534534
assert_eq!(registrations.len(), 2);

crates/ty_server/tests/e2e/inlay_hints.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ y = foo(1)
2525
.with_workspace(workspace_root, None)?
2626
.with_file(foo, foo_content)?
2727
.enable_inlay_hints(true)
28-
.build()?
29-
.wait_until_workspaces_are_initialized()?;
28+
.build()
29+
.wait_until_workspaces_are_initialized();
3030

3131
server.open_text_document(foo, &foo_content, 1);
32-
let _ = server.await_notification::<PublishDiagnostics>()?;
32+
let _ = server.await_notification::<PublishDiagnostics>();
3333

3434
let hints = server
35-
.inlay_hints_request(foo, Range::new(Position::new(0, 0), Position::new(6, 0)))?
35+
.inlay_hints_request(foo, Range::new(Position::new(0, 0), Position::new(6, 0)))
3636
.unwrap();
3737

3838
insta::assert_json_snapshot!(hints, @r#"
@@ -87,14 +87,14 @@ fn variable_inlay_hints_disabled() -> Result<()> {
8787
.with_workspace(workspace_root, None)?
8888
.with_file(foo, foo_content)?
8989
.enable_inlay_hints(true)
90-
.build()?
91-
.wait_until_workspaces_are_initialized()?;
90+
.build()
91+
.wait_until_workspaces_are_initialized();
9292

9393
server.open_text_document(foo, &foo_content, 1);
94-
let _ = server.await_notification::<PublishDiagnostics>()?;
94+
let _ = server.await_notification::<PublishDiagnostics>();
9595

9696
let hints = server
97-
.inlay_hints_request(foo, Range::new(Position::new(0, 0), Position::new(0, 5)))?
97+
.inlay_hints_request(foo, Range::new(Position::new(0, 0), Position::new(0, 5)))
9898
.unwrap();
9999

100100
assert!(

0 commit comments

Comments
 (0)